WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Neki primjeri organiziranja korporativnog WiFi-a već su opisani. Ovdje ću opisati kako sam implementirao slično rješenje i probleme s kojima sam se morao suočiti prilikom povezivanja na različitim uređajima. Koristit ćemo postojeći LDAP s registriranim korisnicima, podići FreeRadius i konfigurirati WPA2-Enterprise na Ubnt kontroleru. Čini se da je sve jednostavno. Da vidimo…

Malo o EAP metodama

Prije nego što nastavimo sa zadatkom, moramo odlučiti koju metodu provjere autentičnosti ćemo koristiti u našem rješenju.

Iz Wikipedije:

EAP je okvir za provjeru autentičnosti koji se često koristi u bežičnim mrežama i vezama od točke do točke. Format je prvi put opisan u RFC 3748 i ažuriran u RFC 5247.
EAP se koristi za odabir metode provjere autentičnosti, prosljeđivanje ključeva i obradu tih ključeva pomoću dodataka koji se nazivaju EAP metode. Postoje mnoge metode EAP-a, definirane sa samim EAP-om i izdane od strane pojedinačnih dobavljača. EAP ne definira sloj veze, on samo definira format poruke. Svaki protokol koji koristi EAP ima vlastiti protokol enkapsulacije EAP poruka.

Same metode:

  • LEAP je vlasnički protokol koji je razvio CISCO. Pronađene ranjivosti. Trenutno se ne preporučuje korištenje
  • EAP-TLS je dobro podržan među bežičnim dobavljačima. To je siguran protokol jer je nasljednik SSL standarda. Postavljanje klijenta je prilično komplicirano. Osim lozinke potreban vam je certifikat klijenta. Podržano na mnogim sustavima
  • EAP-TTLS - široko podržan na mnogim sustavima, nudi dobru sigurnost korištenjem PKI certifikata samo na autentifikacijskom poslužitelju
  • EAP-MD5 je još jedan otvoreni standard. Nudi minimalnu sigurnost. Ranjiv, ne podržava međusobnu autentifikaciju i generiranje ključeva
  • EAP-IKEv2 - temeljen na Internet Key Exchange Protocol verziji 2. Omogućuje uzajamnu autentifikaciju i uspostavu ključa sesije između klijenta i poslužitelja
  • PEAP je zajedničko rješenje tvrtki CISCO, Microsoft i RSA Security kao otvoreni standard. Široko dostupan u proizvodima, pruža vrlo dobru sigurnost. Slično EAP-TTLS-u, zahtijeva samo certifikat na strani poslužitelja
  • PEAPv0/EAP-MSCHAPv2 - nakon EAP-TLS, ovo je drugi široko korišten standard u svijetu. Korišten odnos klijent-poslužitelj u Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC - Kreirao Cisco kao alternativu PEAPv0/EAP-MSCHAPv2. Ni na koji način ne štiti podatke za provjeru autentičnosti. Nije podržano na Windows OS-u
  • EAP-FAST je tehnika koju je razvio Cisco kako bi ispravio nedostatke LEAP-a. Koristi vjerodajnicu zaštićenog pristupa (PAC). Potpuno rohbau

Od sve te raznolikosti, izbor još uvijek nije velik. Tražila se metoda autentifikacije: dobra sigurnost, podrška na svim uređajima (Windows 10, macOS, Linux, Android, iOS) i, zapravo, što jednostavnije to bolje. Stoga je izbor pao na EAP-TTLS u kombinaciji s PAP protokolom.
Može se postaviti pitanje - Zašto koristiti PAP? jer prenosi lozinke u čistom obliku?

Da, tako je. Komunikacija između FreeRadiusa i FreeIPA odvijat će se na ovaj način. U načinu otklanjanja pogrešaka možete pratiti kako se korisničko ime i lozinka šalju. Da, i pusti ih, samo ti imaš pristup FreeRadius serveru.

Možete pročitati više o radu EAP-TTLS-a ovdje

FreeRADIUS

FreeRadius će biti podignut na CentOS 7.6. Ovdje nema ništa komplicirano, postavili smo ga na uobičajeni način.

