ProHoster > بلوق > إدارة > إعداد المصادقة في شبكة L2TP باستخدام Rutoken EDS 2.0 وRutoken PKI
إعداد المصادقة في شبكة L2TP باستخدام Rutoken EDS 2.0 وRutoken PKI
مشاكل
في الآونة الأخيرة، لم يعرف الكثيرون كيف يعني العمل من المنزل. لقد غيّر الوباء الوضع في العالم بشكل كبير، وبدأ الجميع في التكيف مع الظروف الحالية، وبالتحديد مع حقيقة أن مغادرة المنزل أصبحت ببساطة غير آمنة. واضطر الكثيرون إلى تنظيم العمل من المنزل بسرعة لموظفيهم.
ومع ذلك، فإن الافتقار إلى نهج مختص لاختيار حلول العمل عن بعد يمكن أن يؤدي إلى خسائر لا رجعة فيها. يمكن سرقة كلمات مرور المستخدم، وهذا سيسمح للمهاجم بالاتصال بشكل لا يمكن السيطرة عليه بالشبكة وموارد تكنولوجيا المعلومات الخاصة بالمؤسسة.
ولهذا السبب تزايدت الآن الحاجة إلى إنشاء شبكات VPN موثوقة للشركات. سأخبرك عنه موثوق, آمنة и بسيط في استخدام شبكة VPN.
وهو يعمل وفقًا لنظام IPsec/L2TP، الذي يستخدم مفاتيح وشهادات غير قابلة للاسترداد مخزنة على الرموز المميزة لمصادقة العملاء، وينقل أيضًا البيانات عبر الشبكة في شكل مشفر.
تم استخدام خادم يعمل بنظام التشغيل CentOS 7 (العنوان: Centos.vpn.server.ad) وعميل يعمل بنظام Ubuntu 20.04، بالإضافة إلى عميل يعمل بنظام التشغيل Windows 10، كنماذج توضيحية للتكوين.
وصف النظام
ستعمل شبكة VPN وفقًا لنظام IPSec + L2TP + PPP. بروتوكول بروتوكول نقطة إلى نقطة (PPP) تعمل في طبقة ارتباط البيانات لنموذج OSI وتوفر مصادقة المستخدم وتشفير البيانات المرسلة. يتم تغليف بياناته في بيانات بروتوكول L2TP، والذي يضمن في الواقع إنشاء اتصال في شبكة VPN، ولكنه لا يوفر المصادقة والتشفير.
يتم تغليف بيانات L2TP في IPSec، الذي يوفر أيضًا المصادقة والتشفير، ولكن على عكس PPP، تحدث المصادقة والتشفير على مستوى الجهاز، وليس على مستوى المستخدم.
تتيح لك هذه الميزة مصادقة المستخدمين من أجهزة معينة فقط. سوف نستخدم بروتوكول IPSec كما هو ونسمح بمصادقة المستخدم من أي جهاز.
سيتم إجراء مصادقة المستخدم باستخدام البطاقات الذكية على مستوى بروتوكول PPP باستخدام بروتوكول EAP-TLS.
يمكن العثور على مزيد من المعلومات التفصيلية حول تشغيل هذه الدائرة في هذا المقال.
لماذا يلبي هذا المخطط المتطلبات الثلاثة لشبكة VPN جيدة؟
تم اختبار موثوقية هذا المخطط بمرور الوقت. وقد تم استخدامه لنشر شبكات VPN منذ عام 2000.
يتم توفير مصادقة المستخدم الآمنة من خلال بروتوكول PPP. التنفيذ القياسي لبروتوكول الشراكة بين القطاعين العام والخاص الذي طوره بول ماكيراس لا يوفر مستوى كاف من الأمان، لأن للمصادقة، في أفضل الأحوال، يتم استخدام المصادقة باستخدام تسجيل الدخول وكلمة المرور. نعلم جميعًا أنه يمكن التجسس على كلمة مرور تسجيل الدخول أو تخمينها أو سرقتها. ومع ذلك، لفترة طويلة الآن المطور جان جوست كييسر в تنفيذها قام هذا البروتوكول بتصحيح هذه المشكلة وإضافة القدرة على استخدام البروتوكولات المستندة إلى التشفير غير المتماثل، مثل EAP-TLS، للمصادقة. بالإضافة إلى ذلك، أضاف إمكانية استخدام البطاقات الذكية للمصادقة، مما جعل النظام أكثر أمانًا.
تجري حاليًا مفاوضات نشطة لدمج هذين المشروعين ويمكنك التأكد من أن هذا سيحدث عاجلاً أم آجلاً على أي حال. على سبيل المثال، كانت هناك نسخة مصححة من PPP في مستودعات Fedora لفترة طويلة، باستخدام بروتوكولات آمنة للمصادقة.
حتى وقت قريب، لم يكن من الممكن استخدام هذه الشبكة إلا من قبل مستخدمي Windows، لكن زملاءنا من جامعة موسكو الحكومية فاسيلي شوكوف وألكسندر سميرنوف وجدوا مشروع عميل L2TP القديم لنظام التشغيل Linux وتعديله. قمنا معًا بإصلاح العديد من الأخطاء وأوجه القصور في عمل العميل، وقمنا بتبسيط عملية تثبيت النظام وتكوينه، حتى عند البناء من المصدر. وأهمها هي:
تم إصلاح مشاكل التوافق الخاصة بالعميل القديم مع واجهة الإصدارات الجديدة من opensl وqt.
تمت إزالة pppd من تمرير رمز PIN المميز من خلال ملف مؤقت.
تم إصلاح التشغيل غير الصحيح لبرنامج طلب كلمة المرور من خلال الواجهة الرسومية. تم ذلك عن طريق تثبيت البيئة الصحيحة لخدمة xl2tpd.
يتم الآن تنفيذ إنشاء البرنامج الخفي L2tpIpsecVpn مع إنشاء العميل نفسه، مما يبسط عملية الإنشاء والتكوين.
لسهولة التطوير، تم توصيل نظام Azure Pipelines لاختبار صحة البنية.
تمت إضافة القدرة على فرض الرجوع إلى إصدار أقدم مستوى الأمان في سياق opensl. يعد هذا مفيدًا لدعم أنظمة التشغيل الجديدة بشكل صحيح حيث يتم تعيين مستوى الأمان القياسي على 2، مع شبكات VPN التي تستخدم شهادات لا تفي بمتطلبات الأمان لهذا المستوى. سيكون هذا الخيار مفيدًا للعمل مع شبكات VPN القديمة الموجودة.
يدعم هذا العميل استخدام البطاقات الذكية للمصادقة، كما أنه يخفي قدر الإمكان جميع الصعوبات والمصاعب المرتبطة بإعداد هذا المخطط في نظام التشغيل Linux، مما يجعل إعداد العميل بسيطًا وسريعًا قدر الإمكان.
بالطبع، للحصول على اتصال مناسب بين PPP وواجهة المستخدم الرسومية للعميل، لم يكن من الممكن بدون تعديلات إضافية على كل مشروع، ولكن مع ذلك تم تصغيرها وتقليلها إلى الحد الأدنى:
مُثَبَّت خطأ في ترتيب تحميل التكوين وتهيئة سياق opensl. لم يسمح لنا هذا الخطأ بتحميل أي شيء من ملف التكوين /etc/ppp/openssl.cnf المحلي باستثناء المعلومات حول محركات openssl للعمل مع البطاقات الذكية، الأمر الذي كان يمثل إزعاجًا خطيرًا إذا، على سبيل المثال، بالإضافة إلى معلومات حول المحركات، أردنا تعيين شيء آخر. على سبيل المثال، قم بإصلاح مستوى الأمان عند إنشاء اتصال.
سنقوم أيضًا بتعيين كلمة مرور تسجيل دخول مشتركة. يجب أن تكون كلمة المرور المشتركة معروفة لجميع المشاركين في الشبكة للمصادقة. من الواضح أن هذه الطريقة غير موثوقة، لأنها يمكن أن تصبح كلمة المرور هذه معروفة بسهولة للأفراد الذين لا نريد أن نوفر لهم إمكانية الوصول إلى الشبكة.
ومع ذلك، حتى هذه الحقيقة لن تؤثر على أمن الشبكة، لأن يتم تنفيذ التشفير الأساسي للبيانات ومصادقة المستخدم بواسطة بروتوكول PPP. ولكن في الإنصاف، تجدر الإشارة إلى أن Strongswan يدعم تقنيات المصادقة الأكثر أمانا، على سبيل المثال، باستخدام المفاتيح الخاصة. تتمتع Strongswan أيضًا بالقدرة على توفير المصادقة باستخدام البطاقات الذكية، ولكن حتى الآن لا يتم دعم سوى مجموعة محدودة من الأجهزة، وبالتالي لا تزال المصادقة باستخدام رموز Rutoken والبطاقات الذكية صعبة. لنقم بتعيين كلمة مرور عامة عبر الملف /etc/strongswan/ipsec.secrets:
[global]
force userspace = yes
listen-addr = 0.0.0.0
ipsec saref = yes
[lns default]
exclusive = no
; определяет статический адрес сервера в виртуальной сети
local ip = 100.10.10.1
; задает диапазон виртуальных адресов
ip range = 100.10.10.1-100.10.10.254
assign ip = yes
refuse pap = yes
require authentication = yes
; данную опцию можно отключить после успешной настройки сети
ppp debug = yes
length bit = yes
pppoptfile = /etc/ppp/options.xl2tpd
; указывает адрес сервера в сети
name = centos.vpn.server.ad
#директория с сертификатами пользователей, УЦ и сервера
sudo mkdir /etc/ppp/certs
#директория с закрытыми ключами сервера и УЦ
sudo mkdir /etc/ppp/keys
#запрещаем любой доступ к этой дирректории кроме администатора
sudo chmod 0600 /etc/ppp/keys/
#генерируем ключ и выписываем сертификат УЦ
sudo openssl genrsa -out /etc/ppp/keys/ca.pem 2048
sudo openssl req -key /etc/ppp/keys/ca.pem -new -x509 -out /etc/ppp/certs/ca.pem -subj "/C=RU/CN=L2TP CA"
#генерируем ключ и выписываем сертификат сервера
sudo openssl genrsa -out /etc/ppp/keys/server.pem 2048
sudo openssl req -new -out server.req -key /etc/ppp/keys/server.pem -subj "/C=RU/CN=centos.vpn.server.ad"
sudo openssl x509 -req -in server.req -CAkey /etc/ppp/keys/ca.pem -CA /etc/ppp/certs/ca.pem -out /etc/ppp/certs/server.pem -CAcreateserial
وبذلك نكون قد انتهينا من إعداد الخادم الأساسي. تتضمن بقية تكوين الخادم إضافة عملاء جدد.
إضافة عميل جديد
لإضافة عميل جديد إلى الشبكة، يجب عليك إضافة شهادته إلى قائمة العملاء الموثوق بهم لهذا العميل.
إذا أراد المستخدم أن يصبح عضوًا في شبكة VPN، فإنه يقوم بإنشاء زوج مفاتيح وتطبيق شهادة لهذا العميل. إذا كان المستخدم موثوقًا به، فيمكن توقيع هذا التطبيق، ويمكن كتابة الشهادة الناتجة في دليل الشهادات:
هذه الطريقة أكثر عالمية لأنها يسمح لك بإنشاء مفتاح وشهادة سيتم التعرف عليهما بنجاح بواسطة مستخدمي Windows وLinux، ولكنه يتطلب جهازًا يعمل بنظام Windows لتنفيذ إجراء إنشاء المفتاح.
قبل إنشاء الطلبات واستيراد الشهادات، يجب عليك إضافة الشهادة الجذرية لشبكة VPN إلى قائمة الشهادات الموثوقة. للقيام بذلك، افتحه وفي النافذة التي تفتح، حدد خيار "تثبيت الشهادة":
في النافذة التي تفتح، حدد تثبيت شهادة للمستخدم المحلي:
لنقم بتثبيت الشهادة في مخزن الشهادات الجذر الموثوق به في CA:
وبعد كل هذه الإجراءات، نتفق مع جميع النقاط الأخرى. تم تكوين النظام الآن.
بعد ذلك، سنقوم بإنشاء زوج مفاتيح وإنشاء تطبيق للشهادة. للقيام بذلك، افتح بوويرشيل وأدخل الأمر التالي:
certreq.exe -new -pin $PIN .cert.tmp .client.req
أرسل التطبيق الذي تم إنشاؤه Client.req إلى المرجع المصدق الخاص بك وانتظر حتى يتم استلام شهادة Client.pem. يمكن كتابته إلى رمز مميز وإضافته إلى مخزن شهادات Windows باستخدام الأمر التالي:
certreq.exe -accept .client.pem
تجدر الإشارة إلى أنه يمكن إعادة إنتاج إجراءات مماثلة باستخدام الواجهة الرسومية لبرنامج MMC، ولكن هذه الطريقة تستغرق وقتًا أطول وأقل قابلية للبرمجة.
إعداد عميل أوبونتو
ملحوظة
يستغرق إعداد عميل على Linux وقتًا طويلاً حاليًا، لأن... يتطلب بناء برامج منفصلة عن المصدر. سنحاول التأكد من تضمين جميع التغييرات في المستودعات الرسمية في المستقبل القريب.
لضمان الاتصال على مستوى IPSec بالخادم، يتم استخدام حزمة strongswan والبرنامج الخفي xl2tp. لتبسيط الاتصال بالشبكة باستخدام البطاقات الذكية، سنستخدم حزمة l2tp-ipsec-vpn، التي توفر غلافًا رسوميًا لإعداد اتصال مبسط.
لنبدأ بتجميع العناصر خطوة بخطوة، ولكن قبل ذلك سنقوم بتثبيت جميع الحزم اللازمة لكي تعمل VPN مباشرة:
sudo apt-get install xl2tpd strongswan libp11-3
تثبيت البرنامج للعمل مع الرموز
قم بتثبيت أحدث مكتبة librtpkcs11ecp.so من сайтаوكذلك مكتبات العمل بالبطاقات الذكية:
sudo apt-get -y install git make gcc libssl-dev
git clone "https://github.com/jjkeijser/ppp"
cd ppp
./configure --prefix /usr
make -j4
sudo make install
تثبيت عميل L2tpIpsecVpn
في الوقت الحالي، يحتاج العميل أيضًا إلى التجميع من كود المصدر. ويتم ذلك باستخدام تسلسل الأوامر التالي:
sudo apt-get -y install git qt5-qmake qt5-default build-essential libctemplate-dev libltdl-dev
git clone "https://github.com/Sander80/l2tp-ipsec-vpn"
cd l2tp-ipsec-vpn
make -j4
sudo make install
إعداد عميل L2tpIpsecVpn
قم بتشغيل العميل المثبت:
بعد الإطلاق، يجب أن يتم فتح برنامج L2tpIpsecVPN. انقر بزر الماوس الأيمن عليه وقم بتكوين الاتصال:
للعمل مع الرموز المميزة، أولا وقبل كل شيء، نشير إلى المسار إلى محرك opensc لمحرك OpenSSL ومكتبة PKCS#11. للقيام بذلك، افتح علامة التبويب "التفضيلات" لتكوين معلمات openssl:
.
دعنا نغلق نافذة إعدادات OpenSSL وننتقل إلى إعداد الشبكة. لنقم بإضافة شبكة جديدة من خلال النقر على الزر "إضافة..." في لوحة الإعدادات وإدخال اسم الشبكة:
بعد ذلك، ستصبح هذه الشبكة متاحة في لوحة الإعدادات. انقر نقرًا مزدوجًا بزر الماوس الأيمن على الشبكة الجديدة لتكوينها. في علامة التبويب الأولى، تحتاج إلى إجراء إعدادات IPsec. لنقم بتعيين عنوان الخادم والمفتاح العام:
بعد ذلك، انتقل إلى علامة التبويب إعدادات PPP وأشر هناك إلى اسم المستخدم الذي نريد الوصول إلى الشبكة من خلاله:
بعد ذلك، افتح علامة التبويب "خصائص" وحدد المسار إلى المفتاح وشهادة العميل والمرجع المصدق (CA):
دعونا نغلق علامة التبويب هذه ونجري الإعدادات النهائية؛ للقيام بذلك، افتح علامة التبويب "إعدادات IP" وحدد المربع بجوار خيار "الحصول على عنوان خادم DNS تلقائيًا":
سيسمح هذا الخيار للعميل بتلقي عنوان IP شخصي داخل الشبكة من الخادم.
بعد الانتهاء من كافة الإعدادات، أغلق جميع علامات التبويب وأعد تشغيل العميل:
الاتصال بالشبكة
بعد الإعدادات، يمكنك الاتصال بالشبكة. للقيام بذلك، افتح علامة تبويب التطبيق الصغير وحدد الشبكة التي نريد الاتصال بها:
أثناء عملية إنشاء الاتصال، سيطلب منا العميل إدخال رمز Rutoken PIN:
إذا ظهر إشعار في شريط الحالة يفيد بأنه تم إنشاء الاتصال بنجاح، فهذا يعني أن الإعداد كان ناجحًا:
خلاف ذلك، فمن المفيد معرفة سبب عدم إنشاء الاتصال. للقيام بذلك، يجب عليك إلقاء نظرة على سجل البرنامج عن طريق تحديد أمر "معلومات الاتصال" في التطبيق الصغير:
إعداد عميل Windows
يعد إعداد العميل على Windows أسهل بكثير من إعداده على Linux، لأن... جميع البرامج الضرورية مدمجة بالفعل في النظام.
إعداد النظام
سنقوم بتثبيت جميع برامج التشغيل اللازمة للعمل مع Rutokens عن طريق تنزيلها من ل. موقع.
استيراد شهادة الجذر للمصادقة
قم بتنزيل شهادة جذر الخادم وتثبيتها على النظام. للقيام بذلك، افتحه وفي النافذة التي تفتح، حدد خيار "تثبيت الشهادة":
في النافذة التي تفتح، حدد تثبيت شهادة للمستخدم المحلي. إذا كنت تريد أن تكون الشهادة متاحة لجميع المستخدمين على الكمبيوتر، فيجب عليك اختيار تثبيت الشهادة على الكمبيوتر المحلي:
لنقم بتثبيت الشهادة في مخزن الشهادات الجذر الموثوق به في CA:
وبعد كل هذه الإجراءات، نتفق مع جميع النقاط الأخرى. تم تكوين النظام الآن.
إعداد اتصال VPN
لإعداد اتصال VPN، انتقل إلى لوحة التحكم وحدد خيار إنشاء اتصال جديد.
في النافذة المنبثقة، حدد خيار إنشاء اتصال للاتصال بمكان عملك:
في النافذة التالية، حدد اتصال VPN:
وأدخل تفاصيل اتصال VPN، وحدد أيضًا خيار استخدام البطاقة الذكية:
الإعداد لم يكتمل بعد. كل ما تبقى هو تحديد المفتاح المشترك لبروتوكول IPsec؛ للقيام بذلك، انتقل إلى علامة التبويب "إعدادات اتصال الشبكة" ثم انتقل إلى علامة التبويب "خصائص هذا الاتصال":
في النافذة التي تفتح، انتقل إلى علامة التبويب "الأمان"، وحدد "شبكة L2TP/IPsec" كنوع الشبكة وحدد "الإعدادات المتقدمة":
في النافذة التي تفتح، حدد مفتاح IPsec المشترك:
Подключение
بعد الانتهاء من الإعداد، يمكنك محاولة الاتصال بالشبكة:
أثناء عملية الاتصال، سيُطلب منا إدخال رمز PIN المميز:
لقد أنشأنا شبكة VPN آمنة وتأكدنا من أن الأمر ليس صعبًا.
شكر وتقدير
أود مرة أخرى أن أشكر زملائنا فاسيلي شوكوف وألكسندر سميرنوف على العمل الذي قاموا به معًا لتبسيط إنشاء اتصالات VPN لعملاء Linux.