العودة إلى المدونة

إعداد OpenVPN على Ubuntu 18.04

إعداد OpenVPN على Ubuntu 18.04

مقدمة

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

ما هي الـ VPN؟

يرمز مصطلح VPN إلى الشبكة الافتراضية الخاصة (Virtual Private Network). وهو يتيح إمكانية فتح نفق آمن إلى خادم موثوق. ثم يتم إرسال واستقبال جميع الطلبات عبر هذا الخادم. وتتمثل الميزة في تأمين وصولك ومعاملاتك عند استخدام الشبكات العامة مثل شبكة الواي فاي المجانية في الفندق.

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

في هذا البرنامج التعليمي، سنرشدك خلال خطوات إعداد خادم OpenVPN على Ubuntu 18.04.

المتطلبات

يجب أن يكون لديك صلاحية الوصول إلى خادم Ubuntu 18.04 لاستضافة خدمة OpenVPN الخاصة بك لإكمال هذا البرنامج التعليمي. قبل البدء في هذا الدليل، تحتاج أيضًا إلى تكوين مستخدم غير جذر (non-root) بصلاحيات sudo. يمكنك تثبيت خادمك بسهولة باتباع البرنامج التعليمي الخاص بنا حول إعداد خادم Ubuntu.

بالإضافة إلى ذلك، ستحتاج إلى جهاز كمبيوتر منفصل ليعمل كـ جهة إصدار شهادات (CA). من الناحية الفنية، يمكنك استخدام خادم OpenVPN أو جهاز الكمبيوتر المحلي الخاص بك كجهة إصدار شهادات. ومع ذلك، لا نوصي بهذا لأن ذلك سيعرض شبكة الـ VPN الخاصة بك لثغرات أمنية. وفقًا لوثائق OpenVPN الرسمية، يجب عليك وضع جهة إصدار الشهادات على جهاز كمبيوتر منفصل مخصص لاستيراد طلبات الشهادات وتوقيعها. لذلك، نفترض أن جهة إصدار الشهادات الخاصة بك موجودة على خادم Ubuntu 18.04 منفصل يحتوي أيضًا على مستخدم غير جذر بصلاحيات sudo وجدار حماية أساسي. طوال هذا الدليل، ستكون جميع خطوات التثبيت والتكوين بسيطة قدر الإمكان لكل عملية تثبيت. يمكنك أيضًا إلقاء نظرة على البرنامج التعليمي الخاص بنا حول كيفية إعداد خادم Open VPN تحت Docker.

الخطوة 1 – تثبيت OpenVPN و EasyRSA

أولاً، قم بتحديث فهرس حزم خادم الـ VPN الخاص بك وتثبيت OpenVPN. يمكنك تثبيت OpenVPN باستخدام apt لأنه متوفر في مستودعات Ubuntu الافتراضية:

الخطوة 2: إنشاء جهة إصدار شهادات

قم بإنشاء جهة إصدار شهادات (CA) بسيطة لإصدار شهادات موثوقة لخادم OpenVPN. للقيام بذلك، قم بتنزيل أحدث إصدار من EasyRSA على كل من جهاز CA وخادم OpenVPN باستخدام wget. للحصول على أحدث إصدار، انتقل إلى صفحة الإصدارات (Releases) لمشروع EasyRSA الرسمي على GitHub، وانسخ رابط التنزيل للملف الذي ينتهي بـ .tgz والصقه في الأمر التالي:

ثم، قم بفك ضغط ملف tarball:

 OpenVPN EasyRSA software

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

الخطوة 3 – تكوين متغيرات EasyRSA وبناء جهة إصدار الشهادات (CA)

يأتي EasyRSA مع ملف تكوين يمكنك تعديله لتحديد عدد من المتغيرات لجهة إصدار الشهادات (CA) الخاصة بك باستخدام هذا الأمر:

يوجد ملف في الدليل باسم vars.example. قم بإنشاء نسخة من هذا الملف، وقم بتسمية النسخة vars بدون امتداد ملف:

استخدم محرر النصوص المفضل لديك لفتح هذا الملف الجديد:

بعد ذلك، ابحث عن الإعدادات التي تحدد القيم الافتراضية للحقول للشهادات الجديدة. ستكون مشابهة لهذا:

قم بتحديث هذه المتغيرات إلى ما تريد كما هو موضح أدناه:

احفظ الملف وأغلقه بمجرد أن تصبح جاهزًا. الخطوة التالية هي استدعاء برنامج easyrsa النصي وتشغيله باستخدام خيار init-pki لبدء البنية التحتية للمفاتيح العامة على خادم CA:

easyrsa init-pki

بعد ذلك، قم بتشغيل الأمر build-ca مع خيار nopass حتى لا يُطلب منك إدخال كلمة مرور في كل مرة تتفاعل فيها مع المرجع المصدق (CA) الخاص بك:

في المخرجات، سيُطلب منك تأكيد الاسم الشائع للمرجع المصدق (CA) الخاص بك:

 OpenVPN build-ca

