WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi korporatiboa antolatzeko adibide batzuk deskribatu dira dagoeneko. Hemen deskribatuko dut nola inplementatu nuen antzeko irtenbide bat eta gailu ezberdinetan konektatzean aurre egin behar izan nituen arazoak. Lehendik dagoen LDAP erabiliko dugu erregistratutako erabiltzaileekin, FreeRadius igoko dugu eta WPA2-Enterprise konfiguratuko dugu Ubnt kontrolagailuan. Dena badirudi sinplea dela. Ikus dezagun…

EAP metodoei buruz pixka bat

Zereginarekin jarraitu aurretik, gure soluzioan zein autentifikazio metodo erabiliko dugun erabaki behar dugu.

Wikipediatik:

EAP haririk gabeko sareetan eta puntuz puntuko konexioetan maiz erabiltzen den autentifikazio-esparru bat da. Formatua RFC 3748-n deskribatu zen lehen aldiz eta RFC 5247-n eguneratu zen.
EAP erabiltzen da autentifikazio-metodo bat hautatzeko, gakoak pasatzeko eta gako horiek prozesatzeko EAP metodo izeneko pluginekin. EAP metodo asko daude, biak EAP berarekin definituak eta banakako saltzaileek kaleratuak. EAPek ez du esteka-geruza definitzen, mezuen formatua soilik definitzen du. EAP erabiltzen duen protokolo bakoitzak bere EAP mezuak kapsulatzeko protokolo propioa du.

Metodoak beraiek:

  • LEAP CISCOk garatutako protokolo jabeduna da. Ahuleziak aurkitu dira. Gaur egun ez da gomendagarria erabiltzea
  • EAP-TLS ondo onartzen da haririk gabeko saltzaileen artean. Protokolo segurua da, SSL estandarren ondorengoa delako. Bezeroa konfiguratzea nahiko zaila da. Pasahitzaz gain bezero-ziurtagiri bat behar duzu. Sistema askotan onartzen da
  • EAP-TTLS - sistema askotan onartzen da, segurtasun ona eskaintzen du PKI ziurtagiriak autentifikazio zerbitzarian soilik erabiliz
  • EAP-MD5 beste estandar ireki bat da. Gutxieneko segurtasuna eskaintzen du. Zaurgarria, ez du elkarrekiko autentifikazioa eta gakoak sortzea onartzen
  • EAP-IKEv2 - Internet Key Exchange Protocol 2 bertsioan oinarrituta. Elkarrekiko autentifikazioa eta saio-gakoak ezartzea eskaintzen du bezeroaren eta zerbitzariaren artean
  • PEAP CISCO, Microsoft eta RSA Security-ren irtenbide bateratua da, estandar ireki gisa. Produktuetan eskuragarri dago, oso segurtasun ona eskaintzen du. EAP-TTLS-ren antzekoa, zerbitzariaren aldean ziurtagiria bakarrik eskatzen duena
  • PEAPv0/EAP-MSCHAPv2 - EAP-TLSren ondoren, munduan gehien erabiltzen den bigarren estandarra da. Microsoft, Cisco, Apple, Linux-en bezero-zerbitzari harremana erabiltzen da
  • PEAPv1/EAP-GTC - Cisco-k sortua PEAPv0/EAP-MSCHAPv2-ren alternatiba gisa. Ez ditu inola ere babesten autentifikazio-datuak. Ez da onartzen Windows sistema eragilean
  • EAP-FAST Ciscok LEAPen gabeziak zuzentzeko garatutako teknika bat da. Babestutako Sarbide Kredentziala (PAC) erabiltzen du. Erabat amaitu gabe

Aniztasun horren guztiaren artean, aukera oraindik ez da handia. Autentifikazio-metodoa behar zen: segurtasun ona, gailu guztietan laguntza (Windows 10, macOS, Linux, Android, iOS) eta, hain zuzen, zenbat eta sinpleagoa orduan eta hobeto. Hori dela eta, aukera EAP-TTLS-en erori zen PAP protokoloarekin batera.
Galdera sor daiteke - Zergatik erabili PAP? pasahitzak garbi transmititzen dituelako?

Bai horixe. FreeRadius eta FreeIPAren arteko komunikazioa horrela egingo da. Arazketa moduan, erabiltzaile-izena eta pasahitza nola bidaltzen diren jarrai dezakezu. Bai, eta utzi itzazu, zuk bakarrik duzu sarbidea FreeRadius zerbitzarirako.

EAP-TTLS-ren lanari buruz gehiago irakur dezakezu Hemen

FreeRADIUS

