كيفية إعداد VPN قائم على IPsec باستخدام Strongswan على Debian و Ubuntu

strongSwan هو تطبيق مفتوح المصدر ومتعدد المنصات وذو ميزات كاملة وشائع الاستخدام ومبني على بروتوكول IPsec VPN (شبكة افتراضية خاصة) يعمل على نظامي Linux وFreeBSD وOS X وWindows وAndroid وiOS. يعتبر في المقام الأول دايمون لإنشاء المفاتيح الذي يدعم بروتوكولات تبادل المفاتيح عبر الإنترنت (IKEv1 و IKEv2) لإنشاء اتصالات أمان (SA) بين جهازين.

هذه المقالة توضح كيفية إعداد بوابات IPSec VPN بين المواقع باستخدام strongSwan على خوادم Ubuntu و Debian. بواسطة بوابات الموقع إلى الموقع نعني أن لكل بوابة أمان مجموعة فرعية خلفها. بالإضافة إلى ذلك، سيتم المصادقة على بعضها البعض باستخدام مفتاح مشترك مسبق (PSK).

بيئة الاختبار

تذكر أن تقوم بتعويض العناوين الآتية بعناوين الـIP الحقيقية الخاصة بك لتكوين بيئتك.

بوابة الموقع 1 (tecmint-devgateway)

OS 1: Debian or Ubuntu
Public IP: 10.20.20.1
Private IP: 192.168.0.101/24
Private Subnet: 192.168.0.0/24

بوابة الموقع 2 (tecmint-prodgateway)

OS 2: Debian or Ubuntu
Public IP:  10.20.20.3
Private IP: 10.0.2.15/24
Private Subnet: 10.0.2.0/24

الخطوة 1: تمكين إعادة توجيه حزم النواة

1. أولاً، تحتاج إلى تكوين النواة لتمكين إعادة توجيه الحزم عن طريق إضافة المتغيرات النظامية المناسبة في ملف التكوين /etc/sysctl.conf على كل من بوابات الأمان.

$ sudo vim /etc/sysctl.conf

ابحث عن الأسطر التالية وقم بفك التعليق عنها وضع قيمها كما هو موضح (اقرأ التعليقات في الملف للمزيد من المعلومات).

net.ipv4.ip_forward = 1 
net.ipv6.conf.all.forwarding = 1 
net.ipv4.conf.all.accept_redirects = 0 
net.ipv4.conf.all.send_redirects = 0 

2. بعد ذلك، قم بتحميل الإعدادات الجديدة عن طريق تشغيل الأمر التالي.

$ sudo sysctl -p
Load Sysctl Kernel Settings

3. إذا كانت لديك خدمة جدار حماية UFW ممكنة، فستحتاج إلى إضافة القواعد التالية إلى ملف التكوين /etc/ufw/before.rules مباشرة قبل القواعد المرشحة في بوابات الأمان.