وبذلك، يصبح المرجع المصدق (CA) الخاص بك جاهزًا للبدء في توقيع طلبات الشهادات.

الخطوة 4 - إنشاء شهادة الخادم والمفتاح وملفات التشفير

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

من هناك، قم بتشغيل برنامج easyrsa النصي باستخدام خيار init-pki. على الرغم من أنك قمت بالفعل بتشغيل هذا الأمر على جهاز المرجع المصدق (CA)، إلا أنه يجب تشغيل هذا الأمر هنا أيضًا. وذلك لأن أدلة PKI الخاصة بالخادم والمرجع المصدق مختلفة:

ثم استدعِ برنامج easyrsa النصي مرة أخرى، هذه المرة مع خيار gen-req، متبوعًا بالاسم العام للكمبيوتر’:

سيؤدي هذا إلى إنشاء مفتاح خاص للخادم وملف طلب شهادة باسم server.req. انسخ مفتاح الخادم إلى دليل /etc/openvpn/:

انقل ملف server.req إلى جهاز المرجع المصدق (CA) الخاص بك باستخدام طريقة آمنة (مثل SCP في المثال التالي):

بعد ذلك، انتقل إلى دليل EasyRSA على جهاز المرجع المصدق (CA) الخاص بك:

استخدم برنامج easyrsa النصي مرة أخرى لاستيراد ملف server.req وإضافة اسمه الشائع بعد مسار الملف:

بعد ذلك، قم بتوقيع الطلب عن طريق تشغيل برنامج easyrsa النصي مع خيار sign-req متبوعًا بنوع الطلب والاسم الشائع. بالنسبة لطلب شهادة خادم OpenVPN، تأكد من استخدام نوع طلب الخادم:

يطلب منك المخرج التحقق من أن الطلب من مصدر موثوق. اكتب yes واضغط على Enter للتأكيد. يرجى التحقق من التفاصيل الموضحة أدناه لضمان الدقة. يرجى ملاحظة أن هذا الطلب لم يتم التحقق من كلمة المرور الخاصة به بعد.

اطلب الموضوع وقم بتوقيعه كشهادة خادم لمدة 3650 يومًا:

 OpenVPN sign certificate for server

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

انقل ملف ca.rt إلى الخادم قبل تسجيل الخروج من جهاز كمبيوتر CA:

بعد ذلك، قم بتسجيل الدخول إلى خادم OpenVPN الخاص بك مرة أخرى وانسخ الملفين server.crt و ca.crt إلى دليل /etc/openvpn/ الخاص بك:

بعد ذلك، انتقل إلى دليل EasyRSA الخاص بك:

أدخل الكود التالي لإنشاء مفتاح Diffie-Hellman قوي يمكنك استخدامه أثناء تبادل المفاتيح:

عند الانتهاء، قم بإنشاء توقيع HMAC لتحسين وظيفة فحص حالة TLS الخاصة بالخادم:

عند اكتمال الأمر، انسخ الملفين الجديدين إلى دليل / etc / openvpn /:

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

الخطوة 4 - إنشاء شهادة العميل وزوج المفاتيح

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

بما أنك تقوم بحفظ زوج الشهادة/المفتاح وملف تكوين العميل في هذا الدليل لأسباب أمنية، يجب عليك الآن إلغاء الأذونات:

ثم انتقل مجددًا إلى دليل EasyRSA وقم بتشغيل البرنامج النصي easyrsa مع الخيارين gen-req و nopass بالإضافة إلى الاسم العام للعميل:

اضغط على Enter لتأكيد الاسم الشائع. بعد ذلك، انسخ ملف client1.key إلى دليل / client-configs / keys / الذي تم إنشاؤه مسبقًا:

بعد ذلك، استخدم طريقة آمنة لنقل ملف client1.req إلى جهاز كمبيوتر CA الخاص بك:

قم بتسجيل الدخول إلى جهاز كمبيوتر CA الخاص بك، وانتقل إلى دليل EasyRSA واستورد طلب الشهادة:

import client.req

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

عند المطالبة، اكتب yes لتأكيد رغبتك في توقيع طلب الشهادة وأن طلب الشهادة من مصدر موثوق. يرجى إدخال الكلمة “yes” للمتابعة أو إدخال أي شيء آخر للإلغاء:

sign certificate

إذا قمت بتشفير مفتاح CA، فسيُطلب منك أيضًا إدخال كلمة المرور هنا. سيؤدي هذا إلى إنشاء ملف شهادة عميل باسم client1.crt. قم بنقل هذا الملف مرة أخرى إلى الخادم:

قم بالاتصال مجددًا عبر SSH بخادم OpenVPN الخاص بك وانسخ شهادة العميل إلى الدليل / client-configs / keys / :

بعد ذلك، انسخ ملفي ca.crt و ta.key إلى الدليل / client-configs / keys / :

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

 الخطوة 5 – تكوين خدمة OpenVPN