FreeRadius CentOS 7.6-n planteatuko da. Hemen ez dago ezer konplikaturik, ohiko moduan ezarri dugu.

yum install freeradius freeradius-utils freeradius-ldap -y

3.0.13 bertsioa paketeetatik instalatuta dago. Azken hau har daiteke https://freeradius.org/

Horren ostean, FreeRadius dagoeneko lanean ari da. Lerroari iruzkinak kendu ditzakezu /etc/raddb/users-en

steve   Cleartext-Password := "testing"

Abiarazi zerbitzarian arazketa moduan

freeradius -X

Eta egin probako konexioa localhost-etik

radtest steve testing 127.0.0.1 1812 testing123

Erantzuna jaso dut Jasotako Sarbide-Onartu ID 115 127.0.0.1:1812-tik 127.0.0.1:56081-ra 20. luzera, dena ondo dagoela esan nahi du. Segi aurrera.

Modulua konektatzen dugu ldap.

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

Eta berehala aldatuko dugu. FreeRadius behar dugu FreeIPA atzitu ahal izateko

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

Berrabiarazi erradio zerbitzaria eta egiaztatu LDAP erabiltzaileen sinkronizazioa:

radtest user_ldap password_ldap localhost 1812 testing123

Eap in edizioa mods gaituta/eap
Hemen eap-ren bi kasu gehitzen ditugu. Ziurtagirietan eta giltzetan bakarrik desberdinduko dira. Jarraian azalduko dut zergatik den horrela.

mods gaituta/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"
           }
}

Edizio gehiago gunerako gaituta/lehenetsia. Baimendu eta autentifikazio atalak interesgarriak dira.

gunerako gaituta/lehenetsia

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
}

Baimendu atalean, behar ez ditugun modulu guztiak kentzen ditugu. ldap bakarrik uzten dugu. Gehitu bezeroaren egiaztapena erabiltzaile-izenaren arabera. Horregatik gehitu ditugu goian eap-ren bi instantzia.

EAP anitzekoaKontua da gailu batzuk konektatuz sistemaren ziurtagiriak erabiliko ditugula eta domeinua zehaztuko dugula. Ziurtagiri-agintari fidagarri baten ziurtagiria eta gako bat ditugu. Pertsonalki, nire ustez, horrelako konexio-prozedura bat errazagoa da gailu bakoitzean autosinatutako ziurtagiri bat botatzea baino. Baina autosinatutako ziurtagiririk gabe ere, oraindik ez zuen funtzionatu. Samsung gailuek eta Android =< 6 bertsioek ezin dute sistema-ziurtagiririk erabili. Hori dela eta, haientzat eap-guest-en instantzia bereizia sortzen dugu autosinatutako ziurtagiriekin. Gainerako gailu guztietan, eap-bezeroa ziurtagiri fidagarri batekin erabiliko dugu. Erabiltzaile-izena Anonimo eremuak zehazten du gailua konektatuta dagoenean. 3 balio bakarrik onartzen dira: Gonbidatua, Bezeroa eta eremu huts bat. Beste guztia baztertu egiten da. Politikarietan konfiguratuko da. Adibide bat emango dut geroxeago.

Editatu ditzagun baimendu eta autentifikatu atalak gunerako gaituta/barneko tunela

gunerako gaituta/barneko tunela

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
}

Ondoren, gidalerroetan zehaztu behar duzu zein izen erabil daitezkeen saio-hasiera anonimorako. Edizioa politika.d/iragazkia.

Honen antzeko lerroak aurkitu behar dituzu:

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

Eta behean elsif-en gehitu nahi diren balioak:

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

Orain direktoriora joan behar dugu ziurtagiriak. Hemen konfiantzazko agintaritza ziurtagiri baten gakoa eta ziurtagiria jarri behar dituzu, dagoeneko baditugu eta eap-guest-entzat autosinatutako ziurtagiriak sortu behar ditugu.

Aldatu fitxategiko parametroak 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"

Balio berdinak idazten ditugu fitxategian zerbitzaria.cnf. Gu bakarrik aldatzen gara
izen arrunta:

zerbitzaria.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"

Sortu:

make

Prest. Jaso zerbitzaria.crt ΠΈ zerbitzari.gakoa dagoeneko erregistratu gara eap-guest-en.

Eta azkenik, gehi ditzagun gure sarbide-puntuak fitxategira bezeroa.conf. Horietatik 7 ditut.Punto bakoitza bereiz ez gehitzeko, kokatuta dauden sarea bakarrik idatziko dugu (nire sarbide puntuak VLAN bereizi batean daude).

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

