كيفية إعداد خادم OpenConnect VPN

لديك شبكة افتراضية خاصة (VPN) ضرورية في هذا العصر التكنولوجي. أصبحت الـ VPNs أمرًا حاسمًا تدريجيًا للاستخدام الشخصي وخاصة للشركات والمؤسسات. وإذا كنت لا تزال تتردد في اختيار الحل الذي تراهجيدًا لـ VPN، فلماذا لا تفكر في OpenConnect VPN؟

OpenConnect VPN هو حلاً مجانيًا للـ VPN بأداء وميزات تجارية. وفي هذا البرنامج التعليمي، ستتعلم كيفية إعداد والاتصال بخادم OpenConnect VPN (ocserv).

استمر في القراءة وابق بعيدًا عن الجهات الشريرة عن شبكتك!

المتطلبات المسبقة

يشتمل هذا البرنامج التعليمي على عروض توضيحية عملية. لمتابعة، تأكد من وجود ما يلي:

  • A Linux server running Debian- This tutorial uses a Debian 11 Bullseye with hostname ocserv-debian.
  • مستخدم إداري أو مستخدم غير جذري مع صلاحيات sudo/root.
  • A domain name pointed to your Linux server IP address – This tutorial uses a domain name vpn.atadomain.io.
  • A client machine like Windows 10 or Linux Desktop – This tutorial uses a Windows 10 machine.

تثبيت خادم OpenConnect VPN

خادم OpenConnect VPN هو خادم VPN مفتوح المصدر قائم على SSL لنظام Linux، متوفر على معظم توزيعات Linux، مثل Debian، Ubuntu، RHEL/CentOS، و Fedora.

يدعم خادم OpenConnect VPN معظم العملاء من سطح المكتب/الكمبيوتر إلى الهواتف المحمولة (Android و iOS). بالمثل، يدعم خادم OpenConnect VPN العديد من خوادم المصادقة، مثل Radius، OpenID، Kerberos، و Smart Card.

ولكن قبل الاستفادة من هذه الميزات، يجب عليك أولاً تثبيت خادم OpenConnect VPN، على النحو التالي:

1. قم بتسجيل الدخول إلى خادمك عبر SSH وقم بتشغيل الأمر التالي apt update لتحديث وتحديث فهرس الحزم. يتأكد هذا الأمر من أن لديك أحدث معلومات حول الحزمة.

sudo apt update
Updating the package repository

2. بعد ذلك، قم بتشغيل الأمر التالي apt install لتثبيت حزمة ocserv.

sudo apt install ocserv -y

بمجرد اكتمال التثبيت، سيكون الخدمة الجديدة في systemd تحت اسم ocserv قائمة و

Installing the OpenConnect VPN Server

3. الآن، قم بتشغيل الأوامر التالية باستخدام systemctl للتحقق من أن خدمة ocserv قيد التشغيل.

# التحقق من تمكين خدمة ocserv
sudo systemctl is-enabled ocserv
# التحقق من تشغيل خدمة ocserv
sudo systemctl status ocserv

كما يمكن رؤية من الناتج، فإن حالة خدمة ocserv هي ممكنة وتعمل.

Verifying the ocserv service is enabled and running

إنشاء شهادات SSL/TLS

بعد تثبيت خادم OpenConnect VPN، الخطوة التالية هي التأكد من أنه يمكنك الاتصال بشكل آمن بخادم OpenConnect VPN. كيف؟ الخطوة الأولى هي إنشاء شهادات SSL/TLS عبر Certbot و LetsEncrypt.

ولكن قبل إصدار الشهادات، تأكد من وجود عنوان البريد الإلكتروني للتسجيل في Let’s Encrypt، وأن اسم النطاق موجه إلى عنوان IP لخادم Debian.

لتوليد شهادات SSL/TLS:

1. قم بتشغيل الأمر أدناه لتثبيت certbot على خادم Linux الخاص بك.

sudo apt install certbot -y
Installing Certbot

2. بعد ذلك، قم بتشغيل أمر certbot أدناه لتوليد شهادات SSL/TLS. تأكد من تغيير عنوان البريد الإلكتروني ([email protected]) واسم النطاق (vpn.atadomain.io) وفقًا لذلك.

sudo certbot certonly --standalone --preferred-challenges http --agree-tos --no-eff --email [email protected] -d vpn.atadomain.io
Generating SSL/TLS certificates from LetsEncrypt

3. في الختام، قم بتشغيل الأمر التالي للتحقق من وجود شهادات SSL/TLS المولدة في دليل النطاق الخاص بك.

ls /etc/letsencrypt/live/vpn.atadomain.io

إذا نجحت العملية، سترى المفاتيح العامة (fullchain.pem) والخاصة (privkey.pem) كما هو موضح أدناه.

