
لقد تم بالفعل وصف بعض أمثلة شبكات WiFi للشركات. سوف أصف هنا كيفية تطبيق حل مشابه والمشكلات التي واجهتني عند الاتصال على أجهزة مختلفة. سوف نستخدم LDAP الحالي مع المستخدمين المعتمدين ، ورفع FreeRadius وتكوين WPA2-Enterprise على وحدة تحكم Ubnt. يبدو أن كل شيء بسيط. لنرى ...
قليلا عن أساليب EAP
قبل متابعة المهمة ، نحتاج إلى تحديد طريقة المصادقة التي سنستخدمها في حلنا.
من ويكيبيديا:EAP هو إطار مصادقة يستخدم غالبًا في الشبكات اللاسلكية والاتصالات من نقطة إلى نقطة. تم وصف التنسيق لأول مرة في RFC 3748 وتم تحديثه في RFC 5247.
يستخدم EAP لتحديد طريقة المصادقة ، ومفاتيح النقل ، ومعالجة هذه المفاتيح مع المكونات الإضافية التي تسمى أساليب EAP. هناك العديد من أساليب EAP ، سواء تم تعريفها باستخدام EAP نفسه وتلك التي تم إصدارها بواسطة الشركات المصنعة الفردية. لا يحدد EAP طبقة الارتباط ، لكنه يحدد فقط تنسيق الرسالة. كل بروتوكول يستخدم EAP له بروتوكول خاص به لتغليف رسائل EAP.
الأساليب نفسها:- LEAP هو بروتوكول خاص تم تطويره بواسطة CISCO. نقاط الضعف الموجودة. حاليا غير مستحسن
- يتم دعم EAP-TLS جيدًا بين البائعين اللاسلكي. إنه بروتوكول آمن لأنه الخلف لمعايير SSL. إعداد العميل معقد للغاية. بحاجة إلى شهادة عميل بالإضافة إلى كلمة المرور. معتمد على العديد من الأنظمة
- يوفر EAP-TTLS - المدعوم على نطاق واسع في العديد من الأنظمة ، أمانًا جيدًا باستخدام شهادات PKI فقط على خادم المصادقة
- EAP-MD5 هو معيار مفتوح آخر. يوفر الحد الأدنى من الأمن. الضعيفة ، لا يدعم المصادقة المتبادلة وتوليد المفتاح
- EAP-IKEv2 - استنادًا إلى الإصدار 2. من بروتوكول تبادل مفاتيح الإنترنت. يوفر المصادقة المتبادلة وإنشاء مفتاح الجلسة بين العميل والخادم
- PEAP هو حل CISCO و Microsoft و RSA Security مشترك كمعيار مفتوح. متوفر على نطاق واسع في المنتجات ، ويوفر سلامة جيدة للغاية. على غرار EAP-TTLS ، التي تتطلب شهادة من جانب الخادم فقط
- PEAPv0 / EAP-MSCHAPv2 - بعد EAP-TLS ، هو المعيار الثاني المستخدم على نطاق واسع في العالم. تستخدم العلاقة بين العميل والخادم في Microsoft و Cisco و Apple و Linux
- PEAPv1 / EAP-GTC - تم إنشاؤها بواسطة Cisco كبديل عن PEAPv0 / EAP-MSCHAPv2. لا يحمي بيانات المصادقة بأي شكل من الأشكال. غير معتمد على نظام التشغيل ويندوز
- EAP-FAST هي طريقة تم تطويرها بواسطة Cisco لتصحيح أوجه قصور LEAP. يستخدم بيانات اعتماد الوصول المحمي (PAC). غير مطور بالكامل
من بين كل هذا التنوع ، لا يزال الخيار غير رائع. طريقة المصادقة مطلوبة: أمان جيد ، دعم على جميع الأجهزة (ويندوز 10 ، ماك ، لينوكس ، أندرويد ، آي أو إس) ، وفي الواقع ، كلما كان ذلك أفضل. لذلك ، وقع الاختيار على EAP-TTLS بالتزامن مع بروتوكول PAP.
ربما يكون السؤال الذي يطرح نفسه - لماذا استخدام PAP؟ لأنه ينقل كلمات المرور في نص واضح؟
نعم هذا صحيح. سيتم التواصل بين FreeRadius و FreeIPA بهذه الطريقة. في وضع التصحيح ، يمكنك تتبع كيفية إرسال اسم المستخدم وكلمة المرور. نعم ، والسماح لهم بالرحيل ، فقط لديك حق الوصول إلى خادم FreeRadius.
اقرأ المزيد عن عمل EAP-TTLS
هنا.
FreeRADIUS
سنرفع FreeRadius على CentOS 7.6. لا شيء معقد هنا ، تعيين بالطريقة المعتادة.
yum install freeradius freeradius-utils freeradius-ldap -y
من الحزم ، يتم تثبيت الإصدار 3.0.13. يمكن أن تؤخذ الأخيرة في https://freeradius.org/بعد ذلك ، FreeRadius يعمل بالفعل. يمكنك uncomment السطر في / etc / raddb / المستخدمين
steve Cleartext-Password := "testing"
تشغيل في الخادم في وضع التصحيح
freeradius -X
والقيام اتصال اختبار مع المضيف المحلي
radtest steve testing 127.0.0.1 1812 testing123
حصلت على استجابة ،
تلقى معرف قبول 115 من 127.0.0.1:1812 إلى 127.0.0.1►6081 بطول 20 ، ثم كل شيء على ما يرام. المضي قدما.
نحن ربط وحدة
ldap .
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
وعلى الفور تغييره. نحن بحاجة إلى FreeRadius للوصول إلى FreeIPA
تعديل - تمكين / LDAP ldap { server="ldap://ldap.server.com" port=636 start_tls=yes identity="uid=admin,cn=users,dc=server,dc=com" password=********** base_dn="cn=users,dc=server,dc=com" set_auth_type=yes ... user { base_dn="${..base_dn}" filter="(uid=%{%{Stripped-User-Name}:-%{User-Name}})" } ...
نقوم بإعادة تشغيل خادم radius ونتحقق من مزامنة مستخدمي LDAP:
radtest user_ldap password_ldap localhost 1812 testing123
تحرير eap في
تعديل / eapإضافة حالتين eap هنا. سوف تختلف فقط في الشهادات والمفاتيح. سأشرح لك السبب أدناه
تعديل- تمكين / eap eap eap-client { default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests} tls-config tls-common { private_key_file = ${certdir}/fisrt.key certificate_file = ${certdir}/first.crt dh_file = ${certdir}/dh ca_path = ${cadir} cipher_list = "HIGH" cipher_server_preference = no ecdh_curve = "prime256v1" check_crl = no } ttls { tls = tls-common default_eap_type = md5 copy_request_to_tunnel = no use_tunneled_reply = yes virtual_server = "inner-tunnel" } } eap eap-guest { default_eap_type = ttls timer_expire = 60 ignore_unknown_eap_types = no cisco_accounting_username_bug = no max_sessions = ${max_requests} tls-config tls-common { private_key_passwotd=blablabla private_key_file = ${certdir}/server.key certificate_file = ${certdir}/server.crt dh_file = ${certdir}/dh ca_path = ${cadir} cipher_list = "HIGH" cipher_server_preference = no ecdh_curve = "prime256v1" check_crl = no } ttls { tls = tls-common default_eap_type = md5 copy_request_to_tunnel = no use_tunneled_reply = yes virtual_server = "inner-tunnel" } }
بعد ذلك ، قم بتعديل
تمكين الموقع / الافتراضي . المهتمين في أقسام المصادقة والمصادقة.
تمكين الموقع / الافتراضي authorize { filter_username preprocess if (&User-Name == "guest") { eap-guest { ok = return } } elsif (&User-Name == "client") { eap-client { ok = return } } else { eap-guest { ok = return } } ldap if ((ok || updated) && User-Password) { update { control:Auth-Type := ldap } } expiration logintime pap } authenticate { Auth-Type LDAP { ldap } Auth-Type eap-guest { eap-guest } Auth-Type eap-client { eap-client } pap }
في قسم التفويض ، نزيل جميع الوحدات التي لا نحتاج إليها. ترك LDAP فقط. نضيف التحقق من العميل عن طريق اسم المستخدم. لهذا السبب أضفنا الحالتين السابقتين.
متعدد eapوالحقيقة هي أنه من خلال ربط بعض الأجهزة سوف نستخدم شهادات النظام والإشارة إلى المجال. لدينا شهادة ومفتاح من مرجع مصدق موثوق به. شخصيا ، في رأيي ، فإن إجراء الاتصال هذا أسهل من إلقاء شهادة موقعة ذاتيا على كل جهاز. لكن حتى بدون الشهادات الموقعة ذاتيا ، فإنها لم تنجح. لا تعرف أجهزة Samsung و Android = <6 إصدارات كيفية استخدام شهادات النظام. لذلك ، بالنسبة لهم نحن إنشاء مثيل منفصل من eap-guest مع شهادات موقعة ذاتيا. بالنسبة إلى جميع الأجهزة الأخرى ، سنستخدم eap-client بشهادة موثوق بها. يتم تحديد اسم المستخدم حسب الحقل مجهول عند توصيل الجهاز. يُسمح فقط بثلاثة قيم: ضيف ، عميل وحقل فارغ. تم تجاهل الباقي. تم تكوين هذا في السياسات. سأقدم مثالًا لاحقًا
تحرير تخويل ومصادقة المقاطع في
نفق الموقع / تمكين الداخليةتمكين الموقع / النفق الداخلي authorize { filter_username filter_inner_identity update control { &Proxy-To-Realm := LOCAL } ldap if ((ok || updated) && User-Password) { update { control:Auth-Type := ldap } } expiration digest logintime pap } authenticate { Auth-Type eap-guest { eap-guest } Auth-Type eap-client { eap-client } Auth-Type PAP { pap } ldap }
بعد ذلك ، يلزمك تحديد السياسات التي يمكن استخدامها لتسجيل الدخول المجهول. تعديل
السياسة / مرشح .
تحتاج إلى العثور على خطوط مشابهة لهذا:
if (&outer.request:User-Name !~ /^(anon|@)/) { update request { Module-Failure-Message = "User-Name is not anonymized" } reject }
وتضيف في السيف القيم اللازمة:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) { update request { Module-Failure-Message = "User-Name is not anonymized" } reject }
الآن نحن بحاجة إلى الانتقال إلى دليل
certs . تحتاج هنا إلى وضع المفتاح والشهادة من مرجع مصدق موثوق به ، والذي لدينا بالفعل وتحتاج إلى إنشاء شهادات موقعة ذاتيا لـ eap-guest.
تغيير المعلمات في ملف
ca.cnf .
ca.cnf ... default_days = 3650 default_md = sha256 ... input_password = blablabla output_password = blablabla ... countryName = RU stateOrProvinceNmae = State localityNmae = City organizationName = NONAME emailAddress = admin@admin.ru commonName = "CA FreeRadius"
يتم تحديد نفس القيم في ملف
server.cnf . نحن نغير فقط
الاسم الشائع :
server.cnf ... default_days = 3650 default_md = sha256 ... input_password = blablabla output_password = blablabla ... countryName = RU stateOrProvinceNmae = State localityNmae = City organizationName = NONAME emailAddress = admin@admin.ru commonName = "Server Certificate FreeRadius"
نخلق:
make
القيام به. تم تسجيل
server.crt و
server.key الناتج بالفعل في الضيف eap.
أخيرًا ، أضف نقاط الوصول الخاصة بنا إلى ملف
client.conf . لديّ 7. ولمنع إضافة كل نقطة على حدة ، سنقوم بتسجيل الشبكة التي توجد فيها فقط (نقاط الوصول الخاصة بي موجودة في شبكة محلية ظاهرية منفصلة).
client APs { ipaddr = 192.168.100.0/24 password = password_AP }
Ubiquiti تحكم
على وحدة تحكم نرفع شبكة منفصلة. فليكن 192.168.2.0/24
انتقل إلى الإعدادات -> الملف الشخصي. إنشاء واحدة جديدة:

نكتب عنوان ومنفذ خادم نصف القطر وكلمة المرور التي تم تسجيلها في ملف
clients.conf :

إنشاء اسم لاسلكي جديد. كطريقة مصادقة ، حدد WPA-EAP (Enterprise) وحدد ملف تعريف نصف القطر الذي تم إنشاؤه:

نحن حفظ والتطبيق والمضي قدما.
إعداد العملاء
لنبدأ بالأصعب!
ويندوز 10
يتلخص التعقيد في حقيقة أن Windows لا يزال غير قادر على الاتصال بشبكة WiFi للشركات حسب المجال. لذلك ، يتعين عليك تحميل شهادتنا يدويًا إلى متجر التوثيق. هنا يمكنك استخدام كل من التوقيع الذاتي ومن المرجع المصدق. سأستخدم الثانية.
بعد ذلك ، تحتاج إلى إنشاء اتصال جديد. للقيام بذلك ، انتقل إلى إعدادات الشبكة والإنترنت -> مركز الشبكة والمشاركة -> إنشاء وتكوين اتصال أو شبكة جديدة:



قم بتسجيل اسم الشبكة يدويًا وتغيير نوع الأمان. بعد أن نقر على
تغيير إعدادات الاتصال وفي قسم الأمان ، نختار مصادقة الشبكة - EAP-TTLS.



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

