WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Nekaj ​​primerov organizacije korporativnega WiFi-ja je bilo že opisanih. Tukaj bom opisal, kako sem implementiral takšno rešitev in na kakšne težave sem naletel pri povezovanju na različnih napravah. Uporabili bomo obstoječi LDAP z uveljavljenimi uporabniki, namestili FreeRadius in konfigurirali WPA2-Enterprise na krmilniku Ubnt. Vse se zdi preprosto. Pa poglejmo…

Malo o metodah EAP

Preden se lotimo naloge, se moramo odločiti, katero metodo avtentikacije bomo uporabili v naši rešitvi.

Iz Wikipedije:

EAP je okvir za preverjanje pristnosti, ki se pogosto uporablja v brezžičnih omrežjih in povezavah od točke do točke. Format je bil prvič opisan v RFC 3748 in posodobljen v RFC 5247.
EAP se uporablja za izbiro metode preverjanja pristnosti, prenos ključev in obdelavo teh ključev z vtičniki, imenovanimi metode EAP. Obstaja veliko metod EAP, tako definiranih s samim EAP kot tistih, ki so jih izdali posamezni prodajalci. EAP ne definira povezovalnega sloja, definira le obliko sporočila. Vsak protokol, ki uporablja EAP, ima svoj protokol za inkapsulacijo sporočil EAP.

Same metode:

  • LEAP je lastniški protokol, ki ga je razvil CISCO. Najdene ranljivosti. Trenutno ni priporočljivo za uporabo
  • EAP-TLS je dobro podprt med ponudniki brezžičnih storitev. Gre za varen protokol, ker je naslednik standardov SSL. Nastavitev odjemalca je precej zapletena. Poleg gesla potrebujete tudi potrdilo odjemalca. Podprto v številnih sistemih
  • EAP-TTLS - široko podprt v mnogih sistemih, ponuja dobro varnost z uporabo potrdil PKI samo na strežniku za preverjanje pristnosti
  • EAP-MD5 je še en odprt standard. Ponuja minimalno varnost. Ranljiv, ne podpira medsebojne avtentikacije in generiranja ključev
  • EAP-IKEv2 - temelji na internetnem protokolu za izmenjavo ključev različice 2. Zagotavlja vzajemno avtentikacijo in vzpostavitev sejnega ključa med odjemalcem in strežnikom
  • PEAP je skupna rešitev med CISCO, Microsoft in RSA Security kot odprt standard. Široko dostopen v izdelkih, zagotavlja zelo dobro varnost. Podobno kot EAP-TTLS, zahteva samo potrdilo na strani strežnika
  • PEAPv0/EAP-MSCHAPv2 - Po EAP-TLS je to drugi široko uporabljen standard na svetu. Uporabljeno razmerje odjemalec-strežnik v Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC – Ustvaril Cisco kot alternativo PEAPv0/EAP-MSCHAPv2. Na noben način ne ščiti podatkov za preverjanje pristnosti. Ni podprto v OS Windows
  • EAP-FAST je metoda, ki jo je razvil Cisco za odpravo pomanjkljivosti LEAP. Uporablja poverilnice za zaščiten dostop (PAC). Popolnoma nedokončano

Od vse te raznolikosti izbira še vedno ni velika. Zahtevan način preverjanja pristnosti: dobra varnost, podpora na vseh napravah (Windows 10, macOS, Linux, Android, iOS) in pravzaprav enostavnejše, bolje. Zato je izbira padla na EAP-TTLS v povezavi s protokolom PAP.
Lahko se pojavi vprašanje - Zakaj uporabljati PAP? Konec koncev prenaša gesla v čistem besedilu?

Da, tako je. Komunikacija med FreeRadiusom in FreeIPA bo potekala točno tako. V načinu za odpravljanje napak lahko spremljate, kako sta poslana uporabniško ime in geslo. Da, in pusti jih, samo ti imaš dostop do strežnika FreeRadius.

Preberete lahko več o delovanju EAP-TTLS tukaj

FreeRADIUS

