Korporativ WiFi-ni tashkil qilishning ba'zi misollari allaqachon tasvirlangan. Bu erda men shunga o'xshash echimni qanday amalga oshirganimni va turli qurilmalarga ulanishda duch kelgan muammolarni tasvirlab beraman. Biz ro'yxatdan o'tgan foydalanuvchilar bilan mavjud LDAP dan foydalanamiz, FreeRadiusni oshiramiz va Ubnt kontrollerida WPA2-Enterprise-ni sozlaymiz. Hamma narsa oddiy ko'rinadi. Ko'raylikchi…
EAP usullari haqida bir oz
Vazifani bajarishdan oldin, biz hal qilishda qaysi autentifikatsiya usulini qo'llashimizni hal qilishimiz kerak.
Vikipediyadan:
EAP simsiz tarmoqlar va nuqtadan nuqtaga ulanishlarda tez-tez ishlatiladigan autentifikatsiya tizimidir. Format birinchi marta RFC 3748 da tasvirlangan va RFC 5247 da yangilangan.
EAP autentifikatsiya usulini tanlash, kalitlarni uzatish va ushbu kalitlarni EAP usullari deb ataladigan plaginlar bilan qayta ishlash uchun ishlatiladi. EAPning o'zi bilan aniqlangan va alohida sotuvchilar tomonidan chiqarilgan ko'plab EAP usullari mavjud. EAP havola qatlamini aniqlamaydi, u faqat xabar formatini belgilaydi. EAP-dan foydalanadigan har bir protokol o'zining EAP xabarlarini inkapsulyatsiya qilish protokoliga ega.
Usullarning o'zi:
- LEAP - bu CISCO tomonidan ishlab chiqilgan xususiy protokol. Zaifliklar topildi. Hozirda foydalanish tavsiya etilmaydi
- EAP-TLS simsiz sotuvchilar orasida yaxshi qo'llab-quvvatlanadi. Bu xavfsiz protokol, chunki u SSL standartlarining vorisi hisoblanadi. Mijozni sozlash juda murakkab. Parolga qo'shimcha ravishda sizga mijoz sertifikati kerak. Ko'pgina tizimlarda qo'llab-quvvatlanadi
- EAP-TTLS - ko'plab tizimlarda keng qo'llab-quvvatlanadi, faqat autentifikatsiya serverida PKI sertifikatlaridan foydalangan holda yaxshi xavfsizlikni ta'minlaydi.
- EAP-MD5 yana bir ochiq standartdir. Minimal xavfsizlikni ta'minlaydi. Zaif, o'zaro autentifikatsiya va kalit yaratishni qo'llab-quvvatlamaydi
- EAP-IKEv2 - Internet kalitlarini almashish protokolining 2-versiyasiga asoslangan. Mijoz va server o'rtasida o'zaro autentifikatsiya va seans kalitini o'rnatishni ta'minlaydi
- PEAP ochiq standart sifatida CISCO, Microsoft va RSA Securityning birgalikdagi yechimidir. Mahsulotlarda keng tarqalgan, juda yaxshi xavfsizlikni ta'minlaydi. EAP-TTLS ga o'xshab, server tomonida faqat sertifikat talab qilinadi
- PEAPv0/EAP-MSCHAPv2 - EAP-TLSdan keyin bu dunyoda keng qo'llaniladigan ikkinchi standartdir. Microsoft, Cisco, Apple, Linuxda mijoz-server munosabatlaridan foydalanilgan
- PEAPv1/EAP-GTC - PEAPv0/EAP-MSCHAPv2 ga muqobil sifatida Cisco tomonidan yaratilgan. Autentifikatsiya ma'lumotlarini hech qanday tarzda himoya qilmaydi. Windows operatsion tizimida qo'llab-quvvatlanmaydi
- EAP-FAST - LEAP kamchiliklarini tuzatish uchun Cisco tomonidan ishlab chiqilgan texnika. Himoyalangan kirish ma'lumotlaridan (PAC) foydalanadi. To'liq tugallanmagan
Bu xilma-xillikdan tanlov hali ham katta emas. Autentifikatsiya usuli talab qilindi: yaxshi xavfsizlik, barcha qurilmalarda qo'llab-quvvatlash (Windows 10, macOS, Linux, Android, iOS) va aslida qanchalik sodda bo'lsa, shuncha yaxshi. Shuning uchun tanlov PAP protokoli bilan birgalikda EAP-TTLS ga tushdi.
Savol tug'ilishi mumkin - Nima uchun PAP ishlatiladi? chunki u parollarni aniq uzatadi?
Ha hammasi to'g'ri. FreeRadius va FreeIPA o'rtasidagi aloqa shu tarzda amalga oshiriladi. Nosozliklarni tuzatish rejimida foydalanuvchi nomi va parol qanday yuborilganligini kuzatishingiz mumkin. Ha, va ularni qo'yib yuboring, faqat siz FreeRadius serveriga kirishingiz mumkin.
EAP-TTLS ishi haqida ko'proq ma'lumot olishingiz mumkin
FreeRADIUS
FreeRadius CentOS 7.6 da ko'tariladi. Bu erda hech qanday murakkab narsa yo'q, biz uni odatiy tarzda o'rnatdik.
yum install freeradius freeradius-utils freeradius-ldap -y
Paketlardan 3.0.13 versiyasi o'rnatilgan. Ikkinchisini olish mumkin
Shundan so'ng FreeRadius allaqachon ishlamoqda. /etc/raddb/users-da qatorni izohdan olib tashlashingiz mumkin
steve Cleartext-Password := "testing"
Nosozliklarni tuzatish rejimida serverni ishga tushiring
freeradius -X
Va localhost-dan sinov ulanishini o'rnating
radtest steve testing 127.0.0.1 1812 testing123
Javob oldim 115:127.0.0.1 dan 1812:127.0.0.1 uzunligi 56081 gacha boʻlgan kirish-qabul qilish identifikatori 20 qabul qilindi, bu hammasi joyida ekanligini anglatadi. Davom etishga ruxsat.
Biz modulni ulaymiz ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
Va biz uni darhol o'zgartiramiz. FreeIPA-ga kirish uchun bizga FreeRadius kerak
mods-yoqilgan/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 serverini qayta ishga tushiring va LDAP foydalanuvchilarining sinxronizatsiyasini tekshiring:
radtest user_ldap password_ldap localhost 1812 testing123
Eap in tahrirlash mods-yoqilgan/eap
Bu erda biz ikkita eap misolini qo'shamiz. Ular faqat sertifikatlar va kalitlarda farqlanadi. Quyida men nima uchun bunday ekanligini tushuntiraman.
mods-yoqilgan/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"
}
}
Keyingi tahrirlash sayt yoqilgan/standart. Avtorizatsiya va autentifikatsiya bo'limlari qiziqish uyg'otadi.
sayt yoqilgan/standart
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
}
Avtorizatsiya bo'limida biz kerak bo'lmagan barcha modullarni olib tashlaymiz. Biz faqat ldap qoldiramiz. Foydalanuvchi nomi bo'yicha mijoz tekshiruvini qo'shing. Shuning uchun biz yuqorida ikkita eap misolini qo'shdik.
Multi EAPGap shundaki, ba'zi qurilmalarni ulashda biz tizim sertifikatlaridan foydalanamiz va domenni ko'rsatamiz. Bizda ishonchli sertifikat organining sertifikati va kaliti bor. Shaxsan, mening fikrimcha, bunday ulanish tartibi har bir qurilmada o'z-o'zidan imzolangan sertifikatni tashlashdan ko'ra osonroqdir. Ammo o'z-o'zidan imzolangan sertifikatlarsiz ham, u hali ham ish bermadi. Samsung qurilmalari va Android =< 6 versiyalari tizim sertifikatlaridan foydalana olmaydi. Shuning uchun biz o'z-o'zidan imzolangan sertifikatlar bilan ular uchun eap-mehmonning alohida nusxasini yaratamiz. Boshqa barcha qurilmalar uchun eap-client-dan ishonchli sertifikat bilan foydalanamiz. Foydalanuvchi nomi qurilma ulanganda Anonim maydoni bilan aniqlanadi. Faqat 3 ta qiymatga ruxsat beriladi: mehmon, mijoz va bo'sh maydon. Qolgan hamma narsa tashlab yuboriladi. U siyosatchilarda sozlanadi. Birozdan keyin misol keltiraman.
Keling, avtorizatsiya va autentifikatsiya bo'limlarini tahrir qilaylik sayt yoqilgan/ichki tunnel
sayt yoqilgan/ichki tunnel
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
}
Keyinchalik, siyosatlarda anonim kirish uchun qaysi nomlardan foydalanish mumkinligini ko'rsatishingiz kerak. Tahrirlash Policy.d/filter.
Bunga o'xshash qatorlarni topishingiz kerak:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Va quyida elsif-ga kerakli qiymatlarni qo'shing:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Endi biz katalogga o'tishimiz kerak serts. Bu erda siz ishonchli sertifikat organining kaliti va sertifikatini qo'yishingiz kerak, bizda allaqachon mavjud va eap-guest uchun o'z-o'zidan imzolangan sertifikatlarni yaratishimiz kerak.
Fayldagi parametrlarni o'zgartiring 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"
Biz faylga bir xil qiymatlarni yozamiz server.cnf. Biz faqat o'zgartiramiz
umumiy ism:
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"
Yaratmoq:
make
Tayyor. Qabul qildi server.crt и server.key biz allaqachon eap-guestda ro'yxatdan o'tganmiz.
Va nihoyat, faylga kirish nuqtalarimizni qo'shamiz mijoz.conf. Menda ulardan 7 tasi bor.Har bir nuqtani alohida qo'shmaslik uchun faqat ular joylashgan tarmoqni yozamiz (mening kirish nuqtalarim alohida VLANda).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Ubiquiti boshqaruvchisi
Biz tekshirgichda alohida tarmoqni ko'taramiz. 192.168.2.0/24 bo'lsin
Sozlamalar -> profilga o'ting. Biz yangisini yaratamiz:
Biz radius serverining manzili va portini va faylga yozilgan parolni yozamiz clients.conf:
Yangi simsiz tarmoq nomini yarating. Autentifikatsiya usuli sifatida WPA-EAP (Enterprise) ni tanlang va yaratilgan radius profilini belgilang:
Biz hamma narsani saqlaymiz, ariza beramiz va davom etamiz.
Mijozlarni sozlash
Eng qiyinidan boshlaylik!
Windows 10
Qiyinchilik Windows korporativ WiFi-ga domen orqali qanday ulanishni hali bilmasligi bilan bog'liq. Shuning uchun biz sertifikatimizni ishonchli sertifikatlar do'koniga qo'lda yuklashimiz kerak. Bu erda siz o'z-o'zidan imzolangan va sertifikatlash organidan foydalanishingiz mumkin. Men ikkinchisidan foydalanaman.
Keyinchalik, siz yangi ulanishni yaratishingiz kerak. Buning uchun tarmoq va Internet sozlamalari -> Tarmoq va almashish markazi -> Yangi ulanish yoki tarmoq yarating va sozlang:
Tarmoq nomini qo'lda kiriting va xavfsizlik turini o'zgartiring. Biz bosganimizdan keyin ulanish sozlamalarini o'zgartirish va Xavfsizlik yorlig'ida tarmoq autentifikatsiyasini tanlang - EAP-TTLS.
Biz parametrlarga o'tamiz, autentifikatsiyaning maxfiyligini belgilaymiz - mijoz. Ishonchli sertifikatlashtirish organi sifatida biz qo'shgan sertifikatni tanlang, "Agar serverga ruxsat berilmasa, foydalanuvchiga taklifnoma bermang" katagiga belgi qo'ying va autentifikatsiya usulini - shifrlanmagan parolni (PAP) tanlang.
Keyinchalik, kengaytirilgan sozlamalarga o'ting, "Autentifikatsiya rejimini belgilang" belgisini qo'ying. "Foydalanuvchining autentifikatsiyasi" ni tanlang va ustiga bosing hisob ma'lumotlarini saqlang. Bu erda siz username_ldap va password_ldap kiritishingiz kerak bo'ladi
Biz hamma narsani saqlaymiz, qo'llaymiz, yopamiz. Siz yangi tarmoqqa ulanishingiz mumkin.
Linux
Men Ubuntu 18.04, 18.10, Fedora 29, 30 da sinab ko'rdim.
Birinchidan, sertifikatimizni yuklab olaylik. Men Linuxda tizim sertifikatlaridan foydalanish mumkinmi yoki umuman bunday do'kon bor-yo'qligini topa olmadim.
Keling, domenga ulanamiz. Shuning uchun bizga sertifikatimiz sotib olingan sertifikatlashtirish organidan sertifikat kerak.
Barcha ulanishlar bitta oynada amalga oshiriladi. Tarmoqimizni tanlash:
anonim mijoz
domen - sertifikat berilgan domen
Android
Samsung bo'lmagan
7-versiyadan boshlab, WiFi-ni ulashda siz tizim sertifikatlaridan faqat domenni ko'rsatish orqali foydalanishingiz mumkin:
domen - sertifikat berilgan domen
anonim mijoz
Samsung
Yuqorida yozganimdek, Samsung qurilmalari WiFi-ga ulanishda tizim sertifikatlaridan qanday foydalanishni bilishmaydi va ular domen orqali ulanish imkoniyatiga ega emas. Shuning uchun siz sertifikatlash organining ildiz sertifikatini qo'lda qo'shishingiz kerak (ca.pem, biz uni Radius serverida olamiz). Bu erda o'z-o'zidan imzo qo'yiladi.
Sertifikatni qurilmangizga yuklab oling va o'rnating.
Sertifikat o'rnatish
Shu bilan birga, ekran qulfini ochish naqshini, pin-kodni yoki parolni o'rnatishingiz kerak bo'ladi, agar u allaqachon o'rnatilmagan bo'lsa:
Men sertifikatni o'rnatishning murakkab versiyasini ko'rsatdim. Aksariyat qurilmalarda yuklab olingan sertifikatni bosish kifoya.
Sertifikat o'rnatilganda siz ulanishga o'tishingiz mumkin:
sertifikat - o'rnatilganini ko'rsating
anonim foydalanuvchi - mehmon
MacOS
Apple qurilmalari faqat EAP-TLS ga ulanishi mumkin, ammo siz hali ham ularga sertifikat tashlashingiz kerak. Boshqa ulanish usulini belgilash uchun siz Apple Configurator 2-dan foydalanishingiz kerak. Shunga ko'ra, avval uni Mac-ga yuklab olishingiz, yangi profil yaratishingiz va barcha kerakli WiFi sozlamalarini qo'shishingiz kerak.
Apple Configurator
Bu yerda tarmoq nomini kiriting
Xavfsizlik turi - WPA2 Enterprise
Qabul qilingan EAP turlari - TTLS
Foydalanuvchi nomi va parol - bo'sh qoldiring
Ichki autentifikatsiya - PAP
Tashqi identifikatsiya-mijoz
Ishonch yorlig'i. Bu erda biz domenimizni belgilaymiz
Hammasi. Profilni saqlash, imzolash va qurilmalarga tarqatish mumkin
Profil tayyor bo'lgach, uni ko'knoriga yuklab olishingiz va uni o'rnatishingiz kerak. O'rnatish jarayonida siz foydalanuvchining usernmae_ldap va password_ldap kodlarini ko'rsatishingiz kerak bo'ladi:
iOS
Jarayon macOS-ga o'xshaydi. Siz profildan foydalanishingiz kerak (siz macOS-dagi kabi foydalanishingiz mumkin. Apple Configurator-da profilni qanday yaratish mumkin, yuqoriga qarang).
Profilni yuklab oling, o'rnating, hisob ma'lumotlarini kiriting, ulaning:
Ana xolos. Biz Radius serverini o'rnatdik, uni FreeIPA bilan sinxronlashtirdik va Ubiquiti APlarga WPA2-EAP dan foydalanishni aytdik.
Mumkin savollar
Savol: profilni/sertifikatni xodimga qanday o'tkazish kerak?
Haqida: Men barcha sertifikatlar/profillarni ftp-da vebga kirish imkoniyati bilan saqlayman. Tezlik chegarasi va faqat Internetga kirish imkoniyati bo'lgan mehmon tarmog'ini ko'tardi, ftp bundan mustasno.
Autentifikatsiya 2 kun davom etadi, shundan so'ng u qayta o'rnatiladi va mijoz Internetsiz qoladi. Bu. xodim WiFi-ga ulanishni xohlasa, u birinchi navbatda mehmon tarmog'iga ulanadi, FTP-ga kiradi, o'ziga kerak bo'lgan sertifikat yoki profilni yuklab oladi, uni o'rnatadi va keyin korporativ tarmoqqa ulanishi mumkin.
Savol: Nima uchun MSCHAPv2 bilan sxemadan foydalanmaslik kerak? U xavfsizroq!
Haqida: Birinchidan, bunday sxema NPS (Windows Network Policy System) da yaxshi ishlaydi, bizning amalga oshirishimizda qo'shimcha ravishda LDAP (FreeIpa) ni sozlash va parol xeshlarini serverda saqlash kerak. Qo'shish. sozlashni amalga oshirish maqsadga muvofiq emas, chunki. bu ultratovushni sinxronlashtirishning turli muammolariga olib kelishi mumkin. Ikkinchidan, xesh MD4, shuning uchun u ko'p xavfsizlik qo'shmaydi.
Savol: qurilmalarni mac-manzillar bo'yicha avtorizatsiya qilish mumkinmi?
Haqida: YOʻQ, bu xavfsiz emas, tajovuzkor MAC manzillarini oʻzgartirishi mumkin va bundan tashqari, MAC manzillari boʻyicha avtorizatsiya koʻpgina qurilmalarda qoʻllab-quvvatlanmaydi.
Savol: Umuman olganda, bu barcha sertifikatlardan nima foydalanish kerak? ularsiz qo'shila olasizmi?
Haqida: sertifikatlar serverni avtorizatsiya qilish uchun ishlatiladi. Bular. ulanayotganda, qurilma ishonchli bo'lishi mumkin bo'lgan server yoki yo'qligini tekshiradi. Agar shunday bo'lsa, autentifikatsiya davom etadi, agar bo'lmasa, ulanish yopiladi. Siz sertifikatlarsiz ulanishingiz mumkin, ammo agar tajovuzkor yoki qo'shni uyda biznikiga o'xshash radius serveri va kirish nuqtasini o'rnatsa, u foydalanuvchining hisob ma'lumotlarini osongina ushlab qolishi mumkin (ular aniq matnda uzatilishini unutmang). Va sertifikat ishlatilganda, dushman o'z jurnallarida faqat bizning uydirma foydalanuvchi nomini ko'radi - mehmon yoki mijoz va xato turi - noma'lum CA sertifikati
macOS haqida bir oz ko'proqOdatda macOS-da tizimni qayta o'rnatish Internet orqali amalga oshiriladi. Qayta tiklash rejimida Mac WiFi-ga ulangan bo'lishi kerak va bizning korporativ WiFi ham, mehmonlar tarmog'i ham bu erda ishlamaydi. Shaxsan men boshqa tarmoqni ko'tardim, odatdagi WPA2-PSK, faqat texnik operatsiyalar uchun yashirin. Yoki tizim bilan oldindan yuklanadigan USB flesh-diskini yaratishingiz mumkin. Ammo agar haşhaş 2015 yildan keyin bo'lsa, siz hali ham ushbu flesh-disk uchun adapterni topishingiz kerak bo'ladi)
Manba: www.habr.com