
Niektoré príklady organizácie firemnej WiFi už boli popísané. Tu popíšem, ako som implementoval podobné riešenie a problémy, ktorým som musel čeliť pri pripájaní na rôznych zariadeniach. Použijeme existujúce LDAP s registrovanými používateľmi, zvýšime FreeRadius a nakonfigurujeme WPA2-Enterprise na Ubnt radiči. Všetko sa zdá byť jednoduché. Pozrime sa…
Trochu o metódach EAP
Pred pokračovaním v úlohe sa musíme rozhodnúť, ktorú metódu autentifikácie použijeme v našom riešení.
Z wikipedia:
EAP je autentifikačný rámec, ktorý sa často používa v bezdrôtových sieťach a pripojeniach typu point-to-point. Formát bol prvýkrát opísaný v RFC 3748 a aktualizovaný v RFC 5247.
EAP sa používa na výber metódy autentifikácie, prístupových kľúčov a spracovanie týchto kľúčov pomocou doplnkov nazývaných metódy EAP. Existuje mnoho metód EAP, ktoré sú definované v samotnom EAP a vydané jednotlivými dodávateľmi. EAP nedefinuje linkovú vrstvu, definuje iba formát správy. Každý protokol využívajúci EAP má svoj vlastný protokol zapuzdrenia správ EAP.
Samotné metódy:
- LEAP je proprietárny protokol vyvinutý spoločnosťou CISCO. Našli sa slabé miesta. V súčasnosti sa neodporúča používať
- EAP-TLS je medzi dodávateľmi bezdrôtových zariadení dobre podporovaný. Ide o bezpečný protokol, pretože je nástupcom štandardov SSL. Nastavenie klienta je pomerne komplikované. Okrem hesla potrebujete klientsky certifikát. Podporované na mnohých systémoch
- EAP-TTLS – široko podporovaný na mnohých systémoch, ponúka dobré zabezpečenie pomocou certifikátov PKI iba na autentifikačnom serveri
- EAP-MD5 je ďalší otvorený štandard. Ponúka minimálnu bezpečnosť. Zraniteľný, nepodporuje vzájomnú autentifikáciu a generovanie kľúčov
- EAP-IKEv2 – založený na protokole Internet Key Exchange Protocol verzie 2. Poskytuje vzájomnú autentifikáciu a vytvorenie kľúča relácie medzi klientom a serverom
- PEAP je spoločné riešenie CISCO, Microsoft a RSA Security ako otvorený štandard. Široko dostupné v produktoch, poskytuje veľmi dobrú bezpečnosť. Podobne ako EAP-TTLS, vyžaduje len certifikát na strane servera
- PEAPv0/EAP-MSCHAPv2 je druhý najpoužívanejší štandard na svete po EAP-TLS. Používajú ho spoločnosti Microsoft, Cisco a Apple na komunikáciu klient-server. Linux
- PEAPv1/EAP-GTC – Vytvorené spoločnosťou Cisco ako alternatíva k PEAPv0/EAP-MSCHAPv2. Žiadnym spôsobom nechráni autentifikačné údaje. Nie je podporované v Windows OS
- EAP-FAST je technika vyvinutá spoločnosťou Cisco na nápravu nedostatkov LEAP. Používa poverenie na chránený prístup (PAC). Úplne nedokončené
Pri tejto rozmanitosti je výber stále obmedzený. Požadovaná metóda overovania: dobré zabezpečenie, podpora na všetkých zariadeniach (Windows 10, macOS, Linux, Android, iOS) a v skutočnosti platí, že čím jednoduchšie, tým lepšie. Preto padla voľba na EAP-TTLS v spojení s protokolom PAP.
Môže vyvstať otázka – Prečo používať PAP? pretože prenáša heslá v čistote?
Áno, to je správne. Komunikácia medzi FreeRadius a FreeIPA bude prebiehať týmto spôsobom. V režime ladenia môžete sledovať, ako sa používateľské meno a heslo odosielajú. Áno, a nechajte ich ísť, iba vy máte prístup k serveru FreeRadius.
Môžete si prečítať viac o práci EAP-TTLS
FreeRADIUS
Zvýšime FreeRadius na CentOS 7.6. Nie je tu nič zložité, inštalujeme ho obvyklým spôsobom.
yum install freeradius freeradius-utils freeradius-ldap -yVerzia 3.0.13 sa inštaluje z balíkov. To posledné možno vziať
Potom už FreeRadius funguje. Môžete odkomentovať riadok v /etc/raddb/users
steve Cleartext-Password := "testing"Spustite na server v režime ladenia
freeradius -XA vytvorte testovacie pripojenie z localhost
radtest steve testing 127.0.0.1 1812 testing123Dostal som odpoveď Id prijatého prístupu-akceptovania 115 od 127.0.0.1:1812 do 127.0.0.1:56081 dĺžka 20, to znamená, že je všetko v poriadku. Pokračuj.
Pripojíme modul ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldapA hneď to zmeníme. Potrebujeme FreeRadius, aby sme mali prístup k FreeIPA
s povolenými mods/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}})"
}
...Reštartujte radius server a skontrolujte synchronizáciu používateľov LDAP:
radtest user_ldap password_ldap localhost 1812 testing123 Úprava eap in mods-enabled/eap
Tu pridáme dva prípady eap. Líšiť sa budú iba certifikátmi a kľúčmi. Nižšie vysvetlím, prečo je to tak.
mods-enabled/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"
}
}Ďalšia úprava site-enabled/default. Zaujímavé sú časti autorizácie a autentifikácie.
site-enabled/default
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
}V časti autorizácie odstránime všetky moduly, ktoré nepotrebujeme. Nechávame len ldap. Pridajte overenie klienta podľa používateľského mena. Preto sme vyššie pridali dve inštancie eap.
Multi EAPIde o to, že pri pripájaní niektorých zariadení budeme používať systémové certifikáty a zadávať doménu. Máme certifikát a kľúč od dôveryhodnej certifikačnej autority. Osobne si myslím, že tento postup pripojenia je jednoduchší ako inštalácia certifikátu s vlastným podpisom na každé zariadenie. Ale aj tak sme sa s certifikátmi s vlastným podpisom nezaobišli. Zariadenia Samsung a Android Verzia 6 nemôže používať systémové certifikáty. Preto pre ne vytvoríme samostatnú inštanciu eap-guest s certifikátmi s vlastným podpisom. Pre všetky ostatné zariadenia použijeme eap-client s dôveryhodným certifikátom. Používateľské meno je určené polem Anonymous pri pripojení zariadenia. Povolené sú iba tri hodnoty: Guest (Hosť), Client (Klient) a prázdne pole. Všetko ostatné sa zahodí. Toto je nakonfigurované v politikách. Príklad uvediem neskôr.
Upravme časti autorizácie a autentifikácie v site-enabled/inner-tunel
site-enabled/inner-tunel
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
}Ďalej musíte v politikách špecifikovať, ktoré mená možno použiť na anonymné prihlásenie. Úprava policy.d/filter.
Musíte nájsť riadky podobné tomuto:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}A nižšie v elsif pridajte požadované hodnoty:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}Teraz sa musíme presunúť do adresára certy. Tu musíte vložiť kľúč a certifikát od dôveryhodnej certifikačnej autority, ktorú už máme a potrebujeme vygenerovať certifikáty s vlastným podpisom pre eap-hosta.
Zmeňte parametre v súbore cca.cnf.
cca.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"Do súboru zapíšeme rovnaké hodnoty server.cnf. Len sa meníme
spoločný názov:
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"Vytvoriť:
makePripravený. Prijaté server.crt и server.key už sme sa zaregistrovali vyššie v eap-guest.
A nakoniec pridajme do súboru naše prístupové body client.conf. Mám ich 7. Aby som nepridával každý bod zvlášť, napíšeme len sieť, v ktorej sa nachádzajú (moje prístupové body sú v samostatnej VLAN).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}Ubiquiti ovládač
Na ovládači vytvárame samostatnú sieť. Nech je to 192.168.2.0/24
Prejdite na nastavenia -> profil. Vytvárame nový:

Zapíšeme adresu a port radius servera a heslo, ktoré bolo zapísané v súbore klienti.conf:

Vytvorte nový názov bezdrôtovej siete. Ako metódu overenia vyberte WPA-EAP (Enterprise) a zadajte vytvorený rádiusový profil:

Všetko uložíme, prihlásime a ideme ďalej.
Nastavenie klientov
Začnime tým najťažším!
Windows 10
Ťažkosť spočíva v tom, že Windows Stále sa nedokáže pripojiť k firemnej Wi-Fi sieti cez doménu. Musíme teda manuálne pridať náš certifikát do dôveryhodného úložiska certifikátov. Môžete použiť buď certifikát s vlastným podpisom, alebo certifikát od certifikačnej autority. Ja použijem tú druhú.
Ďalej musíte vytvoriť nové pripojenie. Ak to chcete urobiť, prejdite do nastavení siete a internetu -> Centrum sietí -> Vytvoriť a nakonfigurovať nové pripojenie alebo sieť:



Manuálne zadajte názov siete a zmeňte typ zabezpečenia. Potom, čo klikneme na zmeniť nastavenia pripojenia a na karte Zabezpečenie vyberte overenie siete - EAP-TTLS.



Ideme do parametrov, predpíšeme dôvernosť autentifikácie - zákazník. Ako dôveryhodná certifikačná autorita vyberte certifikát, ktorý sme pridali, zaškrtnite políčko „Nevystavovať používateľovi pozvánku, ak server nie je možné autorizovať“ a vyberte metódu overenia - nezašifrované heslo (PAP).