yum install freeradius freeradius-utils freeradius-ldap -y

Iz paketa se instalira verzija 3.0.13. Ovo posljednje se može uzeti https://freeradius.org/

Nakon toga FreeRadius već radi. Možete dekomentirati redak u /etc/raddb/users

steve   Cleartext-Password := "testing"

Pokrenite poslužitelj u načinu otklanjanja pogrešaka

freeradius -X

I napravite probnu vezu s lokalnog hosta

radtest steve testing 127.0.0.1 1812 testing123

Imam odgovor Primljeni ID pristupa-prihvaćanja 115 od 127.0.0.1:1812 do 127.0.0.1:56081 duljina 20, znači da je sve OK. Samo naprijed.

Spojimo modul lDAP.

ln -s /etc/raddb/mods-available/ldap /etc/raddb/mods-enabled/ldap

I to ćemo odmah promijeniti. Potreban nam je FreeRadius da bismo mogli pristupiti FreeIPA-i

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

Ponovno pokrenite radius poslužitelj i provjerite sinkronizaciju LDAP korisnika:

radtest user_ldap password_ldap localhost 1812 testing123

Uređivanje eap in mods-enabled/eap
Ovdje dodajemo dvije instance eap. Razlikovat će se samo po certifikatima i ključevima. U nastavku ću objasniti zašto je to tako.

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"
           }
}

Daljnje uređivanje omogućeno na web-mjestu/zadano. Zanimljivi su odjeljci autorizacije i autentifikacije.

omogućeno na web-mjestu/zadano

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
}

U odjeljku za autorizaciju uklanjamo sve module koji nam nisu potrebni. Ostavljamo samo ldap. Dodajte potvrdu klijenta korisničkim imenom. Zato smo gore dodali dvije instance eap-a.

Višestruki EAPČinjenica je da ćemo spajanjem nekih uređaja koristiti certifikate sustava i odrediti domenu. Imamo certifikat i ključ od pouzdanog tijela za izdavanje certifikata. Osobno, po mom mišljenju, takav postupak povezivanja je lakši od bacanja samopotpisanog certifikata na svaki uređaj. Ali ni bez samopotpisanih certifikata, još uvijek nije išlo. Samsung uređaji i Android =< 6 verzije ne mogu koristiti certifikate sustava. Stoga za njih stvaramo zasebnu instancu eap-guest sa samopotpisanim certifikatima. Za sve ostale uređaje koristit ćemo eap-client s povjerljivim certifikatom. Korisničko ime određeno je poljem Anonymous kada je uređaj povezan. Dopuštene su samo 3 vrijednosti: Gost, Klijent i prazno polje. Sve ostalo se odbacuje. Bit će konfiguriran u političarima. Dat ću primjer malo kasnije.

Uredimo odjeljke za autorizaciju i autentifikaciju 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
}

Zatim morate u pravilima navesti koja se imena mogu koristiti za anonimnu prijavu. Uređivanje politika.d/filtar.

Morate pronaći retke slične ovome:

if (&outer.request:User-Name !~ /^(anon|@)/) {
  update request {
    Module-Failure-Message = "User-Name is not anonymized"
  }
  reject
}

I ispod u elsif dodajte željene vrijednosti:

elsif (&outer.request:User-Name !~ /^(guest|client|@)/) {
  update request {
    Module-Failure-Message = "User-Name is not anonymized"
  }
  reject
}

Sada moramo prijeći na imenik potvrde. Ovdje trebate staviti ključ i certifikat od pouzdanog autoriteta za izdavanje certifikata, koji već imamo i trebamo generirati samopotpisane certifikate za eap-guest.

Promijenite parametre u datoteci 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"

Zapisujemo iste vrijednosti u datoteku poslužitelj.cnf. Mijenjamo samo
uobičajeno ime:

poslužitelj.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"

Stvoriti:

make

Spreman. Primljeno server.crt и server.ključ već smo se registrirali gore u eap-guest.