بوابة الموقع 1 (tecmint-devgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -s 10.0.2.0/24  -d 192.168.0.0/24 -j MASQUERADE
COMMIT

بوابة الموقع 2 (tecmint-prodgateway)

*nat
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING  -s 192.168.0.0/24 -d 10.0.2.0/24 -j MASQUERADE
COMMIT

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

$ sudo ufw disable 
$ sudo ufw enable

الخطوة 2: تثبيت strongSwan في Debian و Ubuntu

5. قم بتحديث ذاكرة التخزين المؤقت للحزمة على كلتا البوابتين الأمنيتين وقم بتثبيت حزمة strongswan باستخدام مدير الحزم APT.

$ sudo apt update
$ sudo apt install strongswan 

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

$ sudo systemctl status strongswan.service
$ sudo systemctl is-enabled strongswan.service

الخطوة 3: تكوين بوابات الأمان

7. بعد ذلك، تحتاج إلى تكوين بوابات الأمان باستخدام ملف التكوين /etc/ipsec.conf.

بوابة الموقع 1 (tecmint-devgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

انسخ والصق الاعدادات التالية في الملف.

config setup
        charondebug="all"
        uniqueids=yes
conn devgateway-to-prodgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.1
        leftsubnet=192.168.0.101/24
        right=10.20.20.3
        rightsubnet=10.0.2.15/24
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

بوابة الموقع 2 (tecmint-prodgateway)

$ sudo cp /etc/ipsec.conf /etc/ipsec.conf.orig
$ sudo nano /etc/ipsec.conf 

انسخ والصق الاعدادات التالية في الملف.

config setup
        charondebug="all"
        uniqueids=yes
conn prodgateway-to-devgateway
        type=tunnel
        auto=start
        keyexchange=ikev2
        authby=secret
        left=10.20.20.3
        leftsubnet=10.0.2.15/24
        right=10.20.20.1
        rightsubnet=192.168.0.101/24 
        ike=aes256-sha1-modp1024!
        esp=aes256-sha1!
        aggressive=no
        keyingtries=%forever
        ikelifetime=28800s
        lifetime=3600s
        dpddelay=30s
        dpdtimeout=120s
        dpdaction=restart

وهنا معنى كل معلمة في الاعدادات:

  • اعداد التكوين – يحدد معلومات التكوين العامة لبروتوكول IPSec التي تنطبق على جميع الاتصالات.
  • تفعيل التصحيح الأوتوماتيكي – يعرف كم من مخرجات تصحيح Charon يجب تسجيلها.
  • معرفات فريدة – يحدد ما إذا كان يجب الاحتفاظ بمعرف مشارك معين فريدًا.
  • conn prodgateway-to-devgateway – يعرف اسم الاتصال.
  • نوع – يحدد نوع الاتصال.
  • تلقائي – كيفية التعامل مع الاتصال عند بدء أو إعادة تشغيل IPSec.
  • تبادل المفاتيح – يحدد إصدار بروتوكول IKE المستخدم.
  • المصادقة عن طريق – يحدد كيفية مصادقة الأقران على بعضهم البعض.
  • اليسار – يحدد عنوان IP لواجهة الشبكة العامة للمشارك الأيسر.
  • الشبكة الفرعية اليسرى – يحدد الشبكة الفرعية الخاصة خلف المشارك الأيسر.
  • اليمين – يحدد عنوان IP لواجهة الشبكة العامة للمشارك الأيمن.
  • الشبكة الفرعية اليمنى – يحدد الشبكة الفرعية الخاصة خلف المشارك الأيسر.
  • ike – يحدد قائمة من خوارزميات تشفير/المصادقة لاتفاقية تبادل المفاتيح الإنترنت (IKE/ISAKMP) التي يجب استخدامها. يمكنك إضافة قائمة مفصولة بفواصل.
  • esp – يحدد قائمة من خوارزميات تشفير/المصادقة ESP التي يجب استخدامها للاتصال. يمكنك إضافة قائمة مفصولة بفواصل.
  • aggressive – يحدد ما إذا كان يجب استخدام وضع الاتصال القوي (Aggressive) أو الوضع الرئيسي (Main Mode).
  • keyingtries – يحدد عدد المحاولات التي يجب إجراؤها للتفاوض على اتصال.
  • ikelifetime – يحدد مدة صلاحية قناة التبادل الرئيسية للاتصال قبل إعادة التفاوض.
  • lifetime – يحدد مدى صلاحية حالة معينة من الاتصال، من التفاوض الناجح إلى الانتهاء.
  • dpddelay – يحدد فاصل زمني لإرسال رسائل “أنت هنا” (R_U_THERE) أو تبادلات معلوماتية إلى النظير.
  • dpdtimeout – يحدد فاصل زمني مهلة، بعد الذي يتم فيه حذف جميع الاتصالات إلى نظير في حالة الخمول.
  • dpdaction – يحدد كيفية استخدام بروتوكول الكشف عن النظير الميت (DPD) لإدارة الاتصال.

لمزيد من المعلومات حول المعلمات التكوينية أعلاه، اقرأ صفحة الرجل الخاصة بملف ipsec.conf بتشغيل الأمر.

$ man ipsec.conf

الخطوة 4: تكوين PSK للمصادقة من نقطة إلى نقطة

8. بعد تكوين بوابتي الأمان، قم بإنشاء PSK آمن لاستخدامه من قبل النقاط باستخدام الأمر التالي.

$ head -c 24 /dev/urandom | base64
Generate PSK Key

9. بعد ذلك، أضف الـ PSK في ملف /etc/ipsec.secrets على كل من البوابات.

$ sudo vim /etc/ipsec.secrets

انسخ والصق السطر التالي.

------- Site 1 Gateway (tecmint-devgateway) ------- 

10.20.20.1 10.20.20.3 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

------- Site 2 Gateway (tecmint-prodgateway) -------

10.20.20.3  10.20.20.1 : PSK "qLGLTVQOfqvGLsWP75FEtLGtwN3Hu0ku6C5HItKo6ac="

10. أعد تشغيل برنامج IPSec وتحقق من حالته لعرض الاتصالات.

$ sudo ipsec restart
$ sudo ipsec status
View IPSec Connection Status

11. في النهاية، تأكد من أنه يمكنك الوصول إلى الشبكات الفرعية الخاصة من أي من بوابات الأمان عن طريق تشغيل أمر ping.

$ ping 192.168.0.101
$ ping 10.0.2.15
Verify Site-to-Site VPN Setup

12. بالإضافة إلى ذلك، يمكنك إيقاف وبدء تشغيل IPSec كما هو موضح.

$ sudo ipsec stop
$ sudo ipsec start

13. لمعرفة المزيد عن أوامر IPSec لإحضار الاتصالات يدوياً وغير ذلك، راجع صفحة المساعدة الخاصة بـ IPSec.

$ ipsec --help

هذا كل شيء! في هذه المقالة، قدمنا وصفاً لكيفية إعداد VPN IPSec من موقع إلى موقع باستخدام strongSwan على خوادم Ubuntu و Debian، حيث تم تكوين كل من بوابات الأمان للمصادقة على بعضها البعض باستخدام PSK. إذا كانت لديك أي أسئلة أو أفكار للمشاركة، فالرجاء التواصل معنا عبر نموذج التعليقات أدناه.

Source:
https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/