Ďalej prejdite na rozšírené nastavenia a začiarknite políčko „Určiť režim overenia“. Vyberte „Overenie používateľa“ a kliknite na uložiť poverenia. Tu budete musieť zadať username_ldap a password_ldap



Všetko uložíme, aplikujeme, uzavrieme. Môžete sa pripojiť k novej sieti.
Linux
Skontroloval som Ubuntu 18.04, 18.10, Fedora 29, 30.
Najprv si stiahnite certifikát. Nenašiel som ho v Linux, je možné použiť systémové certifikáty a existuje vôbec takéto úložisko?
Poďme sa pripojiť k doméne. Preto potrebujeme certifikát od certifikačnej autority, od ktorej bol náš certifikát zakúpený.
Všetky pripojenia sú vytvorené v jednom okne. Výber našej siete:

anonymný klient
doména – doména, pre ktorú je certifikát vydaný
Android
iné ako Samsung
Od verzie 7 môžete pri pripájaní WiFi použiť systémové certifikáty zadaním iba domény:

doména – doména, pre ktorú je certifikát vydaný
anonymný klient
Samsung
Ako som písal vyššie, zariadenia Samsung nevedia používať systémové certifikáty pri pripojení k WiFi a nemajú možnosť pripojenia cez doménu. Preto musíte manuálne pridať koreňový certifikát certifikačnej autority (ca.pem, berieme ho na server Radius). Tu sa použije vlastnoručný podpis.
Stiahnite si certifikát do svojho zariadenia a nainštalujte ho.
Inštalácia certifikátu



Zároveň budete musieť nastaviť vzor odomknutia obrazovky, PIN kód alebo heslo, ak ešte nie je nastavené:


Ukázal som komplikovanú verziu inštalácie certifikátu. Na väčšine zariadení stačí kliknúť na stiahnutý certifikát.
Keď je certifikát nainštalovaný, môžete prejsť na pripojenie:

certifikát - uveďte ten, ktorý bol nainštalovaný
anonymný používateľ – hosť
macOS
Zariadenia Apple sa po vybalení môžu pripojiť iba k EAP-TLS, ale aj tak im musíte hodiť certifikát. Ak chcete určiť iný spôsob pripojenia, musíte použiť Apple Configurator 2. Najprv si ho teda musíte stiahnuť do svojho Macu, vytvoriť nový profil a pridať všetky potrebné nastavenia WiFi.
Apple konfigurátor

