WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Neki primjeri organiziranja korporativnog WiFi-a su već 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. Koristićemo postojeći LDAP sa registrovanim korisnicima, podići FreeRadius i konfigurisati 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 koji ćemo metod provjere autentičnosti koristiti u našem rješenju.

Sa Wikipedije:

EAP je okvir za autentifikaciju koji se često koristi u bežičnim mrežama i vezama točka-tačka. 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. Postoji mnogo EAP metoda, koje su definirane samim EAP-om i koje su izdali pojedinačni dobavljači. EAP ne definira sloj veze, on samo definira format poruke. Svaki protokol koji koristi EAP ima svoj vlastiti protokol za enkapsulaciju EAP poruka.

Same metode:

  • LEAP je vlasnički protokol koji je razvio CISCO. Pronađene ranjivosti. Trenutno se ne preporučuje upotreba
  • EAP-TLS je dobro podržan među proizvođačima bežičnih mreža. To je siguran protokol jer je nasljednik SSL standarda. Postavljanje klijenta je prilično komplikovano. Potreban vam je i certifikat klijenta pored lozinke. Podržano na mnogim sistemima
  • EAP-TTLS - široko podržan na mnogim sistemima, nudi dobru sigurnost korištenjem PKI certifikata samo na serveru za autentifikaciju
  • EAP-MD5 je još jedan otvoreni standard. Nudi minimalnu sigurnost. Ranjivo, ne podržava međusobnu autentifikaciju i generiranje ključeva
  • EAP-IKEv2 - baziran na Internet Key Exchange Protocol verzija 2. Pruža međusobnu autentifikaciju i uspostavljanje ključa sesije između klijenta i servera
  • PEAP je zajedničko rješenje CISCO-a, Microsoft-a i RSA Security-a kao otvorenog standarda. Široko dostupan u proizvodima, pruža vrlo dobru sigurnost. Slično EAP-TTLS, zahtijeva samo certifikat na strani servera
  • PEAPv0/EAP-MSCHAPv2 - nakon EAP-TLS-a, ovo je drugi široko korišteni standard u svijetu. Korišćen odnos klijent-server u Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC - Kreirao Cisco kao alternativu PEAPv0/EAP-MSCHAPv2. Ni na koji način ne štiti podatke za autentifikaciju. Nije podržano na Windows OS-u
  • EAP-FAST je tehnika koju je razvio Cisco da ispravi nedostatke LEAP-a. Koristi vjerodajnice zaštićenog pristupa (PAC). Potpuno nedovršen

Od sve te raznolikosti, izbor ipak nije velik. Metoda autentifikacije je bila potrebna: 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 sprezi sa PAP protokolom.
Može se postaviti pitanje - Zašto koristiti PAP? jer prenosi lozinke u jasnom obliku?

Da, tako je. Komunikacija između FreeRadiusa i FreeIPA će se odvijati na ovaj način. U načinu za otklanjanje grešaka, možete pratiti kako se korisničko ime i lozinka šalju. Da, i pustite ih, samo vi imate pristup FreeRadius serveru.

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

FreeRADIUS

FreeRadius će biti podignut na CentOS-u 7.6. Ovdje nema ništa komplikovano, postavljamo to na uobičajen način.

yum install freeradius freeradius-utils freeradius-ldap -y

Verzija 3.0.13 je instalirana iz paketa. Ovo poslednje se može uzeti https://freeradius.org/

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

steve   Cleartext-Password := "testing"

Pokrenite na server u načinu za otklanjanje grešaka

freeradius -X

I napravite probnu vezu sa lokalnog hosta

radtest steve testing 127.0.0.1 1812 testing123

Imam odgovor Primljeni ID prihvatanja pristupa 115 od 127.0.0.1:1812 do 127.0.0.1:56081 dužine 20, znači da je sve u redu. Nastavi.

Povezujemo 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

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

Ponovo pokrenite radius server i provjerite sinhronizaciju LDAP korisnika:

radtest user_ldap password_ldap localhost 1812 testing123