Verifying the SSL/TLS certificates exist

تكوين خادم OpenConnect VPN

حتى مع وجود شهادات SSL/TSL في تصرفك، ستظل هناك ما لم تقم بتكوين خادم OpenConnect VPN. ستقوم بتعديل تكوين خادم OpenConnect VPN الافتراضي (/etc/ocserv/ocserv.conf) على النحو التالي:

  • قم بتغيير طريقة المصادقة الافتراضية.
  • قم بتعطيل UDP على خادم OpenConnect VPN.
  • قم بتغيير شهادات SSL/TLS الافتراضية.
  • إعداد اسم النطاق وشبكة داخلية أو عنوان IP للعملاء.

لتكوين خادم OpenConnect VPN، اتبع الخطوات التالية:

1. قم أولاً بتشغيل الأمر cp أدناه لنسخ تكوين خادم OpenConnect VPN الافتراضي (ocserv.conf) إلى ocserv.conf.orig المخزن في دليل /etc/ocserv.

sudo cp /etc/ocserv/ocserv.conf /etc/ocserv/ocserv.conf.orig

2. بعد ذلك، افتح تكوين خادم OpenConnect VPN (/etc/ocserv/ocserv.conf) باستخدام محررك المفضل.

3. قم بتغيير قيمة المعلمة auth إلى plain[passwd=/etc/ocserv/ocpasswd]، كما هو موضح أدناه. وبذلك، ستستبدل المصادقة الافتراضية بملف كلمات المرور.

auth = "plain[passwd=/etc/ocserv/ocpasswd]"
Changing the default authentication to a password file

4. الآن، ضع علامة # أمام معلمة udp-port لتعطيل الاتصالات UDP الافتراضية.

ستستخدم OpenConnect VPN بوضع TCP فقط، والذي يمكنك زيادة سرعته من خلال معلمات النواة.

tcp-port = 443
#udp-port = 443
Disabling the UDP support

5. استبدل مسار ملف الشهادة في معلمة server-cert بالمفتاح العام ومعلمة server-key بالمفتاح الخاص.

server-cert = /etc/letsencrypt/live/vpn.atadomain.io/fullchain.pem
server-key = /etc/letsencrypt/live/vpn.atadomain.io/privkey.pem
Changing the SSL/TLS certificate files path

6. غيِّر قيمة المعلمة try-mtu-discovery إلى true لتمكين اكتشاف MTU. يزيد ذلك من سرعة وأداء خادم OpenConnect VPN.

try-mtu-discovery = true
Enabling MTU discovery

7. بعد ذلك، أدخل اسم المجال لخادم OpenConnect VPN إلى معلمة default-domain، وقم بتغيير عنوان IP الداخلي الافتراضي في المعلمة ipv4-network.

في هذا المثال، سيستخدم عملاء VPN الشبكة الداخلية 10.11.0.0/24.

default-domain = vpn.atadomain.io
ipv4-network = 10.11.0.0
Setting up the default domain and internal network for VPN clients

8. قم بتعليق معلمات الطريق الافتراضية route عن طريق إضافة رمز # في بداية كل سطر لتعطيل بوابة الطريق الافتراضية. بعد الانتهاء، احفظ الملف واخرج من المحرر.


#route = 10.0.0.0/8
#route = 172.16.0.0/12
#route = 192.168.0.0/16
#route = fd00::/8
#route = default
Disabling the default route gateway

9. الآن، قم بتشغيل الأوامر التالية لـ إعادة تشغيل خدمة ocserv، وتطبيق التغييرات، وعرض جميع المنافذ المفتوحة (ss) على نظامك.


# إعادة تشغيل خدمة ocserv وتطبيق التغييرات
sudo systemctl restart ocserv

# عرض جميع المنافذ المفتوحة
ss -tulpn | grep ocserv

إذا كان خادم OpenConnect VPN قيد التشغيل، سترى المنفذ 443 في حالة الاستماع والمستخدمة من خدمة ocserv، كما هو موضح أدناه.

Checking the ocserv port

إضافة مستخدمين إلى خادم OpenConnect VPN

بعد تكوين خادم OpenConnect VPN، تحتاج إلى وسيلة للاتصال به. كيف؟ عن طريق إنشاء وإضافة مستخدم VPN إلى خادم OpenConnect VPN.

لإضافة مستخدم إلى خادم OpenConnect VPN، ستقوم بإنشاء مستخدم VPN وإنشاء ملف كلمة مرور عبر أداة ocpasswd كما يلي:

قم بتشغيل الأمر ocpasswd أدناه لإنشاء مستخدم جديد. عند الطلب، أدخل كلمة مرور جديدة للمستخدم وكررها. اختيار هذا البرنامج التعليمي لاسم المستخدم هو atauser، ولكن يمكنك تقديم اسمك الخاص.

