كيفية إعداد خادم OpenVPN على Ubuntu 20.04

الدليل الشامل لإعداد خادم OpenVPN آمن على Ubuntu 20.04

تسمح لك الشبكة الافتراضية الخاصة (VPN) بالاتصال بشكل آمن وخاص بشبكة خاصة بعيدة ، على سبيل المثال ، شبكة مكتبك أو الإنترنت بطريقة كما لو كنت متصلاً بشكل مباشر بشبكة خاصة.

تعمل VPN في بنية الخادم والعميل. يتم نشر خادم VPN على جهاز ويمكن الوصول إليه بشكل عام عبر الإنترنت. يمكن تكوين خادم VPN للسماح بالاتصال بشبكة LAN خاصة ، مثل شبكة المكتب ، أو السماح بالاتصالات بالإنترنت. يتصل المستخدم بخادم VPN باستخدام عميل VPN على جهازه المحلي. يتم الاتصال بين خادم VPN والعميل باستخدام بروتوكول نفق آمن. بالنسبة للإنترنت ، يبدو أن وجهة حركة المرور هي خادم VPN ؛ ومع ذلك ، تمر حركة المرور إلى العميل عبر الخادم.

تتمتع VPN بالعديد من الاستخدامات في الحياة اليومية ، مثل الاتصال الآمن بشبكة Wifi العامة ، والتي غالبًا ما يتم اختراقها أو تجاوز القيود الجغرافية على مواقع ويب معينة عن طريق الاتصال بشبكة VPN في بلد يسمح به موقع الويب.

OpenVPN هو تطبيق VPN مستخدم على نطاق واسع يسمح بمجموعة واسعة من التكوينات والخيارات. يستخدم بروتوكول طبقة مآخذ التوصيل الآمنة (SSL) لتشفير البيانات والمفاتيح المشتركة مسبقًا أو اسم المستخدم / كلمة المرور أو الشهادات لمصادقة عميل VPN. في هذه المقالة ، سنرى كيفية إعداد خادم VPN وعميل VPN على Ubuntu 20.04.

التركيب

يتوفر OpenVPN في مستودعات Ubuntu الرسمية في الحزمة openvpn. تقوم هذه الحزمة بتثبيت خادم OpenVPN وكذلك العميل.

sudo apt تثبيت openvpn

كما ذكرنا سابقًا ، يستخدم OpenVPN شهادات SSL لتشفير البيانات بين الخادم والعميل. نحتاج إلى إعداد مرجع تصديق خاص بنا (CA) لإصدار شهادات لشبكة VPN. لاحظ أنه يجب إعداد هذا على جهاز مختلف عن الجهاز حيث تم إعداد OpenVPN ؛ والسبب هو أنه إذا كان على نفس الخادم وإذا تم اختراقه ، فيمكن للمهاجم الوصول إلى المفتاح الخاص وبالتالي مهاجمة اتصال VPN.

سنستخدم أداة تسمى "Easy-RSA" لإعداد المرجع المصدق. لتثبيته ، قم بتشغيل ما يلي على جهاز CA وجهاز خادم OpenVPN وجهاز العميل ، حيث أن التكوين مطلوب على هذه الأجهزة الثلاثة لإعداد CA.

sudo apt install easy-rsa

سنقوم الآن أولاً بتهيئة المرجع المصدق على جهاز CA وتنفيذ بعض خطوات التكوين المطلوبة لنفسه على جهاز خادم Open VPN.

إعداد المرجع المصدق

الإعداد الأولي على جهاز CA

الآن ، تقوم هذه الحزمة بتثبيت أمر يسمى جعل القادر والذي يستخدم لإنشاء مجلد لتكوين هيئة إصدار الشهادات. دعونا ننشئ مجلدًا باستخدام هذا وندخل إلى المجلد.

جعل cadir cert_authority && cd cert_authority

افتح الملف المسمى فارز تم إنشاؤها في هذا الدليل. يحتوي هذا الملف على بعض متغيرات التكوين التي نحتاج إلى تعديلها. القيم التي يجب تعديلها موجودة في الأسطر 91-96 ، بعد التعليق حول المجالات التنظيمية الذي يصف هذه المجالات. أزل التعليق عن السطور واملأ القيم المناسبة بدلاً من قيم العينة.

حفظ وإنهاء الملف. إذا كنت تستخدم محرر vim ، فاضغط على خروج، نوع : wq و اضغط يدخل للحفظ والخروج.

بعد ذلك ، نقوم بتشغيل ملف ايزرسا البرنامج الموجود في الدليل لإعداد البنية التحتية للمفتاح العام (PKI) ، والتي سيتم استخدامها لإنشاء مفتاح عام وشهادات.

./easyrsa init-pki

