Certi esempi di urganizazione di u WiFi corporativu sò digià stati descritti. Quì descriveraghju cumu aghju implementatu una suluzione simili è i prublemi chì aghju avutu per affruntà quandu si cunnessu in diversi dispositi. Useremu u LDAP esistente cù l'utilizatori registrati, cresce FreeRadius è cunfigurà WPA2-Enterprise nantu à u controller Ubnt. Tuttu pare esse simplice. Videmu…
Un pocu nantu à i metudi EAP
Prima di prucede cù u compitu, avemu bisognu di decide quale metudu di autentificazione usemu in a nostra suluzione.
Da Wikipedia:
EAP hè un framework d'autentificazione chì hè spessu usatu in e rete wireless è cunnessione puntu à puntu. U furmatu hè statu scrittu prima in RFC 3748 è aghjurnatu in RFC 5247.
EAP hè utilizatu per selezziunà un metudu di autentificazione, passà e chjave, è processà quelli chjave cù plug-in chjamati metudi EAP. Ci sò parechji metudi EAP, definiti cù EAP stessu è liberati da venditori individuali. EAP ùn definisce micca a capa di ligame, definisce solu u formatu di missaghju. Ogni protokollu chì usa EAP hà u so propiu protocolu di incapsulazione di messagi EAP.
I metudi stessi:
- LEAP hè un protokollu propiu sviluppatu da CISCO. Vulnerabilità trovate. Attualmente ùn hè micca cunsigliatu per aduprà
- EAP-TLS hè ben supportatu trà i venditori wireless. Hè un protokollu sicuru perchè hè u successore di i normi SSL. Stallà u cliente hè abbastanza complicata. Avete bisognu di un certificatu di cliente in più di a password. Supportatu nantu à parechji sistemi
- EAP-TTLS - largamente supportatu in parechji sistemi, offre una bona sicurità usendu certificati PKI solu nantu à u servitore di autentificazione
- EAP-MD5 hè un altru standard apertu. Offre una sicurità minima. Vulnerabile, ùn sustene micca l'autentificazione mutuale è a generazione di chjave
- EAP-IKEv2 - basatu nantu à Internet Key Exchange Protocol versione 2. Fornisce autentificazione mutuale è stabilimentu di chjave di sessione trà u cliente è u servitore
- PEAP hè una suluzione cumuna di CISCO, Microsoft è RSA Security cum'è standard apertu. Ampiamente dispunibule in i prudutti, furnisce una sicurità assai bona. Simile à EAP-TTLS, chì richiede solu un certificatu da u latu di u servitore
- PEAPv0/EAP-MSCHAPv2 - dopu à EAP-TLS, questu hè u sicondu standard largamente utilizatu in u mondu. Aduprate relazione cliente-servitore in Microsoft, Cisco, Apple, Linux
- PEAPv1/EAP-GTC - Creatu da Cisco cum'è alternativa à PEAPv0/EAP-MSCHAPv2. Ùn prutege micca i dati di autentificazione in ogni modu. Ùn hè micca supportatu in Windows OS
- EAP-FAST hè una tecnica sviluppata da Cisco per correggerà i difetti di LEAP. Utiliza credenziali d'accessu protetti (PAC). Completamente micca finitu
Di tutta sta diversità, l'scelta ùn hè ancu grande. U metudu di autentificazione era necessariu: bona sicurità, supportu in tutti i dispositi (Windows 10, macOS, Linux, Android, iOS) è, in fattu, u più simplice u megliu. Dunque, a scelta hè cascata nantu à EAP-TTLS in cunghjunzione cù u protocolu PAP.
A quistione pò esse - Perchè aduprà PAP? perchè trasmette password in u chjaru?
Iè hè ghjustu. A cumunicazione trà FreeRadius è FreeIPA si farà in questu modu. In u modu di debug, pudete seguità cumu u nome d'utilizatore è a password sò mandati. Iè, è lasciate andà, solu avete accessu à u servitore FreeRadius.
Pudete leghje più nantu à u travagliu di EAP-TTLS
FreeRADIUS
FreeRadius serà risuscitatu annantu à CentOS 7.6. Ùn ci hè nunda di complicatu quì, avemu stabilitu in u modu di solitu.
yum install freeradius freeradius-utils freeradius-ldap -y
A versione 3.0.13 hè stallata da i pacchetti. L'ultime pò esse pigliatu
Dopu quì, FreeRadius hè digià travagliatu. Pudete annullà a linea in /etc/raddb/users
steve Cleartext-Password := "testing"
Lanciate in u servitore in modu di debug
freeradius -X
È fate una cunnessione di prova da localhost
radtest steve testing 127.0.0.1 1812 testing123
Aviu una risposta Ricevutu Access-Accept Id 115 da 127.0.0.1:1812 à 127.0.0.1:56081 lunghezza 20, significa chì tuttu hè bè. Avanti.
Cunnetteremu u modulu ldap.
ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap
È cambiamu subitu. Avemu bisognu di FreeRadius per pudè accede à FreeIPA
mods-enabled/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}})"
}
...
Riavvia u servitore radiu è verificate a sincronizazione di l'utilizatori LDAP:
radtest user_ldap password_ldap localhost 1812 testing123
Editing eap in mods-enabled/eap
Quì aghjunghjemu dui casi di eap. Differiscenu solu in certificati è chjave. Sottu spiegheraghju perchè questu hè cusì.
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"
}
}
Ulteriore edizione Situ attivatu / predeterminatu. E sezioni d'autorizazione è di autentificazione sò d'interessu.
Situ attivatu / predeterminatu
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
}
In a sezione d'autorizazione, eliminemu tutti i moduli chì ùn avemu micca bisognu. Lascemu solu ldap. Aghjunghjite a verificazione di u cliente per nome d'utilizatore. Hè per quessa chì avemu aghjustatu dui casi di eap sopra.
Multi EAPU fattu hè chì quandu cunnessu certi dispositi, useremu certificati di sistema è specificà u duminiu. Avemu un certificatu è una chjave da una autorità di certificazione di fiducia. In modu persunale, in my opinion, una tale prucedura di cunnessione hè più faciule ch'è scaccià un certificatu autofirmatu nantu à ogni dispusitivu. Ma ancu senza certificati autofirmati, ùn hà micca travagliatu. I dispositi Samsung è Android =< 6 versioni ùn ponu micca aduprà certificati di sistema. Dunque, creemu una istanza separata di eap-guest per elli cù certificati autofirmati. Per tutti l'altri dispositi, useremu l'eap-client cun un certificatu di fiducia. U User-Name hè determinatu da u campu Anonymous quandu u dispusitivu hè cunnessu. Solu 3 valori sò permessi: Guest, Client è un campu viotu. Tuttu u restu hè scartatu. Serà cunfiguratu in i pulitici. Daraghju un esempiu un pocu dopu.
Editemu e sezioni d'autorizazione è autentificazione in site-enabled/inner-tunnel
site-enabled/inner-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
}
In seguitu, avete bisognu di specificà in e pulitiche quali nomi ponu esse utilizati per u login anonimu. Edizione pulitica.d/filtru.
Avete bisognu di truvà linee simili à questu:
if (&outer.request:User-Name !~ /^(anon|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
È sottu in elsif aghjunghje i valori desiderati:
elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
update request {
Module-Failure-Message = "User-Name is not anonymized"
}
reject
}
Avà avemu bisognu di passà à u cartulare certi. Quì avete bisognu di mette a chjave è u certificatu da una autorità di certificazione di fiducia, chì avemu digià è avemu bisognu di generà certificati autofirmati per eap-guest.
Cambia i paràmetri in u schedariu 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"
Scrivemu i stessi valori in u schedariu server.cnf. Cambiamu solu
nomu cumuni:
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"
Crea:
make
Pronti. Ricevutu server.crt и server.key avemu digià registratu sopra in eap-guest.
È infine, aghjunghje i nostri punti d'accessu à u schedariu cliente.conf. Ne aghju 7. Per ùn aghjunghje ogni puntu separatamente, scriveremu solu a reta in quale si trovanu (i mo punti d'accessu sò in una VLAN separata).
client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}
Ubiquiti controller
Alzamu una reta separata nantu à u controller. Chì sia 192.168.2.0/24
Andà à paràmetri -> prufilu. Creemu un novu:
Scrivemu l'indirizzu è u portu di u servitore radiu è a password chì hè stata scritta in u schedariu clienti.conf:
Crea un novu nome di rete wireless. Selezziunate WPA-EAP (Enterprise) cum'è u metudu di autentificazione è specificate u prufilu di radiu creatu:
Salvemu tuttu, applicà è andemu avanti.
Stabbilimentu di i clienti
Cuminciamu cù u più difficiule!
Windows 10
A difficultà vene à u fattu chì Windows ùn sapi ancu cumu cunnette à u WiFi corporativu via un duminiu. Dunque, avemu da carica manualmente u nostru certificatu à u magazinu di certificati di fiducia. Quì pudete aduprà sia autofirmatu sia da l'autorità di certificazione. Aduprà u sicondu.
Dopu, avete bisognu di creà una nova cunnessione. Per fà questu, andate à i paràmetri di rete è Internet -> Network and Sharing Center -> Crea è cunfigurà una nova cunnessione o rete:
Inserite manualmente u nome di a rete è cambia u tipu di sicurità. Dopu avemu cliccà nantu cambià i paràmetri di cunnessione è in a tabulazione Sicurezza, selezziunate l'autentificazione di a rete - EAP-TTLS.
Andemu in i paràmetri, prescrive a cunfidenziale di l'autentificazione - cliente. Cum'è una autorità di certificazione di fiducia, selezziunate u certificatu chì avemu aghjustatu, verificate a casella "Ùn emette micca un invitu à l'utilizatore se u servitore ùn pò micca esse autorizatu" è selezziunate u metudu di autentificazione - password unencrypted (PAP).
Dopu, andate à i paràmetri avanzati, mette un tick in "Specificate u modu di autentificazione". Selezziunà "User Authentication" è cliccate nant'à salvà credenziali. Quì avete bisognu di inserisce username_ldap è password_ldap
Salvemu tuttu, applicà, chjude. Pudete cunnette à una nova reta.
Linux
Aghju pruvatu nantu à Ubuntu 18.04, 18.10, Fedora 29, 30.
Prima, andemu à scaricà u nostru certificatu. Ùn aghju micca truvatu in Linux s'ellu hè pussibule di utilizà certificati di sistema è s'ellu ci hè un tali magazinu in tuttu.
Cunnettamu à u duminiu. Dunque, avemu bisognu di un certificatu da l'autorità di certificazione da quale u nostru certificatu hè statu acquistatu.
Tutte e cunnessione sò fatti in una finestra. Selezzione di a nostra rete:
cliente anonimu
duminiu - u duminiu per quale u certificatu hè emessu
Android
non-Samsung
Da a versione 7, quandu cunnette WiFi, pudete aduprà certificati di u sistema specificendu solu u duminiu:
duminiu - u duminiu per quale u certificatu hè emessu
cliente anonimu
Samsung
Cumu l'aghju scrittu sopra, i dispositi Samsung ùn sanu micca cumu utilizà i certificati di u sistema quandu si cunnette à WiFi, è ùn anu micca a capacità di cunnette via un duminiu. Dunque, duvete aghjunghje manualmente u certificatu radicali di l'autorità di certificazione (ca.pem, avemu pigliatu nantu à u servitore Radius). Eccu induve l'autofirmatu serà utilizatu.
Scaricate u certificatu à u vostru dispositivu è installate.
Installazione di certificatu
À u listessu tempu, vi tuccherà à definisce u mudellu di sbloccare schermu, codice pin o password, s'ellu ùn hè digià stabilitu:
Aghju dimustratu una versione cumplicata di installà un certificatu. Nant'à a maiò parte di i dispositi, basta à cliccà nantu à u certificatu telecaricatu.
Quandu u certificatu hè stallatu, pudete passà à a cunnessione:
certificatu - indicà quellu chì hè stallatu
utilizatore anonimu - invitatu
macOS
I dispositi Apple fora di a scatula ponu cunnette solu à EAP-TLS, ma avete sempre bisognu di scaccià un certificatu. Per specificà un metudu di cunnessione differenti, avete bisognu di utilizà Apple Configurator 2. In cunsiquenza, prima deve esse scaricatu à u vostru Mac, crea un novu prufilu è aghjunghje tutti i paràmetri WiFi necessarii.
Apple Configurator
Inserite u vostru nome di rete quì
Tipu di sicurità - WPA2 Enterprise
Tipi EAP accettati - TTLS
User Name è Password - lasciate viotu
Autenticazione interna - PAP
Outer Identity-client
Tabulazione di fiducia. Quì avemu specificà u nostru duminiu
Tuttu. U prufilu pò esse salvatu, firmatu è distribuitu à i dispositi
Dopu à u prufilu hè prontu, vi tocca à scaricà lu à u papaveru è stallà lu. Durante u prucessu di stallazione, avete bisognu di specificà u usernmae_ldap è password_ldap di l'utilizatore:
iOS
U prucessu hè simile à macOS. Avete bisognu di usà un prufilu (pudete aduprà u listessu chì per macOS. Cumu creà un prufilu in Apple Configurator, vede sopra).
Scaricate u prufilu, installate, inserite credenziali, cunnette:
Eccu tuttu. Avemu stallatu un servitore Radius, sincronizatu cù FreeIPA, è hà dettu à Ubiquiti APs per utilizà WPA2-EAP.
Pussibili dumande
IN: cumu trasfiriri un prufilu / certificatu à un impiegatu?
QUI: Guardu tutti i certificati / profili in ftp cù accessu web. Alzatu una reta d'ospiti cù un limitu di velocità è accessu solu à Internet, cù l'eccezzioni di ftp.
L'autentificazione dura 2 ghjorni, dopu à quale hè resettata è u cliente hè lasciatu senza Internet. Chì. quandu un impiigatu vole cunnette à WiFi, prima cunnetta à a reta di l'ospiti, accede à FTP, scaricate u certificatu o prufilu chì hà bisognu, l'installa, è poi pò cunnette à a reta corporativa.
IN: perchè ùn aduprà schema cù MSCHAPv2? Hè più sicura !
QUI: Prima, un tali schema funziona bè in NPS (Windows Network Policy System), in a nostra implementazione hè necessariu di cunfigurà in più LDAP (FreeIpa) è almacenà i hash di password in u servitore. Add. ùn hè micca cunsigliatu per fà paràmetri, perchè. chistu pò purtà à parechji prublemi di sincronizà l'ultrasound. Siconda, l'hash hè MD4, perchè ùn aghjunghje micca assai sicurità.
IN: hè pussibule auturizà i dispositi per indirizzi mac?
QUI: NO, questu ùn hè micca sicuru, un attaccu pò cambià l'indirizzi MAC, è ancu di più l'autorizazione per l'indirizzi MAC ùn hè micca supportatu in parechji dispositi
IN: ciò chì in generale tutti questi certificati à aduprà? pudete unisce senza elli?
QUI: i certificati sò usati per auturizà u servitore. Quelli. quandu si cunnette, u dispusitivu verifica s'ellu hè un servitore chì pò esse fiducia o micca. S'ellu hè, allora l'autentificazione continua, se no, a cunnessione hè chjusa. Pudete cunnette senza certificati, ma se un attaccu o un vicinu crea un servitore di radiu è un puntu d'accessu cù u stessu nome di u nostru in casa, pò facilmente intercepte e credenziali di l'utilizatori (ùn vi scurdate chì sò trasmessi in testu chjaru). È quandu un certificatu hè utilizatu, u nemicu vede in i so logs solu u nostru nome d'utilizatore fittizio - ospite o cliente è un errore di tipu - Unknown CA Certificate
un pocu di più nantu à macOSDi solitu in macOS, a reinstallazione di u sistema hè fatta via Internet. In u modu di ricuperazione, u Mac deve esse cunnessu à u WiFi, è nè u nostru WiFi corporativu nè a reta di l'ospiti travaglianu quì. In modu persunale, aghju risuscitatu una altra reta, u solitu WPA2-PSK, oculatu, solu per operazioni tecniche. O pudete ancu fà una unità flash USB bootable cù u sistema in anticipu. Ma se u papaveru hè dopu à 2015, avete sempre bisognu di truvà un adattatore per questa unità flash)
Source: www.habr.com