تم بالفعل وصف بعض الأمثلة على تنظيم 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. لا تحمي بيانات المصادقة بأي شكل من الأشكال. غير مدعوم في نظام التشغيل Windows
- EAP-FAST هي تقنية طورتها Cisco لتصحيح أوجه القصور في LEAP. يستخدم بيانات اعتماد الوصول المحمي (PAC). غير مكتمل على الإطلاق
من بين كل هذا التنوع ، لا يزال الاختيار غير رائع. كانت طريقة المصادقة مطلوبة: أمان جيد ، ودعم على جميع الأجهزة (Windows 10 ، macOS ، Linux ، Android ، iOS) ، وفي الواقع ، كان الأبسط أفضل. لذلك ، وقع الاختيار على EAP-TTLS بالتزامن مع بروتوكول PAP.
قد يطرح السؤال - لماذا استخدام PAP؟ لأنه ينقل كلمات المرور بشكل واضح؟
نعم هذا صحيح. سيتم الاتصال بين FreeRadius و FreeIPA بهذه الطريقة. في وضع التصحيح ، يمكنك تتبع كيفية إرسال اسم المستخدم وكلمة المرور. نعم ، ودعهم يذهبون ، فقط لديك حق الوصول إلى خادم FreeRadius.
يمكنك قراءة المزيد عن عمل EAP-TTLS
RADIUS
سيتم رفع FreeRadius على CentOS 7.6. لا يوجد شيء معقد هنا ، وضعناه بالطريقة المعتادة.
yum install freeradius freeradius-utils freeradius-ldap -y
تم تثبيت الإصدار 3.0.13 من الحزم. يمكن أن تؤخذ هذا الأخير
بعد ذلك ، يعمل FreeRadius بالفعل. يمكنك إلغاء تعليق السطر في / etc / raddb / users
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:56081 بطول 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}})"
}
...
أعد تشغيل خادم نصف القطر وتحقق من مزامنة مستخدمي 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 أعلاه.
متعدد 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 أضف القيم المرغوبة:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
الآن نحن بحاجة إلى الانتقال إلى الدليل موتس. هنا تحتاج إلى وضع المفتاح والشهادة من مرجع مصدق موثوق به ، والذي لدينا بالفعل ونحتاج إلى إنشاء شهادات موقعة ذاتيًا لـ 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 = [email protected]
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 = [email protected]
commonName = "Server Certificate FreeRadius"
يخلق:
make
مستعد. تلقى server.crt и server.key لقد سجلنا بالفعل أعلاه في eap-guest.
وأخيرًا ، دعنا نضيف نقاط الوصول الخاصة بنا إلى الملف client.conf. لدي 7 منهم ، ولكي لا نضيف كل نقطة على حدة ، سنكتب فقط الشبكة التي توجد بها (نقاط الوصول الخاصة بي في شبكة محلية ظاهرية منفصلة).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
وحدة تحكم Ubiquiti
نرفع شبكة منفصلة على وحدة التحكم. فليكن 192.168.2.0/24
انتقل إلى الإعدادات -> الملف الشخصي. نصنع واحدة جديدة:
نكتب عنوان ومنفذ خادم radius وكلمة المرور التي كُتبت في الملف العملاء:
قم بإنشاء اسم شبكة لاسلكية جديد. حدد WPA-EAP (مؤسسي) كطريقة مصادقة وحدد ملف تعريف نصف القطر الذي تم إنشاؤه:
نحن نحفظ كل شيء ، ونطبق ونمضي قدمًا.
إعداد العملاء
لنبدأ بالأصعب!
نوافذ 10
تكمن الصعوبة في حقيقة أن Windows لا يعرف بعد كيفية الاتصال بشركة WiFi عبر مجال. لذلك ، يتعين علينا تحميل شهادتنا يدويًا إلى مخزن الشهادات الموثوق به. هنا يمكنك استخدام كل من الموقع الذاتي ومن المرجع المصدق. سأستخدم الثاني.
بعد ذلك ، تحتاج إلى إنشاء اتصال جديد. للقيام بذلك ، انتقل إلى إعدادات الشبكة والإنترنت -> مركز الشبكة والمشاركة -> إنشاء وتكوين اتصال أو شبكة جديدة:
أدخل اسم الشبكة يدويًا وقم بتغيير نوع الأمان. بعد أن نضغط على تغيير إعدادات الاتصال وفي علامة التبويب الأمان ، حدد مصادقة الشبكة - EAP-TTLS.
ندخل في المعلمات ، ونصف سرية المصادقة - زبون. بصفتك مرجعًا مصدقًا موثوقًا به ، حدد الشهادة التي أضفناها ، وحدد المربع "لا تصدر دعوة إلى المستخدم إذا كان الخادم لا يمكن تفويضه" وحدد طريقة المصادقة - كلمة مرور غير مشفرة (PAP).
بعد ذلك ، انتقل إلى الإعدادات المتقدمة ، ضع علامة على "تحديد وضع المصادقة". حدد "مصادقة المستخدم" وانقر فوق حفظ أوراق الاعتماد. هنا سوف تحتاج إلى إدخال username_ldap و password_ldap
نحن نحفظ كل شيء ، ونطبق ، ونغلق. يمكنك الاتصال بشبكة جديدة.
لينكس
لقد اختبرت على Ubuntu 18.04 و 18.10 و Fedora 29 و 30.
أولاً ، لنقم بتنزيل شهادتنا. لم أجد في Linux ما إذا كان من الممكن استخدام شهادات النظام وما إذا كان هناك مثل هذا المتجر على الإطلاق.
دعنا نتصل بالمجال. لذلك ، نحتاج إلى شهادة من المرجع المصدق الذي تم شراء شهادتنا منه.
يتم إجراء جميع الاتصالات في نافذة واحدة. اختيار شبكتنا:
عميل مجهول
domain - المجال الذي تم إصدار الشهادة من أجله
أندرويد
غير سامسونج
من الإصدار 7 ، عند توصيل WiFi ، يمكنك استخدام شهادات النظام من خلال تحديد المجال فقط:
domain - المجال الذي تم إصدار الشهادة من أجله
عميل مجهول
سامسونج
كما كتبت أعلاه ، لا تعرف أجهزة Samsung كيفية استخدام شهادات النظام عند الاتصال بشبكة WiFi ، وليس لديها القدرة على الاتصال عبر مجال. لذلك ، يجب عليك إضافة الشهادة الجذرية للمرجع المصدق يدويًا (ca.pem ، نأخذها على خادم Radius). هنا حيث سيتم استخدام التوقيع الذاتي.
قم بتنزيل الشهادة على جهازك وتثبيتها.
تثبيت الشهادة
في الوقت نفسه ، ستحتاج إلى ضبط نمط إلغاء قفل الشاشة أو الرمز السري أو كلمة المرور ، إذا لم يتم تعيينها بالفعل:
لقد عرضت نسخة معقدة من تثبيت الشهادة. في معظم الأجهزة ، ما عليك سوى النقر فوق الشهادة التي تم تنزيلها.
عند تثبيت الشهادة ، يمكنك المتابعة إلى الاتصال:
شهادة - حدد الشخص الذي تم تثبيته
مستخدم مجهول - ضيف
ماك
لا يمكن لأجهزة Apple الاتصال إلا بـ EAP-TLS ، ولكن لا تزال بحاجة إلى إلقاء شهادة عليها. لتحديد طريقة اتصال مختلفة ، تحتاج إلى استخدام Apple Configurator 2. وفقًا لذلك ، يجب عليك أولاً تنزيله على جهاز Mac الخاص بك ، وإنشاء ملف تعريف جديد وإضافة جميع إعدادات WiFi الضرورية.
ابل مكون
أدخل اسم شبكتك هنا
نوع الأمان - WPA2 Enterprise
أنواع EAP المقبولة - TTLS
اسم المستخدم وكلمة المرور - اتركه فارغًا
المصادقة الداخلية - PAP
عميل الهوية الخارجية
علامة التبويب Trust. هنا نحدد مجالنا
الجميع. يمكن حفظ ملف التعريف وتوقيعه وتوزيعه على الأجهزة
بعد أن يصبح ملف التعريف جاهزًا ، تحتاج إلى تنزيله على الخشخاش وتثبيته. أثناء عملية التثبيت ، ستحتاج إلى تحديد usernmae_ldap و password_ldap للمستخدم:
آيفون
تشبه هذه العملية نظام macOS. تحتاج إلى استخدام ملف تعريف (يمكنك استخدام نفس ملف تعريف macOS. كيفية إنشاء ملف تعريف في Apple Configurator ، انظر أعلاه).
تنزيل ملف التعريف ، تثبيت ، إدخال بيانات الاعتماد ، الاتصال:
هذا كل شئ. قمنا بإعداد خادم Radius ، وقمنا بمزامنته مع FreeIPA ، وأخبرنا Ubiquiti APs باستخدام WPA2-EAP.
أسئلة محتملة
В: كيف يتم تحويل ملف / شهادة إلى موظف؟
О: أقوم بتخزين جميع الشهادات / الملفات الشخصية على بروتوكول نقل الملفات مع الوصول إلى الويب. أثارت شبكة الضيف مع حد للسرعة والوصول فقط إلى الإنترنت ، باستثناء بروتوكول نقل الملفات.
تستمر المصادقة لمدة يومين ، وبعد ذلك تتم إعادة تعيينها ويترك العميل بدون الإنترنت. الذي - التي. عندما يريد أحد الموظفين الاتصال بشبكة WiFi ، يقوم أولاً بالاتصال بشبكة الضيف ، والوصول إلى FTP ، وتنزيل الشهادة أو الملف الشخصي الذي يحتاج إليه ، وتثبيته ، ومن ثم يمكنه الاتصال بشبكة الشركة.
В: لماذا لا تستخدم المخطط مع MSCHAPv2؟ إنها أكثر أمانًا!
О: أولاً ، يعمل هذا المخطط جيدًا على NPS (نظام سياسة شبكة Windows) ، ومن الضروري في تطبيقنا تكوين LDAP (FreeIpa) وتخزين تجزئات كلمة المرور على الخادم. يضيف. لا ينصح بإجراء الإعدادات ، لأن. هذا يمكن أن يؤدي إلى مشاكل مختلفة في مزامنة الموجات فوق الصوتية. ثانيًا ، التجزئة هي MD4 ، لذا فهي لا تضيف الكثير من الأمان.
В: هل من الممكن تفويض الأجهزة عن طريق عناوين mac؟
О: لا ، هذا ليس آمنًا ، يمكن للمهاجم تغيير عناوين MAC ، والأكثر من ذلك أن التفويض من خلال عناوين MAC غير مدعوم على العديد من الأجهزة
В: ما الذي تستخدمه كل هذه الشهادات بشكل عام؟ هل يمكنك الانضمام بدونهم؟
О: تستخدم الشهادات لتخويل الخادم. أولئك. عند الاتصال ، يتحقق الجهاز مما إذا كان خادمًا يمكن الوثوق به أم لا. إذا كان الأمر كذلك ، فستستمر المصادقة ، وإذا لم يكن الأمر كذلك ، فسيتم إغلاق الاتصال. يمكنك الاتصال بدون شهادات ، ولكن إذا قام المهاجم أو الجار بإعداد خادم نصف قطر ونقطة وصول بنفس الاسم مثلنا في المنزل ، فيمكنه بسهولة اعتراض بيانات اعتماد المستخدم (لا تنس أنه يتم إرسالها بنص واضح). وعندما يتم استخدام شهادة ، سيرى العدو في سجلاته فقط اسم المستخدم الوهمي - الضيف أو العميل ونوع الخطأ - شهادة CA غير معروفة
المزيد عن macOSعادة على نظام macOS ، تتم إعادة تثبيت النظام عبر الإنترنت. في وضع الاسترداد ، يجب أن يكون جهاز Mac متصلاً بشبكة WiFi ، ولن تعمل شبكة WiFi ولا شبكة الضيف هنا. أنا شخصياً أثيرت شبكة أخرى ، WPA2-PSK المعتادة ، مخفية ، فقط للعمليات الفنية. أو لا يزال بإمكانك إنشاء محرك أقراص USB محمول قابل للتمهيد مع النظام مسبقًا. ولكن إذا كان الخشخاش بعد عام 2015 ، فستظل بحاجة إلى العثور على محول لمحرك الأقراص المحمول هذا)
المصدر: www.habr.com