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 - po EAP-TLS ide o druhý široko používaný štandard na svete. Použitý vzťah klient-server v Microsoft, Cisco, Apple, 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 operačnom systéme Windows
- 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é
Zo všetkej tejto rozmanitosti výber stále nie je veľký. Požadovaný bol spôsob overenia: dobré zabezpečenie, podpora na všetkých zariadeniach (Windows 10, macOS, Linux, Android, iOS) a vlastne čím jednoduchšie, tým lepšie. Preto voľba padla 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
FreeRadius sa zvýši na CentOS 7.6. Nie je tu nič zložité, nastavíme to obvyklým spôsobom.
yum install freeradius freeradius-utils freeradius-ldap -y
Verzia 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 -X
A vytvorte testovacie pripojenie z localhost
radtest steve testing 127.0.0.1 1812 testing123
Dostal 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/ldap
A 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 EAPFaktom je, že pri pripájaní niektorých zariadení budeme používať systémové certifikáty a špecifikovať doménu. Máme certifikát a kľúč od dôveryhodnej certifikačnej autority. Osobne je podľa mňa takýto postup pripojenia jednoduchší, ako hodiť na každé zariadenie certifikát s vlastným podpisom. Ale ani bez certifikátov s vlastným podpisom to stále nešlo. Zariadenia Samsung a verzie Android =< 6 nemôžu používať systémové certifikáty. Preto pre nich 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é poľom Anonymný pri pripojení zariadenia. Povolené sú len 3 hodnoty: Hosť, Klient a prázdne pole. Všetko ostatné sa vyhodí. Bude to nakonfigurované v politikoch. Trochu neskôr uvediem príklad.
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 = [email protected]
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 = [email protected]
commonName = "Server Certificate FreeRadius"
Vytvoriť:
make
Pripravený. 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
Problém spočíva v tom, že systém Windows ešte nevie, ako sa pripojiť k firemnej WiFi prostredníctvom domény. Preto musíme náš certifikát manuálne nahrať do úložiska dôveryhodných certifikátov. Tu môžete použiť ako vlastnoručne podpísané, tak aj od certifikačnej autority. Použijem 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
Testoval som na Ubuntu 18.04, 18.10, Fedora 29, 30.
Najprv si stiahneme náš certifikát. V Linuxe som nenašiel, či je možné použiť systémové certifikáty a či vôbec takýto obchod existuje.
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ý ako v systéme macOS. Musíte použiť profil (môžete použiť rovnaký ako pre macOS. Ako vytvoriť profil v Apple Configurator, pozri 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é, takáto schéma funguje dobre na NPS (Windows Network Policy System), v našej implementácii je potrebné dodatočne nakonfigurovať LDAP (FreeIpa) a uložiť hash hesiel na server. Pridať. nie je vhodné vykonávať nastavenia, pretože. to môže viesť k rôznym problémom so synchronizáciou ultrazvuku. Po druhé, hash je MD4, takže nepridáva veľa bezpečnosti.
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 macOSV systéme macOS sa preinštalovanie systému zvyčajne vykonáva cez internet. V režime obnovenia musí byť Mac pripojený k WiFi a nebude tu fungovať ani naša firemná WiFi, ani sieť pre hostí. Osobne som zdvihol inú sieť, obvyklú WPA2-PSK, skrytú, len pre technické operácie. Alebo si stále môžete vopred vytvoriť bootovací USB flash disk so systémom. Ale ak je mak po roku 2015, stále budete musieť nájsť adaptér pre tento flash disk)
Zdroj: hab.com