WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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 ccà

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 https://freeradius.org/

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Scrivemu l'indirizzu è u portu di u servitore radiu è a password chì hè stata scritta in u schedariu clienti.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Crea un novu nome di rete wireless. Selezziunate WPA-EAP (Enterprise) cum'è u metudu di autentificazione è specificate u prufilu di radiu creatu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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 certificatuWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

À u listessu tempu, vi tuccherà à definisce u mudellu di sbloccare schermu, codice pin o password, s'ellu ùn hè digià stabilitu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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 ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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

Add a comment