Ubiquiti kontrolatzailea

Kontrolagailuan sare bereizia planteatzen dugu. Izan bedi 192.168.2.0/24
Joan Ezarpenak -> Profilera. Berri bat sortzen dugu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Radius zerbitzariaren helbidea eta ataka eta fitxategian idatzitako pasahitza idazten ditugu bezeroak.konf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Sortu hari gabeko sarearen izen berri bat. Hautatu WPA-EAP (Enterprise) autentifikazio-metodo gisa eta zehaztu sortutako erradio-profila:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Dena gordetzen dugu, aplikatu eta aurrera.

Bezeroak konfiguratzea

Has gaitezen zailena!

Windows 10

Zailtasuna Windows-ek oraindik ez dakiela domeinu baten bidez WiFi korporatiboa nola konektatu. Hori dela eta, gure ziurtagiria eskuz kargatu behar dugu ziurtagiri fidagarrien biltegira. Hemen autosinatutakoa eta ziurtagiri-agintaritzarena erabil dezakezu. Bigarrena erabiliko dut.

Ondoren, konexio berri bat sortu behar duzu. Horretarako, joan sareko eta Interneteko ezarpenetara -> Sare eta partekatzeko zentrora -> Sortu eta konfiguratu konexio edo sare berri bat:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Sartu eskuz sarearen izena eta aldatu segurtasun mota. Sakatu ondoren aldatu konexio ezarpenak eta Segurtasuna fitxan, hautatu sareko autentifikazioa - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Parametroetan sartzen gara, autentifikazioaren konfidentzialtasuna agintzen dugu - bezeroa. Ziurtagiri-agintari fidagarri gisa, hautatu gehitu dugun ziurtagiria, markatu "Ez eman gonbidapenik erabiltzaileari zerbitzaria baimendu ezin bada" laukia eta hautatu autentifikazio-metodoa: enkriptatutako pasahitza (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ondoren, joan ezarpen aurreratuetara, jarri marka bat "Zehaztu autentifikazio modua". Hautatu "Erabiltzaileen autentifikazioa" eta egin klik gorde kredentzialak. Hemen username_ldap eta password_ldap sartu beharko dituzu

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Dena gordetzen dugu, aplikatu, itxi. Sare berri batera konekta zaitezke.

Linux

Ubuntu 18.04, 18.10, Fedora 29, 30-en probatu nuen.

Lehenik eta behin, deskarga dezagun gure ziurtagiria. Linux-en ez nuen aurkitu sistema-ziurtagiriak erabiltzea posible den eta halako dendarik ba ote dagoen.

Konektatu gaitezen domeinura. Hori dela eta, gure ziurtagiria erosi den ziurtagiri-agintaritzaren ziurtagiria behar dugu.

Konexio guztiak leiho batean egiten dira. Gure sarea hautatzea:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonimo-bezero
domeinua - ziurtagiria jaulki den domeinua

Android

ez-Samsung

7. bertsiotik aurrera, WiFi konektatzean, sistemaren ziurtagiriak erabil ditzakezu domeinua soilik zehaztuz:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domeinua - ziurtagiria jaulki den domeinua
anonimo-bezero

Samsung

Goian idatzi dudan bezala, Samsung gailuek ez dakite sistema-ziurtagiriak nola erabili WiFi-ra konektatzean, eta ez dute domeinu baten bidez konektatzeko gaitasunik. Horregatik, eskuz gehitu behar duzu ziurtagiri-agintaritzaren erro-ziurtagiria (ca.pem, Radius zerbitzarian hartzen dugu). Hemen autosinatua erabiliko da.

Deskargatu ziurtagiria zure gailura eta instalatu.

Ziurtagiriaren InstalazioaWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Aldi berean, pantaila desblokeatzeko eredua, PIN kodea edo pasahitza ezarri beharko duzu, dagoeneko ezarrita ez badago:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ziurtagiri bat instalatzeko bertsio konplikatu bat erakutsi nuen. Gailu gehienetan, egin klik deskargatutako ziurtagirian.

Ziurtagiria instalatuta dagoenean, konexiora jarrai dezakezu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

ziurtagiria - adierazi instalatu zena
erabiltzaile anonimoa - gonbidatua

MacOS

Kutxatik kanpoko Apple gailuak EAP-TLS-era soilik konekta daitezke, baina hala ere ziurtagiri bat bota behar diezu. Beste konexio-metodo bat zehazteko, Apple Configurator 2 erabili behar duzu. Horren arabera, lehenik eta behin zure Mac-era deskargatu behar duzu, profil berri bat sortu eta beharrezko WiFi ezarpen guztiak gehitu.

Apple konfiguratzaileaWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Sartu zure sarearen izena hemen
Segurtasun mota - WPA2 Enterprise
Onartutako EAP motak - TTLS
Erabiltzaile izena eta pasahitza - utzi hutsik
Barne autentifikazioa - PAP
Kanpoko Identitate-bezeroa

Konfiantza fitxa. Hemen gure domeinua zehazten dugu

Denak. Profila gorde, sinatu eta gailuetara banatu daiteke

Profila prest dagoenean, Poppyra deskargatu eta instalatu behar duzu. Instalazio prozesuan, erabiltzailearen usernmae_ldap eta password_ldap zehaztu beharko dituzu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

IOS

Prozesua macOSen antzekoa da. Profil bat erabili behar duzu (macOS-erako bera erabil dezakezu. Nola sortu profil bat Apple Configurator-en, ikus goiko).

Deskargatu profila, instalatu, sartu kredentzialak, konektatu:

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

Hori da dena. Radius zerbitzari bat konfiguratu genuen, FreeIPArekin sinkronizatu genuen eta Ubiquiti AP-ei WPA2-EAP erabiltzeko esan genien.

Galdera posibleak

V: nola transferitu profila/ziurtagiri bat langile bati?

About: Ziurtagiri/profil guztiak ftp-n gordetzen ditut web sarbidearekin. Abiadura muga batekin eta Interneterako soilik sarbidea duen gonbidatuen sare bat planteatu da, ftp-a izan ezik.
Autentifikazioak 2 egun irauten du, ondoren berrezarri eta bezeroa Internet gabe geratzen da. Hori. langile batek WiFira ​​konektatu nahi duenean, lehenik gonbidatuen sarera konektatzen da, FTPra sartzen da, behar duen ziurtagiria edo profila deskargatzen du, instalatzen du eta, ondoren, sare korporatibora konektatu daiteke.

V: zergatik ez erabili eskema MSCHAPv2-rekin? Seguruago dago!

About: Lehenik eta behin, eskema horrek ondo funtzionatzen du NPS-en (Windows Network Policy System), gure inplementazioan beharrezkoa da LDAP (FreeIpa) konfiguratzea eta pasahitzen hashak gordetzea zerbitzarian. Gehitu. ez da komeni ezarpenak egitea, zeren. honek ultrasoinuak sinkronizatzeko hainbat arazo sor ditzake. Bigarrenik, hash-a MD4 da, beraz, ez du segurtasun handirik gehitzen.

V: posible al da gailuak mac-helbideen bidez baimentzea?

About: EZ, hau ez da segurua, erasotzaileak MAC helbideak alda ditzake, eta are gehiago MAC helbideen baimena ez da onartzen gailu askotan

V: zer erabili behar dute, oro har, ziurtagiri horiek guztiek? sar zaitezke haiek gabe?

About: ziurtagiriak zerbitzaria baimentzeko erabiltzen dira. Horiek. konektatzean, gailuak fidagarria den zerbitzaria den edo ez egiaztatzen du. Hala bada, autentifikazioa aurrera doa, ez bada, konexioa itxi egingo da. Ziurtagiririk gabe konekta zaitezke, baina erasotzaile edo auzokideren batek erradio zerbitzari bat eta gure izen bereko sarbide-puntu bat ezartzen baditu etxean, erraz atzeman ditzake erabiltzailearen kredentzialak (ez ahaztu testu garbian transmititzen direla). Eta ziurtagiri bat erabiltzen denean, etsaiak bere erregistroetan gure fikziozko Erabiltzaile-izena bakarrik ikusiko du - gonbidatua edo bezeroa eta mota-errorea - Ezezaguna CA ziurtagiria

apur bat gehiago macOS-i buruzNormalean macOS-en, sistema berriro instalatzen Internet bidez egiten da. Berreskuratzeko moduan, Mac-a WiFi-ra konektatuta egon behar da, eta ez gure korporazio-sareak ez gonbidatuen sareak ez dute funtzionatuko hemen. Pertsonalki, beste sare bat planteatu nuen, ohiko WPA2-PSK, ezkutuan, operazio teknikoetarako soilik. Edo oraindik abiarazteko USB flash drive bat egin dezakezu sistemarekin aldez aurretik. Baina amatxoa 2015etik aurrerakoa bada, oraindik flash drive honetarako egokitzaile bat aurkitu beharko duzu)

Iturria: www.habr.com

Gehitu iruzkin berria