I na kraju, dodajmo naše pristupne točke datoteci klijent.konf. Imam ih 7. Da ne bismo dodavali svaku točku posebno, napisat ćemo samo mrežu u kojoj se nalaze (moje pristupne točke su u posebnom VLAN-u).

client APs {
ipaddr = 192.168.100.0/24
password = password_AP
}

Ubiquiti kontroler

Podižemo zasebnu mrežu na kontroleru. Neka to bude 192.168.2.0/24
Idite na postavke -> profil. Stvaramo novi:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zapisujemo adresu i port radius servera i lozinku koja je zapisana u datoteci klijenti.konf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Stvorite novi naziv bežične mreže. Odaberite WPA-EAP (Enterprise) kao metodu provjere autentičnosti i navedite kreirani profil radijusa:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Spremamo sve, prijavimo se i idemo dalje.

Postavljanje klijenata

Počnimo s najtežim!

Windows 10

Poteškoća se svodi na činjenicu da Windows još ne zna kako se povezati na korporativni WiFi putem domene. Stoga moramo ručno prenijeti svoj certifikat u pouzdano spremište certifikata. Ovdje možete koristiti i samopotpisane i one od certifikacijskog tijela. Koristit ću drugi.

Zatim morate stvoriti novu vezu. Da biste to učinili, idite na mrežne i internetske postavke -> Centar za mrežu i dijeljenje -> Stvorite i konfigurirajte novu vezu ili mrežu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ručno unesite naziv mreže i promijenite vrstu sigurnosti. Nakon što kliknemo na promijeniti postavke veze te u kartici Sigurnost odaberite mrežnu provjeru autentičnosti - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ulazimo u parametre, propisujemo povjerljivost autentifikacije - klijent. Kao certifikacijsko tijelo od povjerenja, odaberite certifikat koji smo dodali, označite kućicu "Ne izdaj poziv korisniku ako se poslužitelj ne može autorizirati" i odaberite metodu autentifikacije - nešifrirana lozinka (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zatim idite na napredne postavke, stavite kvačicu na "Odredite način provjere autentičnosti." Odaberite "Autentikacija korisnika" i kliknite na spremi vjerodajnice. Ovdje ćete morati unijeti username_ldap i password_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Spremamo sve, prijavimo, zatvorimo. Možete se spojiti na novu mrežu.

Linux

Testirao sam na Ubuntu 18.04, 18.10, Fedora 29, 30.

Prvo preuzmimo naš certifikat. U Linuxu nisam našao je li moguće koristiti sistemske certifikate i postoji li uopće takva trgovina.

Spojimo se na domenu. Stoga nam je potreban certifikat certifikacijske kuće od koje je naš certifikat kupljen.

Sve veze se izvode u jednom prozoru. Odabir naše mreže:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonimni klijent
domena - domena za koju se izdaje certifikat

Android

ne-Samsung

Od verzije 7, kada povezujete WiFi, možete koristiti certifikate sustava navodeći samo domenu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domena - domena za koju se izdaje certifikat
anonimni klijent

Samsung

Kao što sam gore napisao, Samsung uređaji ne znaju koristiti sistemske certifikate pri spajanju na WiFi, a nemaju ni mogućnost povezivanja preko domene. Stoga morate ručno dodati korijenski certifikat certifikacijskog tijela (ca.pem, preuzimamo ga na Radius poslužitelju). Ovdje će se koristiti samopotpisani.

Preuzmite certifikat na svoj uređaj i instalirajte ga.

Instalacija certifikataWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Istodobno ćete morati postaviti uzorak za otključavanje zaslona, ​​pin kod ili lozinku, ako već nije postavljeno:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Pokazao sam kompliciranu verziju instaliranja certifikata. Na većini uređaja jednostavno kliknite na preuzeti certifikat.

Kada je certifikat instaliran, možete nastaviti s povezivanjem:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

certifikat - označite onaj koji je instaliran
anonimni korisnik - gost

macOS

Appleovi uređaji izvan kutije mogu se spojiti samo na EAP-TLS, ali svejedno im morate baciti certifikat. Da biste odredili drugu metodu povezivanja, trebate koristiti Apple Configurator 2. Sukladno tome, prvo ga morate preuzeti na svoj Mac, izraditi novi profil i dodati sve potrebne WiFi postavke.

Apple ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ovdje unesite naziv svoje mreže
Vrsta sigurnosti - WPA2 Enterprise
Prihvaćene vrste EAP-a - TTLS
Korisničko ime i lozinka - ostavite prazno
Unutarnja autentifikacija - PAP
Vanjski identitet klijenta

Kartica povjerenja. Ovdje specificiramo našu domenu

Svi. Profil se može spremiti, potpisati i distribuirati na uređaje

Nakon što je profil spreman, trebate ga preuzeti na mak i instalirati. Tijekom procesa instalacije morat ćete navesti usernmae_ldap i password_ldap korisnika:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

Proces je sličan macOS-u. Morate koristiti profil (možete koristiti isti kao za macOS. Kako napraviti profil u Apple Configuratoru, pogledajte gore).

Preuzmite profil, instalirajte, unesite vjerodajnice, povežite se:

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

To je sve. Postavili smo Radius poslužitelj, sinkronizirali ga s FreeIPA-om i rekli Ubiquiti AP-ovima da koriste WPA2-EAP.

Moguća pitanja

NA: kako prenijeti profil/certifikat na zaposlenika?

OKO: Sve certifikate/profile pohranjujem na ftp s pristupom webu. Podigao mrežu za goste s ograničenjem brzine i pristupom samo internetu, s izuzetkom ftp-a.
Autentifikacija traje 2 dana, nakon čega se resetira i klijent ostaje bez interneta. Da. kada se zaposlenik želi spojiti na WiFi, prvo se spaja na mrežu za goste, pristupa FTP-u, preuzima certifikat ili profil koji mu je potreban, instalira ga, a zatim se može spojiti na korporativnu mrežu.

NA: zašto ne koristiti shemu s MSCHAPv2? Ona je sigurnija!

OKO: Prvo, takva shema dobro funkcionira na NPS (Windows Network Policy System), u našoj implementaciji potrebno je dodatno konfigurirati LDAP (FreeIpa) i pohraniti hashove lozinki na poslužitelj. Dodati. nije preporučljivo raditi postavke, jer. to može dovesti do raznih problema sinkronizacije ultrazvuka. Drugo, hash je MD4, tako da ne dodaje veliku sigurnost.

NA: je li moguće autorizirati uređaje prema mac-adresama?

OKO: NE, ovo nije sigurno, napadač može promijeniti MAC adrese, a još više autorizacija MAC adresama nije podržana na mnogim uređajima

NA: za što općenito sve te certifikate koristiti? možeš li se pridružiti bez njih?

OKO: certifikati se koriste za autorizaciju poslužitelja. Oni. prilikom spajanja uređaj provjerava je li poslužitelj kojem se može vjerovati ili ne. Ako jest, autentifikacija se nastavlja, ako nije, veza se prekida. Možete se spojiti bez certifikata, ali ako napadač ili susjed kod kuće postavi radijus poslužitelj i pristupnu točku s istim imenom kao i naš, lako može presresti korisničke vjerodajnice (ne zaboravite da se one prenose čistim tekstom). A kada se koristi certifikat, neprijatelj će u svojim zapisima vidjeti samo naše izmišljeno korisničko ime - gost ili klijent i pogrešku tipa - Unknown CA Certificate

još malo o macOS-uObično se na macOS-u ponovno instaliranje sustava vrši putem interneta. U načinu oporavka, Mac mora biti spojen na WiFi, a ni naš poslovni WiFi ni mreža za goste ovdje neće raditi. Osobno sam podigao drugu mrežu, uobičajeni WPA2-PSK, skriven, samo za tehničke operacije. Ili još uvijek možete unaprijed napraviti USB flash pogon za podizanje sustava sa sustavom. Ali ako je mak nakon 2015., ipak ćete morati pronaći adapter za ovaj flash pogon)

Izvor: www.habr.com

Dodajte komentar