بمجرد إنشاء المستخدم، يتم أيضًا إنشاء ملف كلمة المرور (/etc/ocserv/ocpasswd).

sudo ocpasswd -c /etc/ocserv/ocpasswd atauser
Creating an OpenConnect user

الآن، قم بتشغيل الأمر cat التالي لفحص تفاصيل ملف كلمة المرور (/etc/ocserv/ocpasswd).

cat /etc/ocserv/ocpasswd
Checking the password file’s details

إضافة قواعد جدار الحماية UFW لفتح المنافذ الحاسمة لـ OpenConnect

على نظام Debian، الجدار الافتراضي هو IPTables، والذي يتطلب فهمًا عميقًا للشبكات لإعداده. لماذا لا تبسط العملية؟ في هذا البرنامج التعليمي، ستقوم بتثبيت وتكوين UFW كجدار حماية افتراضي.

1. قم بتشغيل الأمر أدناه لـ تثبيت UFW مع قبول جميع الطلبات تلقائيًا (-y)

sudo apt install ufw -y
Installing UFW

2. بمجرد تثبيت UFW، قم بتشغيل أوامر ufw التالية لفتح المنافذ الحاسمة لخادم OpenConnect VPN للعمل بشكل صحيح.

# أضف خدمة OpenSSH التي تعمل على المنفذ 22.
sudo ufw allow OpenSSH
# أضف المنفذ 80 لتجديد شهادات LetsEncrypt، 
# والمنفذ 443 لاستخدامه من قبل خادم OpenConnect VPN.
sudo ufw allow 80,443/tcp
# قم بتشغيل وتمكين UFW.
sudo ufw enable

عند الطلب، أدخل Y واضغط على Enter للمتابعة مع العملية، كما هو موضح أدناه.

Adding firewall rules to open ports

3. في النهاية، قم بتشغيل الأمر التالي للتحقق من حالة UFW والتأكد من تشغيل UFW.

sudo ufw status

المخرجات أدناه تظهر حالة UFW النشطة، وجميع القواعد الجدار الناري المضافة.

Checking the UFW status and listing all firewall rules

تمكين توجيه المنافذ

مع تشغيل خادم VPN، يجب عليك توجيه حركة المرور من العالم الخارجي إلى خادمك عن طريق تمكين توجيه المنافذ. ستسمح بتوجيه المنافذ على خادم Debian الخاص بك عبر معلمات النواة.

لتمكين توجيه المنافذ، اتبع هذه الخطوات:

قم بتشغيل الأمر التالي، الذي لا ينتج مخرجات إلى الطرفية، لكنه ينشئ ملفًا جديدًا يسمى /etc/sysctl.d/60-ocserv.conf. يحتوي هذا الملف على معلمات النواة لتمكين توجيه المنافذ على نظامك.

cat > /etc/sysctl.d/60-ocserv.conf << EOF
net.ipv4.ip_forward = 1
net.core.default_qdisc=fq
net.ipv4.tcp_congestion_control=bbr
EOF

الآن، قم بتشغيل الأمر sysctl أدناه لتطبيق معلمات النواة الجديدة وتمكين توجيه المنافذ.

sudo sysctl -p /etc/sysctl.d/60-ocserv.conf
Enabling port forwarding

إعداد NAT مع UFW

تمكين توجيه المنافذ هو واحد فقط من أولى الخطوات التي يجب اتخاذها. في هذا الوقت، يجب عليك التأكد من أن عملاء VPN يمكنهم الاتصال بالإنترنت أو الشبكات المحددة عبر خادم OpenConnect VPN. كيف؟ عن طريق إعداد NAT عبر UFW.

لإعداد NAT مع UFW لخادم OpenConnect VPN:

1. قم بتشغيل الأمر التالي لفحص قائمة الواجهات على نظامك.

ip a

في هذا المثال، ستكون الواجهة eth1 بوابة NAT لعملاء VPN.

Checking available interfaces

2. بعد ذلك، افتح تكوين UFW (/etc/ufw/before.rules) باستخدام محررك المفضل، وأضف الأسطر التالية قبل *filter الخيار. ستقوم هذه التكوينات بتحويل عملاء VPN (حدد واجهة الإرسال) أو الشبكة الداخلية إلى واجهة eth1.

تأكد من تغيير الشبكة الفرعية (10.11.0.0/24) بشبكات عملاء VPN والواجهة (eth1) بواجهة الشبكة الخاصة بك.

# NAT لخادم OpenConnect VPN
# مع شبكة العملاء 10.11.0.0/24
# إلى واجهة eth1
*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.11.0.0/24 -o eth1 -j MASQUERADE
COMMIT
Configuring NAT via UFW