ستنشئ الخطوة التالية مفتاح CA وشهادة. عندما يطالبك الأمر بكلمة مرور ، أدخل كلمة مرور لمفتاح CA. أدخل أيضًا اسمًا شائعًا عند مطالبتك بذلك. إذا تركت هذا فارغًا ، فسيتم استخدام الاسم الافتراضي Easy-RSA CA name.

./easyrsa build-ca

كما نرى من الإخراج ، تم إنشاء الشهادة والمفتاح. سيُستخدم هذا المفتاح للتوقيع على شهادات العميل والخادم ، وبالتالي لا يجب لمسه / تعديله أبدًا.

الآن ، لدينا إعداد PKI. الخطوة التالية هي إنشاء مفتاح خادم وشهادة على الجهاز والتي سنستخدمها كخادم OpenVPN. سيتم توقيع هذه الشهادة لاحقًا بواسطة جهاز CA.

إنشاء مفتاح الخادم والشهادة على جهاز الخادم

لقد قمنا بالفعل بتثبيت Easy RSA على جهاز الخادم. قم الآن بتنفيذ الخطوات الثلاث على جهاز الخادم ، والتي أجريناها سابقًا على جهاز CA ، أي. إنشاء دليل CA باستخدام جعل القادر والذهاب إلى داخله ، وتعديل المتغيرات في فارز ملف وتوليد PKI باستخدام ./easyrsa init-pki يأمر.

بعد ذلك ، نحتاج إلى تشغيل الأمر لإنشاء طلب ومفتاح شهادة الخادم.

./easyrsa gen-req server nopass

لاحظ أننا مررنا الخيار لا يمكن العبور حتى لا يطلب منا الأمر إدخال كلمة مرور لمفتاح الخادم. سيظل يطالبك باسم شائع للخادم ، والذي يمكنك إدخال أي شيء ، أو تركه فارغًا للاسم الافتراضي (الخادم) لاستخدامها.

انقل ملف المفتاح الذي تم إنشاؤه داخل ملف / etc / openvpn الدليل.

sudo mv pki / private / server.key / etc / openvpn

أرسل طلب الشهادة إلى جهاز CA. سوف نستخدم الأمر scp لهذا الغرض.

scp pki / reqs / server.req user @ CA_MACHINE_HOSTNAME: / directory

في لقطة الشاشة أعلاه ، المضيف 45.79.125.41 هو آلة CA. لقد قمنا بنسخ الشهادة في الدليل / root.

الآن ، تم نسخ شهادة الخادم إلى جهاز CA. الخطوة التالية هي العودة إلى جهاز CA وتوقيع هذه الشهادة.

توقيع شهادة الخادم في المرجع المصدق

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

: ~ # cd / root && ls cert_authority server.req

كما نرى ، الملف الخادم حاضر. بعد ذلك ، انتقل إلى دليل CA واستورد هذا الطلب.

cd cert_authority ./easyrsa import-req /root/server.req server

لتوقيع هذا الطلب ، قم بتشغيل الأمر التالي.

./easyrsa Sign-req server

هنا الوسيطة الأولى هي نوع الطلب ، أي ، الخادم، والوسيطة الثانية هي الاسم الشائع لجهاز الخادم ، والذي استخدمنا له سابقًا القيمة الافتراضية ، أي الخادم.

أدخل العبارة نعم، وكلمة المرور الخاصة بمفتاح CA عندما يُطلب منك ذلك.

يمكننا الآن إزالة ملف طلب الشهادة ونسخ الشهادة التي تم إنشاؤها للخادم ، وكذلك شهادة CA العامة مرة أخرى إلى جهاز الخادم.

rm /root/server.req scp pki / Release / server.crt [email protected]: / root scp pki / ca.crt [email protected]: / root

بعد ذلك ، يتعين علينا تنفيذ بضع خطوات أخرى لضمان الاتصال الآمن بشبكة VPN.

توليد معلمات DH

تبادل مفاتيح DH (Diffie-Hellman) هو خوارزمية لضمان التبادل الآمن لمفاتيح التشفير عبر قناة غير آمنة. أولاً ، دعنا ننقل الشهادة المستلمة والشهادة العامة CA إلى / etc / openvpn.

mv /root/ca.crt /root/server.crt / etc / openvpn

انتقل إلى مجلد CA على جهاز الخادم وقم بتشغيل الأمر التالي لإنشاء معلمات DH. قد يستغرق الأمر وقتًا طويلاً للإنشاء.

./easyrsa gen-dh

الآن ، انقل الملف الذي تم إنشاؤه إلى / etc / openvpn.

mv /root/cert_authority/pki/dh.pem / etc / openvpn

توليد مفاتيح TA