بعد إنشاء شهادات العميل والخادم، يمكنك تكوين خدمة OpenVPN لاستخدام هذه الاعتمادات. أولاً، انسخ ملف تكوين OpenVPN النموذجي إلى دليل التكوين الخاص بك ثم استخرجه لاستخدامه كأساس للإعداد:

افتح ملف تكوين الخادم في محرر النصوص المفضل لديك:

ثم، ابحث عن جزء HMAC من خلال البحث عن أمر tls-auth:

ابحث عن جزء كلمة المرور من خلال البحث عن سطر كلمة المرور المعلق. يوفر تشفير AES-256-CBC مستوى جيدًا من التشفير وهو مدعوم بشكل جيد. يجب ألا يكون السطر معلقًا، ولكن إذا كان كذلك، فاحذف “;” التي قبله:

أسفل ذلك، أضف أمر Auth لتحديد خوارزمية ملخص الرسائل HMAC. يعد SHA256 خيارًا جيدًا لهذا:

بعد ذلك، ابحث عن السطر الذي يحتوي على عبارة dh التي تحدد معلمات Diffie-Hellman. نظرًا لبعض التغييرات الأخيرة في EasyRSA، قد يختلف اسم ملف مفتاح Diffie-Hellman عن اسم الملف المدرج في ملف تكوين الخادم النموذجي. إذا لزم الأمر، قم بتغيير اسم الملف المدرج هنا عن طريق حذف 2048 لمطابقته مع مفتاح الخطوة السابقة:

أخيرًا، ابحث عن إعدادات المستخدم والمجموعة واحذف “;” في بداية كل سطر:

حتى الآن، يجب أن تسمح التغييرات التي أجريتها على ملف server.conf النموذجي لـ OpenVPN بالعمل.

الخطوة 6 – تكوين شبكة الخادم

قم بتكوين إعادة توجيه IP لتوجيه حركة المرور بشكل صحيح عبر VPN.  هذا أمر ضروري لوظيفة VPN التي يوفرها خادمك:

ابحث عن السطر المعلق الذي يحدد net.ipv4.ip_forward. قم بإزالة حرف “#” من بداية السطر لإلغاء تعليق هذا الإعداد:

احفظ الملف وأغلقه بمجرد الانتهاء. لقراءة الملف وضبط القيم للجلسة الحالية، اكتب:

sysctl -p

بعد ذلك، أضف واجهة الشبكة العامة لجهازك:

واجهتك العامة هي السلسلة النصية الموجودة في مخرجات هذا الأمر والتي تلي كلمة “dev”. على سبيل المثال، تظهر هذه النتيجة الواجهة المسماة ens3.

default ip route

افتح الملف /etc/ufw/before.rules لإضافة التكوين ذي الصلة:

بالقرب من الجزء العلوي من الملف، أضف الأسطر المميزة أدناه لتعيين السياسة الافتراضية لسلسلة POSTROUTING في جدول nat وإخفاء أي حركة مرور قادمة من VPN. استبدل ens3 في سطر -A POSTROUTING أدناه بالواجهة التي عثرت عليها في الأمر أعلاه:

احفظ الملف وأغلقه بمجرد الانتهاء. بعد ذلك، تحتاج إلى إخبار UFW بالسماح بالحزم الممررة افتراضيًا أيضًا. للقيام بذلك، افتح الملف /etc/default/ufw:

في الداخل، ابحث عن التوجيه DEFAULT_FORWARD_POLICY وقم بتغيير القيمة من DROP إلى ACCEPT:

احفظ الملف وأغلقه عند الانتهاء. بعد ذلك، اضبط جدار الحماية لتمكين حركة المرور إلى OpenVPN. إذا لم تقم بتغيير المنفذ والبروتوكول في الملف /etc/openvpn/server.conf، فستحتاج إلى فتح حركة مرور UDP إلى المنفذ 1194. إذا قمت بتعديل المنفذ و/أو البروتوكول، فاستبدل القيم التي حددتها هنا. في حال نسيت إضافة منفذ SSH عند اتباع البرنامج التعليمي المتطلب سابقًا، فأضفه هنا أيضًا:

بعد إضافة تلك القواعد، قم بتعطيل UFW وإعادة تمكينه لإعادة تشغيله وتحميل التغييرات من جميع الملفات التي قمت بتعديلها:

ufw commands

تهانينا، تم تكوين خادمك الآن للتعامل بشكل صحيح مع حركة مرور OpenVPN!

الخاتمة

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

حوسبة سعيدة!

 

 

author

Akshay Nagpal

المؤلف · CloudSigma

Preslav Dobrev هو مصمم إبداعي في CloudSigma، يركز على هوية أعمال متسقة باستخدام قنوات التسويق التقليدية والمبتكرة. هو بارع في دمج الرؤية الفنية مع التسويق الاستراتيجي لخلق سرد قصصي مؤثر للعلامة التجارية.

التعليقات

لا توجد تعليقات بعد. كن أول من يعلق.