Tu zadajte názov siete
Typ zabezpečenia - WPA2 Enterprise
Akceptované typy EAP – TTLS
Používateľské meno a heslo - nechajte prázdne
Vnútorná autentifikácia - PAP
Vonkajšia identita-klient
Karta Dôvera. Tu špecifikujeme našu doménu
Všetky. Profil je možné uložiť, podpísať a distribuovať do zariadení
Keď je profil pripravený, musíte si ho stiahnuť do maku a nainštalovať. Počas procesu inštalácie budete musieť zadať usernmae_ldap a password_ldap používateľa:



iOS
Proces je podobný macOSMusíte použiť profil (môžete použiť rovnaký ako pre macOS(Postup vytvorenia profilu v Apple Configuratore nájdete vyššie.)
Stiahnite si profil, nainštalujte, zadajte poverenia, pripojte sa:






To je všetko. Nastavili sme server Radius, synchronizovali sme ho s FreeIPA a povedali sme Ubiquiti AP, aby používali WPA2-EAP.
Možné otázky
in: ako preniesť profil/certifikát na zamestnanca?
o: Všetky certifikáty/profily ukladám na ftp s webovým prístupom. Vybudovaná hosťovská sieť s rýchlostným limitom a prístupom iba na internet, s výnimkou ftp.
Autentifikácia trvá 2 dni, potom sa resetuje a klient zostane bez internetu. To. keď sa chce zamestnanec pripojiť na WiFi, najprv sa pripojí k hosťovskej sieti, pristúpi na FTP, stiahne si certifikát alebo profil, ktorý potrebuje, nainštaluje si ho a potom sa môže pripojiť k podnikovej sieti.
in: prečo nepoužiť schému s MSCHAPv2? Je bezpečnejšia!
o: Po prvé, táto schéma funguje dobre pre NPS (Windows Naša implementácia vyžaduje dodatočnú konfiguráciu LDAP (FreeIpa) a ukladanie hashov hesiel na serveri. Dodatočná konfigurácia sa neodporúča, pretože môže viesť k rôznym problémom so synchronizáciou účtov. Po druhé, hash je MD4, takže výrazne nezvyšuje bezpečnosť.
in: je možné autorizovať zariadenia podľa mac-adries?
o: NIE, toto nie je bezpečné, útočník môže zmeniť MAC adresy a ešte viac nie je na mnohých zariadeniach podporovaná autorizácia podľa MAC adries
in: čo vo všeobecnosti použiť všetky tieto certifikáty? môžeš sa pridať aj bez nich?
o: certifikáty sa používajú na autorizáciu servera. Tie. pri pripájaní zariadenie skontroluje, či ide o server, ktorému možno dôverovať alebo nie. Ak je, potom autentifikácia pokračuje, ak nie, spojenie sa uzavrie. Môžete sa pripojiť bez certifikátov, ale ak si útočník alebo sused nastaví rádius server a prístupový bod s rovnakým názvom ako máme my doma, môže ľahko zachytiť prihlasovacie údaje používateľa (nezabúdajte, že sa prenášajú ako čistý text). A keď sa použije certifikát, nepriateľ uvidí vo svojich protokoloch iba naše fiktívne používateľské meno - hosť alebo klient a chybu typu - neznámy certifikát CA
trochu viac o macOSZvyčajne na macOS Preinštalovanie systému sa vykonáva cez internet. V režime obnovy musí byť Mac pripojený k WiFi a ani naša firemná WiFi, ani hosťovská sieť nebudú fungovať. Osobne som nastavil inú sieť, bežnú sieť WPA2-PSK, skrytú, len pre technické účely. Prípadne si môžete vytvoriť bootovací USB disk s vopred nainštalovaným systémom. Ak je však váš Mac vyrobený po roku 2015, budete musieť pre tento USB disk nájsť adaptér.
Zdroj: hab.com