بعد ذلك ، انتقل إلى المعلمات الإضافية ، ضع علامة اختيار على "تحديد وضع المصادقة". حدد العنصر "مصادقة المستخدم" وانقر على
حفظ بيانات الاعتماد . هنا ستحتاج إلى إدخال username_ldap و password_ldap



نحن حفظ ، تطبيق ، إغلاق كل شيء. يمكنك الاتصال بالشبكة الجديدة.
لينكس
لقد اختبرت في Ubuntu 18.04 ، 18.10 ، Fedora 29 ، 30.
للبدء ، قم بتنزيل شهادة. لم أجد في Linux ما إذا كان من الممكن استخدام شهادات النظام وما إذا كان هناك مثل هذا التخزين على الإطلاق.
سوف نتواصل حسب المجال. لذلك ، تحتاج إلى شهادة من مركز الشهادات الذي تم شراء الشهادة منه.
كل اتصال يتم في نافذة واحدة. اختر شبكتنا:
مجهول - العميل
المجال - المجال الذي تصدر منه الشهادة
الروبوت
غير سامسونج
من الإصدار 7 ، عند الاتصال بشبكة WiFi ، يمكنك استخدام شهادات النظام عن طريق تحديد المجال فقط:
المجال - المجال الذي تصدر منه الشهادة
مجهول - العميل
سامسونج
كما سبق ذكره أعلاه ، لا تعرف أجهزة Samsung كيفية استخدام شهادات النظام عند توصيل WiFi ، وليس لديهم القدرة على الاتصال حسب المجال. لذلك ، يجب إضافة شهادة الجذر لمرجع المصادقة يدويًا (ca.pem ، نأخذها على خادم Radius). هنا سوف تستخدم موقعة ذاتيا.
قم بتنزيل الشهادة على جهازك وتثبيتها.
عند تثبيت الشهادة ، يمكنك المتابعة إلى الاتصال:
شهادة - تشير إلى تلك التي تم تثبيتها
مستخدم مجهول - ضيف
ماك
يمكن لأجهزة Apple من خارج الصندوق الاتصال بـ EAP-TLS فقط ، ولكن لا يزال يتعين عليك إسقاط شهادة إليها. لتحديد طريقة اتصال مختلفة ، تحتاج إلى استخدام Apple Configurator 2. وفقًا لذلك ، يجب عليك أولاً تنزيله على الخشخاش وإنشاء ملف تعريف جديد وإضافة جميع إعدادات WiFi الضرورية.
ابل مكون
هنا نشير إلى اسم شبكتك
نوع الأمان - WPA2 Enterprise
أنواع EAP المقبولة - TTLS
اسم المستخدم وكلمة المرور - اتركه فارغا
المصادقة الداخلية - PAP
الهوية الخارجية - العميل
علامة تبويب الثقة. هنا نشير إلى مجالناهذا كل شيء. يمكن حفظ ملف تعريف وتوقيعه وتوزيعه على الأجهزة
بعد أن يصبح ملف التعريف جاهزًا ، يجب تنزيله على الخشخاش وتثبيته. أثناء عملية التثبيت ، ستحتاج إلى تحديد مستخدم usernmae_ldap و password_ldap:



دائرة الرقابة الداخلية
هذه العملية تشبه ماك. تحتاج إلى استخدام ملف تعريف (يمكنك فقط استخدام نفس نظام التشغيل macOS. كيفية إنشاء ملف تعريف في Apple Configurator ، انظر أعلاه).
قم بتنزيل ملف التعريف ، التثبيت ، إدخال بيانات الاعتماد ، الاتصال:






هذا كل شيء. أنشأنا خادم Radius ، وقمنا بمزامنته مع FreeIPA ، وأخبرنا نقاط وصول Ubiquiti باستخدام WPA2-EAP.
أسئلة محتملة
س: كيفية نقل الملف الشخصي / شهادة إلى الموظف؟
ج: جميع الشهادات / الملفات الشخصية التي أقوم بتخزينها على بروتوكول نقل الملفات مع إمكانية الوصول إليها عبر الويب. أثارت شبكة الضيف مع الحد الأقصى للسرعة والوصول إلى الإنترنت فقط ، باستثناء بروتوكول نقل الملفات.
تستمر المصادقة يومين ، وبعد ذلك تتم إعادة تعيينهما ويترك العميل بدون الإنترنت. وهكذا عندما يرغب أحد الموظفين في الاتصال بشبكة WiFi ، يقوم أولاً بالاتصال بشبكة الضيف ، وزيارة بروتوكول نقل الملفات ، وتنزيل الشهادة أو ملف التعريف الذي يحتاجه ، وتثبيته ، ثم يمكنه الاتصال بشبكة الشركة.
س: لماذا لا تستخدم مخطط مع MSCHAPv2؟ هي أكثر أمانا!
ج: أولاً ، هذا المخطط يعمل بشكل جيد على NPS (نظام سياسة شبكة Windows) ، في تطبيقنا ، من الضروري أيضًا تكوين LDAP (FreeIpa) وتخزين تجزئات كلمة المرور على الخادم. إضافات. الإعدادات غير مستحسن ، لأن هذا يمكن أن يؤدي إلى مشاكل مختلفة من تزامن الموجات فوق الصوتية. ثانياً ، البعثرة هي MD4 ، وبالتالي فإن هذا لا يؤدي إلى زيادة الأمان.
س: هل من الممكن تخويل الأجهزة عن طريق عناوين mac؟
ج: لا ، هذا غير آمن ، يمكن للمهاجم محاكاة ساخرة لعناوين الخشخاش ، وعلاوة على ذلك ، لا يتم اعتماد التفويض لعناوين الخشخاش في العديد من الأجهزة
س: لماذا استخدام كل هذه الشهادات؟ يمكنك الاتصال بدونها
ج: تستخدم الشهادات لتخويل الخادم. أي يفحص الجهاز ، عند الاتصال ، ما إذا كان هو الخادم الذي يمكن الوثوق به أم لا. إذا كان أحد ، ثم يذهب المصادقة أبعد ، إذا لم يكن كذلك ، يتم إغلاق الاتصال. يمكنك الاتصال بدون شهادات ، ولكن إذا قام أحد المهاجمين أو أحد الجيران باختيار خادم دائرة نصف قطر ونقطة وصول بنفس اسم ملكنا ، يمكنه بسهولة اعتراض بيانات اعتماد المستخدم (لا تنس أن يتم نقلها بنص واضح). وعندما يتم استخدام الشهادة ، سيرى العدو في سجلاتنا فقط اسم المستخدم الوهمي - ضيف أو عميل وخطأ من النوع - شهادة CA غير معروفة
المزيد عن ماكعادة ، على نظام التشغيل MacOS ، تتم إعادة تثبيت النظام عبر الإنترنت. في وضع الاسترداد ، يجب توصيل الخشخاش بشبكة WiFi ، ولن تعمل شبكة WiFi الخاصة بشركتنا أو شبكة الضيف هنا. شخصيا ، التقطت شبكة أخرى ، WPA2-PSK المعتادة ، مخفية ، فقط للعمليات الفنية. وإلا يمكنك إنشاء محرك أقراص فلاش USB قابل للتمهيد مع النظام مسبقًا. ولكن إذا كان الخشخاش بعد عام 2015 ، فستظل بحاجة إلى العثور على محول لمحرك الأقراص المحمول هذا)