3. أضف الأسطر التالية أدناه في قسم ok icmp code for FORWARD من خيارات ufw-before-forward، احفظ الملف، واخرج من المحرر.

تمكين إمكانية إعادة توجيه (المصدر والوجهة) لشبكة عملاء VPN.

# السماح بإعادة توجيه شبكة العملاء VPN
-A ufw-before-forward -s 10.11.0.0/24 -j ACCEPT
-A ufw-before-forward -d 10.11.0.0/24 -j ACCEPT
Enabling forwarding for VPN client network

4. بمجرد الحفظ، قم بتشغيل الأمر التالي لإعادة تحميل قواعد UFW وإعادة تشغيل خدمة UFW. يضمن ذلك تطبيق تكوين NAT على النظام.

sudo ufw reload
sudo systemctl restart ufw

5. أخيراً، قم بتشغيل الأمر التالي لفحص حالة NAT على UFW حيث أن الجزء الخلفي لـ UFW هو IPTables.

sudo iptables -t nat -L POSTROUTING

عند نجاح العملية، ستتلقى إخراجًا مشابهًا للمثال أدناه.

الاتصال بخادم OpenConnect VPN عبر OpenConnect-GUI

بعد اتباع التعليمات، يجب أن يكون لديك الآن خادم OpenConnect VPN الذي يعمل بشكل كامل. ولكن بعد كل الجهد، حان لحظة الحقيقة.

قد يكون خادم OpenConnect VPN قيد التشغيل، ولكن هناك طريقة وحيدة للتحقق — الاتصال بخادم OpenConnect VPN.

للاتصال بخادم OpenConnect VPN، يجب عليك تثبيت تطبيق OpenConnect-GUI:

1. افتح متصفح الويب المفضل لديك وقم بزيارة صفحة GitHub لـ OpenConnect-GUI.

2. بعد ذلك، قم بتنزيل وتثبيت تطبيق OpenConnect VPN لنظام التشغيل Windows.

Downloading the OpenConnect VPN application for Windows

3. افتح عميل OpenConnect-GUI VPN، وانقر فوق قائمة FileProfilesNew profile (advanced) (أو اضغط على Ctrl+Shift+N). يظهر نافذة صغيرة حيث يمكنك ملء تفاصيل الملف الشخصي الجديد (الخطوة الرابعة).

Creating a new VPN profile

4. الآن، قم بملء معلومات ملف التكوين الخاص بـ VPN كما يلي:

  • الاسم – قدم اسم الاتصال (على سبيل المثال، testvpn).
  • البوابة – حدد اسم النطاق لخادم OpenConnect VPN الخاص بك (على سبيل المثال، https://vpn.atadomain.io).
  • اسم المستخدم – اسم المستخدم الذي تمت إضافته (atauser) إلى خادم OpenConnect VPN.

بمجرد ملء هذه المعلومات، انقر على حفظ لتأكيد البيانات وإنشاء ملف التكوين الخاص بالـ VPN.

Configuring the new VPN profile

5. بعد ذلك، قم بتعيين ملف تعريف VPN الذي تم إنشاؤه حديثًا (testvpn) كـ الخادم، وانقر على الاتصال لإنشاء اتصال بخادم OpenConnect VPN.

Connecting to the OpenConnect VPN Server

6. عند الطلب، أدخل كلمة المرور الخاصة بمستخدم VPN الخاص بك وانقر فوق موافق.

Authenticating the connection to the OpenConnect VPN Server

7. بمجرد الاتصال، يتغير لون القفل إلى اللون الأخضر، كما هو موضح أدناه.

Confirming successful connection to the OpenConnect VPN Server

8. في النهاية، انقر على علامة التبويب معلومات VPN للحصول على حالة الاتصال التفصيلية. يجب أن ترى عنوان IP الداخلي الذي حصلت عليه من خادم VPN، وخادم DNS، ونسخة TLS التي تستخدمها.

Checking the VPN connection details

الختام

خلال هذا البرنامج التعليمي، تعلمت كيفية إعداد خادم VPN OpenConnect. في الوقت نفسه، تعلمت استخدام شهادات SSL/TSL وإضافة قواعد جدار الحماية لإنشاء اتصال آمن بخادم VPN OpenConnect.

بهذه المعرفة الجديدة، لماذا لا تدمج خادم VPN OpenConnect مع عدة خوادم مصادقة متعددة، مثل راديوس و فتح الهوية؟ أو إضافة طبقة من الأمان لمصادقة العميل عبر المصادقة ثنائية العوامل؟

Source:
https://adamtheautomator.com/openconnect-vpn/