Uređivanje eap in mods-enabled/eap
Ovdje dodajemo dvije instance eap-a. Oni će se razlikovati 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"
           }
}

Dalje uređivanje site-enabled/default. Odjeljci autorizacije i autentifikacije su od interesa.

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
}

U odjeljku autorizacija uklanjamo sve module koji nam nisu potrebni. Ostavljamo samo ldap. Dodajte verifikaciju klijenta po korisničkom imenu. Zato smo gore dodali dvije instance eap-a.

Multi EAPČinjenica je da ćemo prilikom povezivanja nekih uređaja koristiti sistemske certifikate i navesti domenu. Imamo certifikat i ključ od pouzdanog autoriteta za izdavanje certifikata. Lično, po mom mišljenju, takva procedura povezivanja je lakša od bacanja samopotpisanog certifikata na svaki uređaj. Ali čak i bez samopotpisanih certifikata, još uvijek nije išlo. Samsung uređaji i Android =< 6 verzija ne mogu koristiti sistemske certifikate. Stoga za njih kreiramo zasebnu instancu eap-guest sa samopotpisanim certifikatima. Za sve ostale uređaje koristit ćemo eap-client s pouzdanim certifikatom. Korisničko ime je određeno poljem Anonymous kada je uređaj povezan. Dozvoljene su samo 3 vrijednosti: Gost, Klijent i prazno polje. Sve ostalo se odbacuje. To će biti konfigurisano u političarima. Navest ću primjer malo kasnije.

Uredimo odjeljke za autorizaciju i autentifikaciju u 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 imena se mogu koristiti za anonimnu prijavu. Uređivanje policy.d/filter.

Morate pronaći linije slične ovoj:

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 se moramo pomaknuti u direktorij certifikati. Ovdje trebate staviti ključ i certifikat od pouzdanog certifikacijskog tijela, koje već imamo i koje 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"

Iste vrijednosti upisujemo u datoteku server.cnf. Mi se samo menjamo
uobičajeno ime:

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"

Stvoriti:

make

Spreman. Primljeno server.crt и server.key već smo se registrovali gore u eap-guest.