FreeRadius bomo nadgradili na CentOS 7.6. Tukaj ni nič zapletenega, namestimo ga na običajen način.

yum install freeradius freeradius-utils freeradius-ldap -y

Od paketov je nameščena verzija 3.0.13. Slednje lahko vzamete na https://freeradius.org/

Po tem FreeRadius že deluje. Vrstico lahko odkomentirate v /etc/raddb/users

steve   Cleartext-Password := "testing"

Zaženite strežnik v načinu za odpravljanje napak

freeradius -X

In vzpostavite testno povezavo z lokalnega gostitelja

radtest steve testing 127.0.0.1 1812 testing123

Dobili smo odgovor Prejeti ID dostopa-sprejma 115 od 127.0.0.1:1812 do 127.0.0.1:56081 dolžina 20, pomeni, da je vse OK. Kar daj.

Priključitev modula ldap.

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

In takoj ga bomo spremenili. Za dostop do FreeIPA potrebujemo FreeRadius

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 zaženite radius strežnik in preverite sinhronizacijo uporabnikov LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Urejanje eap in mods-enabled/eap
Tukaj bomo dodali dva primerka eap. Razlikovali se bodo le v certifikatih in ključih. Zakaj je to res, bom pojasnil spodaj.

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

Naprej urejamo spletno mesto omogočeno/privzeto. Zanimajo me razdelki za avtorizacijo in overjanje.

spletno mesto omogočeno/privzeto

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 razdelku avtoriziranja odstranimo vse module, ki jih ne potrebujemo. Pustimo samo ldap. Dodajte preverjanje stranke z uporabniškim imenom. Zato smo zgoraj dodali dva primerka eap.

Multi EAPDejstvo je, da bomo pri povezovanju nekaterih naprav uporabili sistemska potrdila in določili domeno. Imamo potrdilo in ključ zaupanja vrednega overitelja potrdil. Osebno menim, da je ta postopek povezovanja enostavnejši od vstavljanja samopodpisanega potrdila na vsako napravo. Toda tudi brez samopodpisanih potrdil še vedno ni bilo mogoče oditi. Naprave Samsung in Android =< 6 različice ne znajo uporabljati sistemskih certifikatov. Zato zanje ustvarimo ločen primerek eap-guest s samopodpisanimi potrdili. Za vse ostale naprave bomo uporabljali eap-client z zaupanja vrednim certifikatom. Uporabniško ime je določeno s poljem Anonymous pri povezovanju naprave. Dovoljene so samo 3 vrednosti: gost, odjemalec in prazno polje. Vse ostalo je zavrženo. To je mogoče konfigurirati v pravilnikih. Primer bom dal malo kasneje.

Uredimo razdelka za avtorizacijo in overjanje v site-enabled/notranji tunel

site-enabled/notranji 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
}

Nato morate v pravilnikih določiti, katera imena se lahko uporabljajo za anonimno prijavo. Urejanje pravilnik.d/filter.

Najti morate vrstice, podobne tej:

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

In spodaj v elsif dodajte potrebne vrednosti:

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

Zdaj se moramo premakniti v imenik potrdila. Tukaj moramo vstaviti ključ in potrdilo zaupanja vrednega overitelja, ki ga že imamo, in ustvariti moramo samopodpisana potrdila za eap-guest.

Spreminjanje parametrov v datoteki 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 = admin@admin.ru
commonName = "CA FreeRadius"

V datoteko zapišemo enake vrednosti strežnik.cnf. Samo spreminjamo se
pogosto ime:

strežnik.cnf


...
default_days = 3650
default_md = sha256
...
input_password = blablabla
output_password = blablabla
...
countryName = RU
stateOrProvinceNmae = State
localityNmae = City
organizationName = NONAME
emailAddress = admin@admin.ru
commonName = "Server Certificate FreeRadius"

Ustvarjamo:

make

pripravljena Prejeto server.crt и server.key Registrirali smo se že zgoraj v eap-guest.