يستخدم OpenVPN إجراء أمان إضافيًا آخر باستخدام مفتاح مصادقة TLS. لإنشاء مفتاح مصادقة TLS ، قم بتشغيل:

openvpn --genkey - سر tls_auth.key

وانتقل المفتاح إلى / etc / openvpn.

mv tls_auth.key / etc / openvpn

تم الآن تكوين مفتاح الخادم وإعداد المرجع المصدق. دعنا ننتقل إلى التكوين الفعلي لخادم VPN الآن.

تكوين خادم OpenVPN

لا يتم إنشاء ملف التكوين لخادم OpenVPN تلقائيًا ، ولكن يمكننا استخدام ملف تكوين قالب من ملف openvpn حزمة.

sudo cp /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz / etc / openvpn / sudo gzip -d /etc/openvpn/server.conf.gz

افتح الملف باستخدام vim أو أي محرر من اختيارك.

cd / etc / openvpn vim server.conf

يتعين علينا إدخال الأسماء الشائعة للمفاتيح والشهادات التي أنشأناها مسبقًا. انتقل إلى السطر لا. 78. نظرًا لأننا استخدمنا جميع الأسماء الافتراضية ، فإننا نحتفظ بها دون تغيير. ثم تحقق من اسم ملف معلمة DH في السطر 85. لقد استخدمنا الاسم dh.pem ، فلنقم بتغييره.

بعد ذلك ، دعنا نعدل الامتيازات لخادم OpenVPN. انتقل إلى السطر 274 و 275 وقم بإزالة المسافة البادئة ; لإلغاء التعليق عليه.

انتقل بالمثل إلى السطر 192 وقم بإزالة الفاصلة المنقوطة. يمكّن هذا التوجيه حركة مرور جميع العملاء من المرور عبر VPN.

حفظ وإنهاء الملف.

قم بتغيير ملكية المجلد / etc / openvpn إلى root.

sudo chown -R root: root / etc / openvpn

إعداد الشبكات وجدار الحماية

نحتاج إلى السماح بإعادة توجيه IP على الخادم للسماح بإعادة توجيه الحزم من وإلى عميل VPN. Uncomment سطر 28 يوم /etc/sysctl.conf:

حفظ وإنهاء الملف.

إعادة تشغيل systemctl من أجل أن تحدث هذه التغييرات.

sudo sysctl -p

نحتاج إلى إعداد ترجمة عنوان الشبكة (NAT) على الخادم باستخدام جدار حماية UFW للسماح لعميل VPN بالوصول إلى الإنترنت باستخدام عنوان IP لخادم VPN. أولاً ، لنقم بتمكين إعادة توجيه الحزمة في تكوين جدار الحماية. فتح / etc / default / ufw وقم بتغيير المتغير في السطر 19 إلى "قبول".

حفظ وإنهاء الملف.

أضف الآن القواعد التالية إلى الملف /etc/ufw/before.rules قبل منقي سطر في الملف.

* nat: قبول الطرح [0: 0] -A POSTROUTING -s 10.8.0.0/8 -o -j MASQUERADE COMMIT

أدخل واجهة الشبكة الخاصة بك بدلاً من . يمكنك رؤية واجهة الشبكة الخاصة بك باستخدام الأمر ifconfig.

السماح بحركة المرور لخدمة OpenVPN على جدار الحماية والسماح للمنفذ 1194.

sudo ufw تسمح openvpn && sudo ufw allow 1194

أعد تحميل خدمة جدار الحماية.

تحميل sudo ufw

يمكننا الآن إعادة تشغيل البرنامج الخفي لخادم Open VPN عن طريق تشغيل:

إعادة تشغيل sudo service openvpn

قم بتمكينه للبدء في وقت التمهيد عن طريق تشغيل:

sudo systemctl تمكين openvpn

تم الآن تكوين خادم OpenVPN وبدأ تشغيله. دعنا ننتقل الآن إلى طلب شهادة العميل وإنشاء المفتاح والتهيئة الأخرى.

تكوين عميل OpenVPN

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

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

انتقل إلى مجلد CA على الخادم وقم بتشغيل ما يلي:

cd ~ / cert_authority ./easyrsa gen-req client nopass

بطريقة مماثلة كما فعلت سابقًا ، أدخل اسمًا شائعًا عند المطالبة ، أو اتركه فارغًا لاستخدام الاسم الشائع الافتراضي ، على سبيل المثال ، عميل.

لنقم الآن بنسخ طلب شهادة العميل الذي تم إنشاؤه إلى جهاز CA.

scp pki / reqs / client.req [email protected]: / root

لنستورد هذا الطلب في جهاز CA:

./easyrsa import-req /root/client.req client

ودعنا نوقعها الآن:

./easyrsa تسجيل-طلب العميل

