ديف أوبس

إعداد خادم OpenVPN أوبونتو

دليلك لكيفية إعداد خادوم OpenVPN على نظام Ubuntu

في ظل التوسع الكبير في استخدام الشبكات الخاصة الافتراضية (VPN) لتعزيز الأمان والخصوصية على الإنترنت، يعد OpenVPN أحد أشهر وأقوى البروتوكولات المستخدمة لإنشاء شبكات VPN آمنة وموثوقة. ويتميز OpenVPN بمرونته الكبيرة ودعمه لأنظمة تشغيل متعددة، مما يجعله الخيار الأمثل لإنشاء خادوم VPN على أنظمة Linux، خاصة Ubuntu.

هذا المقال يقدم دليلاً شاملاً ومفصلاً لإعداد خادوم OpenVPN على نظام Ubuntu، بدءاً من متطلبات النظام وحتى التكوينات المتقدمة لضمان بيئة آمنة ومستقرة للاتصال بشبكة VPN.


مقدمة حول OpenVPN وأهمية إعداد خادوم VPN

تُعد الشبكات الخاصة الافتراضية وسيلة لتأمين الاتصال عبر الإنترنت من خلال إنشاء نفق مشفر بين الجهاز المستخدم وخادوم بعيد، ما يضمن حماية البيانات من التجسس أو التنصت أو الاختراق. OpenVPN هو برنامج مفتوح المصدر يعتمد على بروتوكولات قوية مثل SSL/TLS لتشفير الاتصالات، مما يجعله من أكثر الحلول أماناً ومرونةً وانتشاراً في العالم.

استخدام OpenVPN على Ubuntu يسمح للشركات والأفراد بإنشاء شبكة خاصة افتراضية تتحكم بها بالكامل، دون الاعتماد على خدمات طرف ثالث. كما أن Ubuntu كنظام تشغيل يقدم استقراراً وأداءً جيداً مع إمكانية تخصيص واسعة، مما يجعلها بيئة مثالية لاستضافة خادوم VPN.


المتطلبات الأساسية قبل البدء في تثبيت OpenVPN على Ubuntu

  1. نظام تشغيل Ubuntu: يُفضل استخدام إصدار حديث مثل Ubuntu 20.04 LTS أو 22.04 LTS لما يحتويانه من تحديثات أمنية وأدوات حديثة.

  2. صلاحيات المستخدم الجذر (Root) أو sudo: لتنفيذ الأوامر التي تتطلب صلاحيات إدارية.

  3. اتصال إنترنت مستقر: لتحميل الحزم البرمجية وتحديث النظام.

  4. جدار حماية مهيأ بشكل صحيح: للسماح بالاتصالات عبر منفذ OpenVPN الافتراضي (UDP 1194).

  5. معرفة أساسية بشبكات TCP/IP وLinux: لتسهيل فهم وإدارة الإعدادات.


الخطوة الأولى: تحديث النظام وتثبيت الحزم المطلوبة

قبل البدء بتثبيت OpenVPN، من الضروري تحديث نظام Ubuntu لضمان تثبيت أحدث الإصدارات من الحزم البرمجية.

bash
sudo apt update && sudo apt upgrade -y

ثم تثبيت OpenVPN وحزمة easy-rsa التي تُستخدم لتوليد الشهادات والمفاتيح:

bash
sudo apt install openvpn easy-rsa -y

الخطوة الثانية: إعداد بيئة Easy-RSA لإنشاء البنية التحتية للمفتاح (PKI)

تُستخدم Easy-RSA لإنشاء شهادة الجذر (CA)، شهادات الخادم والعميل، والمفاتيح الخاصة بها.

  1. إنشاء مجلد خاص بـ Easy-RSA:

bash
make-cadir ~/openvpn-ca cd ~/openvpn-ca
  1. تعديل متغيرات التكوين:

داخل المجلد ~/openvpn-ca، يوجد ملف vars يحتوي على إعدادات افتراضية مثل اسم الدولة، المقاطعة، المدينة، المنظمة، البريد الإلكتروني، وما إلى ذلك. يتم تحرير هذا الملف لتحديث القيم حسب الحاجة.

فتح ملف vars لتحريره باستخدام محرر نصوص مثل nano:

bash
nano vars

في نهاية الملف، تجد متغيرات مثل:

bash
set_var EASYRSA_REQ_COUNTRY "US" set_var EASYRSA_REQ_PROVINCE "California" set_var EASYRSA_REQ_CITY "San Francisco" set_var EASYRSA_REQ_ORG "MyOrg" set_var EASYRSA_REQ_EMAIL "[email protected]" set_var EASYRSA_REQ_OU "MyOrganizationalUnit"

يُستحسن تحديثها وفق المعلومات الحقيقية أو المطلوبة.

  1. تحميل متغيرات البيئة وتهيئة PKI:

bash
source vars ./clean-all ./easyrsa init-pki

الخطوة الثالثة: إنشاء شهادة الجذر (CA) وخادم OpenVPN

  1. بناء شهادة الجذر (CA):

bash
./easyrsa build-ca

ستطلب إدخال كلمة مرور لـ CA، مع إمكانية تركها فارغة، لكنها تزيد من مستوى الأمان.

  1. إنشاء شهادة وخاصية الخادم:

bash
./easyrsa gen-req server nopass
  1. توقيع طلب الشهادة الخاص بالخادم:

bash
./easyrsa sign-req server server
  1. إنشاء مفاتيح التشفير Diffie-Hellman:

bash
./easyrsa gen-dh
  1. توليد مفتاح HMAC لتعزيز الأمان:

bash
openvpn --genkey --secret ta.key

الخطوة الرابعة: إعداد ملفات خادوم OpenVPN

بعد إنشاء الشهادات والمفاتيح، يتم نقل الملفات الضرورية إلى مجلد تكوين OpenVPN:

bash
sudo cp pki/ca.crt pki/private/server.key pki/issued/server.crt pki/dh.pem ta.key /etc/openvpn/

ثم، إنشاء ملف إعدادات الخادم server.conf في مجلد /etc/openvpn/:

bash
sudo nano /etc/openvpn/server.conf

محتوى ملف server.conf النموذجي:

pgsql
port 1194 proto udp dev tun ca ca.crt cert server.crt key server.key dh dh.pem auth SHA256 tls-auth ta.key 0 topology subnet server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" keepalive 10 120 cipher AES-256-CBC user nobody group nogroup persist-key persist-tun status openvpn-status.log verb 3 explicit-exit-notify 1

هذا التكوين يُعطي الخادم إمكانية العمل عبر UDP على المنفذ 1194، ويوفر شبكة فرعية مخصصة للاتصالات المشفرة، ويضغط على إعدادات توجيه المرور إلى الإنترنت عبر VPN مع DNS جوجل.


الخطوة الخامسة: ضبط نظام التشغيل للسماح بتمرير الحزم (IP Forwarding)

للسماح بتمرير حركة مرور البيانات عبر خادوم VPN، يجب تفعيل IP forwarding:

  1. تعديل ملف sysctl:

bash
sudo nano /etc/sysctl.conf

إلغاء تعليق أو إضافة السطر التالي:

ini
net.ipv4.ip_forward=1
  1. تطبيق التغيير فوراً:

bash
sudo sysctl -p

الخطوة السادسة: ضبط جدار الحماية (Firewall)

من الضروري تعديل إعدادات جدار الحماية للسماح بمرور حزم VPN. في Ubuntu، يتم استخدام ufw عادةً.

  1. السماح لمنفذ OpenVPN (UDP 1194):

bash
sudo ufw allow 1194/udp
  1. السماح بمرور حركة المرور المُعاد توجيهها (NAT):

تحرير ملف /etc/ufw/before.rules وإضافة قواعد NAT قبل قواعد الـ *filter:

bash
sudo nano /etc/ufw/before.rules

إضافة القسم التالي في بداية الملف:

less
# NAT table rules *nat :POSTROUTING ACCEPT [0:0] -A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE COMMIT

مع مراعاة استبدال eth0 بواجهة الشبكة المناسبة لديك (يمكن معرفة الواجهة بواسطة الأمر ip a).

  1. تعديل إعدادات UFW لتمكين التوجيه:

bash
sudo nano /etc/default/ufw

تغيير السطر:

ini
DEFAULT_FORWARD_POLICY="DROP"

إلى

ini
DEFAULT_FORWARD_POLICY="ACCEPT"
  1. إعادة تشغيل UFW لتطبيق الإعدادات:

bash
sudo ufw disable sudo ufw enable

الخطوة السابعة: تشغيل وتمكين خدمة OpenVPN

لتشغيل خادوم OpenVPN:

bash
sudo systemctl start openvpn@server

لتفعيل الخدمة تلقائياً عند إقلاع النظام:

bash
sudo systemctl enable openvpn@server

للتحقق من حالة الخدمة:

bash
sudo systemctl status openvpn@server

الخطوة الثامنة: إعداد شهادات ومفاتيح العملاء (Clients)

للسماح للأجهزة الأخرى بالاتصال بخادوم OpenVPN، يجب إنشاء شهادات خاصة لكل عميل.

  1. إنشاء طلب شهادة لكل عميل (استبدال client1 باسم العميل):

bash
cd ~/openvpn-ca source vars ./easyrsa gen-req client1 nopass
  1. توقيع طلب شهادة العميل:

bash
./easyrsa sign-req client client1
  1. نقل الشهادات والمفاتيح اللازمة للعميل:

  • ca.crt (شهادة الجذر)

  • client1.crt (شهادة العميل)

  • client1.key (مفتاح العميل)

  • ta.key (مفتاح HMAC)


الخطوة التاسعة: إنشاء ملف تكوين عميل OpenVPN

إنشاء ملف تكوين موحد للعميل client1.ovpn يحتوي على كل ما يلزم لتسهيل الاتصال بالخادم.

مثال على محتوى ملف client1.ovpn:

vbnet
client dev tun proto udp remote [عنوان IP أو اسم الدومين] 1194 resolv-retry infinite nobind persist-key persist-tun remote-cert-tls server auth SHA256 cipher AES-256-CBC key-direction 1 verb 3 -----BEGIN CERTIFICATE----- ...محتوى ca.crt... -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- ...محتوى client1.crt... -----END CERTIFICATE----- <key> -----BEGIN PRIVATE KEY----- ...محتوى client1.key... -----END PRIVATE KEY----- key> -----BEGIN OpenVPN Static key V1----- ...محتوى ta.key... -----END OpenVPN Static key V1-----

يجب استبدال [عنوان IP أو اسم الدومين] بعنوان IP أو اسم النطاق الخاص بخادوم OpenVPN.


الخطوة العاشرة: اختبار اتصال VPN

بعد إعداد خادوم وملف العميل، يمكن استخدام أي برنامج OpenVPN على جهاز العميل (ويندوز، ماك، لينكس، أندرويد، iOS) لتحميل ملف client1.ovpn والاتصال بالخادم.


نصائح وإعدادات متقدمة لتعزيز أمان وكفاءة خادوم OpenVPN

  • تغيير المنفذ والبروتوكول: لتحسين الأمان وتجنب الحظر من بعض الشبكات، يمكن تغيير المنفذ الافتراضي 1194 أو التحويل من UDP إلى TCP.

  • استخدام مفاتيح مرور (Password): إضافة كلمة مرور لشهادات العميل لزيادة طبقة الحماية.

  • تحديث OpenVPN بانتظام: للحماية من الثغرات الجديدة.

  • تحديد عدد الاتصالات لكل عميل: عبر التحكم في ملفات إعدادات OpenVPN.

  • مراقبة سجلات الخادم: باستخدام ملفات openvpn-status.log لتحليل الأداء واكتشاف المشاكل.

  • تفعيل تسجيل الدخول المتقدم (Log Level): يمكن رفع مستوى التسجيل إلى 4 أو 5 لتحليل أعمق.

  • إعداد سياسة الجدار الناري الصارمة: مع السماح فقط بالاتصالات الضرورية.

  • الاستفادة من إعدادات Compression بحذر: حيث أن بعض الإصدارات الحديثة من OpenVPN قد توصي بتعطيل الضغط لأسباب أمنية.

  • استخدام تعارض IP ثابت للعملاء: عبر ملف ccd لضمان أن كل عميل يحصل على IP معين.


جدول يوضح مقارنة بين الإعدادات الأساسية والمتقدمة لخادوم OpenVPN

الخاصية الإعداد الأساسي الإعداد المتقدم
المنفذ والبروتوكول UDP 1194 TCP 443 أو UDP مخصص
تشفير البيانات AES-256-CBC AES-256-GCM مع HMAC SHA512
التوثيق شهادة CA شهادة CA + كلمة مرور
التوجيه IP forwarding نشط IP forwarding + سياسة جدار ناري متقدمة
التحقق من صحة الشهادة TLS handshake TLS handshake مع مفاتيح HMAC إضافية
سجل الأحداث مستوى verb 3 مستوى verb 4 أو 5 مع تحليلات متقدمة
التوافق مع العملاء متوافق مع معظم عملاء OpenVPN دعم خاص لعملاء محددين مع إعدادات IP ثابتة
ضغط البيانات غير مفعل عادةً مفعل مع تحذير أمني

الخاتمة

إعداد خادوم OpenVPN على نظام Ubuntu يمثل خطوة مهمة لبناء شبكة VPN آمنة وموثوقة، تتيح تأمين الاتصالات بين الأجهزة عبر الإنترنت. من خلال اتباع الخطوات التفصيلية الموضحة في هذا الدليل، يمكن لأي مسؤول نظام أو مستخدم يمتلك معرفة أساسية باللينكس إنشاء خادوم VPN قوي ومهيأ بشكل جيد.

يجب دائماً الاهتمام بتحديث الخادم وبنظام التشغيل، ومراجعة إعدادات الأمان بشكل دوري، لضمان استمرار عمل الخدمة بشكل مستقر وآمن. كما يمكن توسيع هذا الإعداد وإضافة ميزات متقدمة وفقاً لاحتياجات المؤسسة أو المستخدم.


المصادر والمراجع


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