In nazadnje, dodamo naše dostopne točke v datoteko client.conf. Imam jih 7. Da ne dodajamo vsake točke posebej, bomo registrirali samo omrežje, v katerem se nahajajo (moje dostopne točke so v ločenem VLAN-u).

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

Krmilnik Ubiquiti

Na krmilniku dvignemo ločeno omrežje. Naj bo 192.168.2.0/24
Pojdite na nastavitve -> profil. Ustvarimo novo:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zapišemo naslov in vrata radius strežnika ter geslo, ki je bilo zapisano v datoteki clients.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ustvarite novo ime brezžičnega omrežja. Izberite WPA-EAP (Enterprise) kot način preverjanja pristnosti in določite ustvarjeni radius profil:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vse shranimo, nanesemo in gremo naprej.

Nastavitev strank

Začnimo z najtežjim delom!

Windows 10

Težava je v tem, da Windows še ne zna vzpostaviti povezave s poslovnim WiFi prek domene. Zato moramo svoje potrdilo ročno naložiti v zaupanja vredno shrambo potrdil. Tukaj lahko uporabite samopodpisano ali tisto od certifikacijskega organa. Uporabil bom drugo.

Nato morate ustvariti novo povezavo. Če želite to narediti, pojdite na Nastavitve omrežja in interneta -> Središče za omrežje in skupno rabo -> Ustvarite in konfigurirajte novo povezavo ali omrežje:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ročno vnesemo ime omrežja in spremenimo vrsto varnosti. Nato kliknite na spremenite nastavitve povezave in v zavihku Varnost izberite avtentikacijo omrežja - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Pojdite v nastavitve, nastavite zaupnost preverjanja pristnosti - stranke. Kot zaupanja vreden overitelj izberite potrdilo, ki smo ga dodali, označite polje »Ne izdaj povabila uporabniku, če strežnika ni mogoče avtorizirati« in izberite način preverjanja pristnosti - golo besedilo (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Nato pojdite na dodatne parametre in potrdite polje »Določi način preverjanja pristnosti«. Izberite »Preverjanje pristnosti uporabnika« in kliknite shranite poverilnice. Tukaj boste morali vnesti uporabniško ime_ldap in geslo_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vse shranimo, prijavimo, zapremo. Lahko se povežete z novim omrežjem.

Linux

Preizkusil sem na Ubuntu 18.04, 18.10, Fedora 29, 30.

Najprej prenesite certifikat zase. V Linuxu nisem zasledil, ali je možna uporaba sistemskih certifikatov in ali sploh obstaja taka trgovina.

Povezali se bomo preko domene. Zato potrebujemo potrdilo overitelja, pri katerem smo potrdilo kupili.

Vse povezave se izvajajo v enem oknu. Izberite naše omrežje:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonimen - stranka
domena — domena, za katero je bil izdan certifikat

Android

ne-Samsung

Od različice 7 lahko pri povezovanju WiFi uporabljate sistemska potrdila tako, da navedete samo domeno:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domena — domena, za katero je bil izdan certifikat
anonimen - stranka

Samsung

Kot sem že zgoraj napisal Samsung naprave ne znajo uporabljati sistemskih certifikatov pri povezovanju WiFi in nimajo možnosti povezovanja preko domene. Zato morate ročno dodati korensko potrdilo overitelja (ca.pem, vzemite ga s strežnika Radius). Tukaj bo uporabljen samopodpisani.

Prenesite certifikat v svojo napravo in ga namestite.

Namestitev certifikataWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

V tem primeru boste morali nastaviti vzorec za odklepanje zaslona, ​​kodo PIN ali geslo, če še ni nastavljeno:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Pokazal sem zapleteno možnost namestitve potrdila. Na večini naprav preprosto kliknite na preneseno potrdilo.

Ko je potrdilo nameščeno, lahko nadaljujete s povezavo:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

certifikat - označite tistega, ki ste ga namestili
anonimni uporabnik - gost

macOS

Naprave Apple se lahko povežejo samo z EAP-TLS takoj po namestitvi, vendar jim morate še vedno priskrbeti potrdilo. Če želite določiti drugačen način povezave, morate uporabiti Apple Configurator 2. Zato ga morate najprej prenesti na svoj Mac, ustvariti nov profil in dodati vse potrebne nastavitve WiFi.

Konfigurator AppleWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tukaj navedemo ime našega omrežja
Vrsta varnosti - WPA2 Enterprise
Sprejete vrste EAP - TTLS
Uporabniško ime in geslo - pustite prazno
Notranja avtentikacija - PAP
Zunanja identiteta - stranka

Zavihek Zaupanje. Tukaj navedemo našo domeno

Vse. Profil lahko shranite, podpišete in razdelite napravam

Ko je profil pripravljen, ga morate prenesti na svoj Mac in namestiti. Med postopkom namestitve boste morali podati usernmae_ldap in password_ldap uporabnika:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

Postopek je podoben macOS. Uporabiti morate profil (lahko uporabite istega kot za macOS. Glejte zgoraj, kako ustvariti profil v Apple Configuratorju).

Prenesite profil, namestite, vnesite poverilnice, 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 vse. Nastavili smo strežnik Radius, ga sinhronizirali s FreeIPA in ukazali dostopnim točkam Ubiquiti, naj uporabljajo WPA2-EAP.

Možna vprašanja

V: kako prenesti profil/certifikat na zaposlenega?

O: Vse certifikate/profile hranim na FTP z dostopom preko spleta. Postavil sem omrežje za goste z omejitvijo hitrosti in dostopom samo do interneta, z izjemo FTP.
Avtentikacija traja 2 dni, nato se ponastavi in ​​odjemalec ostane brez interneta. to. Ko se zaposleni želi povezati z WiFi, se najprej poveže z gostujočim omrežjem, se prijavi v FTP, prenese potrdilo ali profil, ki ga potrebuje, ju namesti in se nato lahko poveže z omrežjem podjetja.

V: zakaj ne bi uporabili sheme z MSCHAPv2? bolj varno je!

O: Prvič, ta shema dobro deluje na NPS (Windows Network Policy System), v naši izvedbi je treba dodatno konfigurirati LDAP (FreeIpa) in shraniti hashe gesel na strežnik. Dodaj. Ni priporočljivo izvajati nastavitev, ker to lahko povzroči različne težave s sinhronizacijo ultrazvočnega sistema. Drugič, zgoščena vrednost je MD4, zato ne dodaja veliko varnosti

V: Ali je mogoče avtorizirati naprave z naslovi mac?

O: NE, to ni varno, napadalec lahko ponaredi naslove MAC, še več, avtorizacija po naslovih MAC ni podprta na mnogih napravah

V: Zakaj sploh uporabljati vse te certifikate? lahko se povežete brez njih

O: potrdila se uporabljajo za avtorizacijo strežnika. Tisti. Pri povezovanju naprava preveri, ali gre za strežnik, ki mu lahko zaupamo ali ne. Če je tako, se preverjanje pristnosti nadaljuje; če ne, se povezava prekine. Lahko se povežete brez certifikatov, a če napadalec ali sosed doma nastavi radius strežnik in dostopno točko z enakim imenom kot naša, lahko zlahka prestreže uporabniške poverilnice (ne pozabite, da se prenašajo v čistem besedilu) . In ko se uporabi potrdilo, bo sovražnik v svojih dnevnikih videl le naše izmišljeno uporabniško ime - gost ali odjemalec in napako v vrsti - Neznano potrdilo CA

še malo o macOSObičajno se v sistemu macOS ponovna namestitev sistema izvede prek interneta. V načinu za obnovitev mora biti Mac povezan z WiFi in tukaj ne bosta delovala niti WiFi v podjetju niti omrežje za goste. Osebno sem namestil drugo omrežje, običajno WPA2-PSK, skrito, samo za tehnične operacije. Lahko pa tudi vnaprej naredite zagonski pogon USB s sistemom. Če pa je vaš Mac po letu 2015, boste morali najti tudi adapter za ta bliskovni pogon)

Vir: www.habr.com

Dodaj komentar