I na kraju, dodajmo naše pristupne tačke datoteci client.conf. Imam ih 7. Da ne bi dodavali svaku tačku posebno, napisaćemo samo mrežu u kojoj se nalaze (moje pristupne tač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 bude 192.168.2.0/24
Idite na podešavanja -> profil. Kreiramo novi:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Upisujemo adresu i port radius servera i lozinku koja je zapisana u datoteci clients.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Kreirajte 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

Sve čuvamo, apliciramo i idemo dalje.

Postavljanje klijenata

Počnimo sa 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 učitati naš certifikat u pouzdano spremište certifikata. Ovdje možete koristiti i samopotpisane i od certifikacijskog tijela. Koristiću drugu.

Zatim morate kreirati novu vezu. Da biste to učinili, idite na postavke mreže i interneta -> Centar za mrežu i dijeljenje -> Kreirajte 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 i na kartici Sigurnost izaberite mrežnu autentifikaciju - 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 pouzdano certifikacijsko tijelo, odaberite certifikat koji smo dodali, označite kućicu "Nemojte izdavati pozivnicu korisniku ako server ne može biti autoriziran" i odaberite metodu provjere autentičnosti - nešifrirana lozinka (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zatim idite na napredne postavke, stavite kvačicu na "Odredi način provjere autentičnosti". Odaberite "User Authentication" i kliknite na sačuvati 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

Sve čuvamo, apliciramo, zatvaramo. Možete se povezati 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 da li je moguće koristiti sistemske certifikate i postoji li uopće takva trgovina.

Povežimo se na domenu. Stoga nam je potreban certifikat od certifikacijskog tijela od kojeg je naš certifikat kupljen.

Svi priključci 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 sistemske certifikate 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 da koriste sistemske sertifikate prilikom povezivanja na WiFi, a nemaju ni mogućnost povezivanja preko domena. Stoga morate ručno dodati korijenski certifikat certifikacijskog tijela (ca.pem, preuzimamo ga na Radius serveru). 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

Istovremeno, morat ćete postaviti uzorak za otključavanje ekrana, pin kod ili lozinku, ako već nije postavljen:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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

Kada je sertifikat instaliran, možete nastaviti sa povezivanjem:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

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

MacOS

Apple uređaji izvan kutije mogu se povezati samo na EAP-TLS, ali im i dalje trebate baciti certifikat. Da biste odredili drugačiji način povezivanja, trebate koristiti Apple Configurator 2. U skladu s tim, prvo ga morate preuzeti na svoj Mac, kreirati 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 EAP vrste - TTLS
Korisničko ime i lozinka - ostavite prazno
Unutrašnja autentifikacija - PAP
Vanjski identitet-klijent

Kartica povjerenja. Ovdje specificiramo našu domenu

Sve. Profil se može sačuvati, potpisati i distribuirati uređajima

Nakon što je profil spreman, potrebno je da ga preuzmete u mak i instalirate. Tokom 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 i za macOS. Kako kreirati profil u Apple Configuratoru, pogledajte gore).

Preuzmite profil, instalirajte, unesite akreditive, 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 server, sinkronizirali ga sa FreeIPA-om i rekli Ubiquiti AP-ovima da koriste WPA2-EAP.

Moguća pitanja

AT: kako prenijeti profil/sertifikat zaposleniku?

O: Sve certifikate/profile pohranjujem na ftp sa web pristupom. Podignuo mrežu za goste sa ograničenjem brzine i pristupom samo Internetu, sa izuzetkom ftp-a.
Autentifikacija traje 2 dana, nakon čega se resetuje i klijent ostaje bez interneta. To. kada se zaposlenik želi povezati na WiFi, prvo se povezuje na mrežu za goste, pristupa FTP-u, preuzima certifikat ili profil koji mu je potreban, instalira ga, a zatim se može povezati na korporativnu mrežu.

AT: zašto ne koristiti šemu sa MSCHAPv2? Ona je sigurnija!

O: Prvo, takva šema dobro funkcioniše na NPS (Windows Network Policy System), u našoj implementaciji potrebno je dodatno konfigurisati LDAP (FreeIpa) i čuvati hešove lozinki na serveru. Dodati. nije preporučljivo vršiti podešavanja, jer. to može dovesti do raznih problema u sinhronizaciji ultrazvuka. Drugo, heš je MD4, tako da ne dodaje veliku sigurnost.

AT: da li je moguće autorizirati uređaje po mac-adresama?

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

AT: čemu općenito koristiti sve ove certifikate? možeš li se pridružiti bez njih?

O: sertifikati se koriste za autorizaciju servera. One. prilikom povezivanja, uređaj provjerava da li se radi o serveru kojem se može vjerovati ili ne. Ako jeste, onda se autentifikacija nastavlja, ako nije, veza se zatvara. Možete se povezati bez sertifikata, ali ako napadač ili susjed postavi radijus server i pristupnu tačku sa istim imenom kao naša kod kuće, može lako presresti korisničke akreditive (ne zaboravite da se prenose u čistom tekstu). A kada se koristi certifikat, neprijatelj će u svojim logovima vidjeti samo naše fiktivno korisničko ime - gost ili klijent i grešku u tipu - nepoznati CA certifikat

malo više o macOS-uObično se na macOS-u ponovno instaliranje sistema vrši putem interneta. U načinu oporavka, Mac mora biti povezan na WiFi, a ni naša korporativna WiFi ni mreža za goste ovdje neće raditi. Lično sam podigao još jednu mrežu, uobičajenu WPA2-PSK, skrivenu, samo za tehničke operacije. Ili još uvijek možete unaprijed napraviti USB fleš disk sa sistemom za pokretanje. Ali ako je mak nakon 2015., i dalje ćete morati pronaći adapter za ovaj fleš disk)

izvor: www.habr.com

Dodajte komentar