يدخلنعم عند مطالبتك بالمتابعة. أدخل كلمة المرور لمفتاح CA عندما يُطلب منك ذلك.

يمكننا الآن إزالة الملف المطلوب للعميل ونسخ الطلب مرة أخرى إلى جهاز خادم VPN.

rm /root/client.req scp pki / صدر / client.crt [email protected]: / root

دعونا ننشئ مجلد يسمى عميل للاحتفاظ بجميع الملفات المتعلقة بالعميل على خادم VPN. سننقل مفتاح العميل والشهادة إلى هذا المجلد.

mkdir ~ / client sudo mv ~ / client.crt ~ / cert_authority / pki / private / client.key ~ / client

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

cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~ / العميل

افتح الملف العميل. في السطر 42 ، أدخل اسم المضيف أو عنوان IP لجهاز الخادم الخاص بك بدلاً من بلدي الخادم -1.

قم بإلغاء التعليق على الأسطر 61 و 62 عن طريق إزالة الفاصلة المنقوطة البادئة ، لتقليل الامتيازات الخاصة بالملف.

بعد ذلك ، قم بالتعليق خارج الأسطر 88-90 والسطر 108. والسبب هو أننا نريد إضافة محتويات الملفات المذكورة يدويًا بدلاً من استخدام مواقع الملفات. الغرض من القيام بذلك هو نقل ملف تكوين العميل لاحقًا إلى العميل ، حيث لن يكون لدينا في الواقع مفتاح العميل وملفات الشهادة ؛ ومن ثم نقوم بنسخ محتويات تلك الموجودة في ملف التكوين نفسه.

قم بإلحاق ما يلي بملف تكوين العميل. أدخل محتويات الملف للملفات المعنية داخل العلامات المحددة.

 # الصق محتوى ملف ca.crt هنا # الصق محتوى ملف client.crt هنا # الصق محتوى ملف client.key هنا key-direction 1 # الصق محتوى ملف tls_auth.key هنا 

حفظ وإنهاء الملف. إعادة تسمية هذا الملف من العميل ل client.ovpn، لأن الأخير هو الامتداد المطلوب لملفات التكوين التي يمكن استيرادها كتكوينات للشبكة.

الآن ، انقل الملف client.ovpn للعميل ، أي الجهاز المحلي.

يركض scp على جهاز العميل لنقل الملف من جهاز الخادم إلى جهازك المحلي.

scp user @ server_ip: / path_to_file local_destination_path

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

لبدء تشغيل عميل VPN من سطر الأوامر ، قم بتشغيل:

sudo openvpn --config client.ovpn

وهذا هو الأمر الوحيد الذي تحتاجه لتشغيله لبدء عميل VPN.

لبدء عميل VPN عبر واجهة المستخدم الرسومية ، قم بتنفيذ الخطوات التالية.

انتقل إلى الإعدادات »الشبكة على جهاز العميل الخاص بك.

اضغط على + زر في قسم VPN واختر "استيراد من ملف ..." من الخيارات.

انقر فوق "إضافة" لبدء استخدام VPN.

لاحظ أنه ضمن "Gateway" ، يكون هذا هو عنوان IP للخادم.

أخيرًا ، قم بتبديل زر "عميل VPN" لتمكين VPN على الجهاز.

قد يستغرق إنشاء اتصال VPN بضع ثوانٍ. سيظهر شعار تقدم جديد لـ VPN في الزاوية اليسرى العلوية من شاشتك أثناء إعداده ، وسيتغير إلى شعار VPN بمجرد إعداده.

للتحقق مما إذا كانت VPN تعمل بشكل صحيح ، قم بتشغيل ما يلي:

حليقة //ipinfo.io/ip

يجب أن يعيد عنوان IP لجهاز الخادم الخاص بك. أو يمكنك أيضًا التحقق من عنوان IP الخاص بك عن طريق البحث ببساطة عن "My IP" على Google. يجب أن يُظهر عنوان IP لخادم VPN الخاص بك إذا كان إعداد VPN الخاص بنا يعمل بشكل صحيح.

استنتاج

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

في حالة اتصالات الإنترنت الأبطأ ، من الممكن أنه إذا تم استخدام UDP للاتصال ، فهناك خسارة كبيرة في الحزمة. يمكن للمستخدم التبديل إلى TCP عن طريق إلغاء تعليق الخط بروتو برنامج التعاون الفني والتعليق على الخط بروتو udp في ملف تكوين الخادم.

أيضًا ، في حالة وجود أخطاء أخرى ، يمكنك تعيين مستوى التسجيل بامتداد الفعل التوجيه في كل من ملفات تكوين الخادم والعميل. يمكنك إدخال قيم بين 0 و 9. كلما زادت قيمة هذا التوجيه ، سيكون السجل أكثر تفصيلاً.