WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Kelkaj ekzemploj pri organizado de kompania WiFi jam estis priskribitaj. Ĉi tie mi priskribos kiel mi efektivigis similan solvon kaj la problemojn, kiujn mi devis alfronti kiam mi konektis sur malsamaj aparatoj. Ni uzos la ekzistantan LDAP kun registritaj uzantoj, altigos FreeRadius kaj agordos WPA2-Enterprise sur la Ubnt-regilo. Ĉio ŝajnas esti simpla. Ni vidu…

Iom pri EAP-metodoj

Antaŭ ol daŭrigi la taskon, ni devas decidi, kiun aŭtentikigmetodon ni uzos en nia solvo.

El Vikipedio:

EAP estas aŭtentikiga kadro, kiu estas ofte uzata en sendrataj retoj kaj punkto-al-punktaj konektoj. La formato unue estis priskribita en RFC 3748 kaj ĝisdatigita en RFC 5247.
EAP estas uzata por elekti aŭtentikigmetodon, pasi ŝlosilojn kaj prilabori tiujn ŝlosilojn per kromprogramoj nomitaj EAP-metodoj. Estas multaj EAP-metodoj, ambaŭ difinitaj kun EAP mem kaj liberigitaj de individuaj vendistoj. EAP ne difinas la ligtavolon, ĝi nur difinas la mesaĝformaton. Ĉiu protokolo uzanta EAP havas sian propran EAP-mesaĝon enkapsuligprotokolon.

La metodoj mem:

  • LEAP estas proprieta protokolo evoluigita fare de CISCO. Vundeblecoj trovitaj. Ĝi nuntempe ne rekomendas uzi
  • EAP-TLS estas bone subtenata inter sendrataj vendistoj. Ĝi estas sekura protokolo ĉar ĝi estas la posteulo de la SSL-normoj. Agordi la klienton estas sufiĉe komplika. Vi bezonas klientan atestilon krom la pasvorto. Subtenata en multaj sistemoj
  • EAP-TTLS - vaste subtenata en multaj sistemoj, ofertas bonan sekurecon uzante PKI-atestilojn nur sur la aŭtentikiga servilo
  • EAP-MD5 estas alia malferma normo. Proponas minimuman sekurecon. Vundebla, ne subtenas reciprokan aŭtentikigon kaj ŝlosilgeneradon
  • EAP-IKEv2 - surbaze de Interreta Ŝlosila Interŝanĝa Protokolo versio 2. Disponigas reciprokan aŭtentikigon kaj sean ŝlosilan starigon inter kliento kaj servilo
  • PEAP estas komuna solvo de CISCO, Microsoft kaj RSA Security kiel malferma normo. Vaste havebla en produktoj, provizas tre bonan sekurecon. Simila al EAP-TTLS, postulante nur atestilon ĉe la servilo
  • PEAPv0/EAP-MSCHAPv2 - post EAP-TLS, ĉi tiu estas la dua vaste uzata normo en la mondo. Uzita kliento-servila rilato en Microsoft, Cisco, Apple, Linukso
  • PEAPv1/EAP-GTC - Kreita de Cisco kiel alternativo al PEAPv0/EAP-MSCHAPv2. Neniel protektas aŭtentigajn datumojn. Ne subtenata en Windows OS
  • EAP-FAST estas tekniko evoluigita de Cisco por korekti la mankojn de LEAP. Uzas Protektan Alir-Akreditaĵon (PAC). Tute nefinita

El ĉi tiu tuta diverseco, la elekto ankoraŭ ne estas bonega. La aŭtentiga metodo estis postulata: bona sekureco, subteno en ĉiuj aparatoj (Vindozo 10, macOS, Linukso, Android, iOS) kaj, fakte, ju pli simpla des pli bone. Tial, la elekto falis sur EAP-TTLS lige kun la PAP-protokolo.
La demando povas ekesti - Kial uzi PAP? ĉar li transdonas pasvortojn en la klara?

Jes tio pravas. Komunikado inter FreeRadius kaj FreeIPA okazos tiamaniere. En sencimiga reĝimo, vi povas spuri kiel uzantnomo kaj pasvorto estas senditaj. Jes, kaj lasu ilin iri, nur vi havas aliron al la FreeRadius-servilo.

Vi povas legi pli pri la laboro de EAP-TTLS tie

FreeRADIUS

FreeRadius estos altigita sur CentOS 7.6. Ĉi tie estas nenio komplika, ni agordas ĝin laŭ la kutima maniero.

yum install freeradius freeradius-utils freeradius-ldap -y

Versio 3.0.13 estas instalita de la pakaĵoj. Ĉi-lasta povas esti prenita https://freeradius.org/

Post tio, FreeRadius jam funkcias. Vi povas malkomenti la linion en /etc/raddb/users

steve   Cleartext-Password := "testing"

Lanĉu en la servilon en sencimiga reĝimo

freeradius -X

Kaj faru provan konekton de localhost

radtest steve testing 127.0.0.1 1812 testing123

Ricevis respondon Ricevita Aliro-Akcepta Id 115 de 127.0.0.1:1812 ĝis 127.0.0.1:56081 longeco 20, ĝi signifas ke ĉio estas en ordo. Antaŭeniri.

Ni konektas la modulon ldap.

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

Kaj ni tuj ŝanĝos ĝin. Ni bezonas FreeRadius por povi aliri 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}})"
}
...

Rekomencu la radiusan servilon kaj kontrolu la sinkronigon de LDAP-uzantoj:

radtest user_ldap password_ldap localhost 1812 testing123

Redaktado eap in mods-enabled/eap
Ĉi tie ni aldonas du okazojn de eap. Ili diferencos nur en atestiloj kaj ŝlosiloj. Malsupre mi klarigos kial ĉi tio estas tiel.

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

Plia redaktado retejo-ebligita/defaŭlte. La rajtigi kaj aŭtentikigi sekciojn estas interesaj.

retejo-ebligita/defaŭlte

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
}

En la rajtiga sekcio, ni forigas ĉiujn modulojn, kiujn ni ne bezonas. Ni lasas nur ldap. Aldonu klientan konfirmon per uzantnomo. Tial ni aldonis du ekzemplojn de eap supre.

Multi EAPLa fakto estas, ke kiam ni konektos iujn aparatojn, ni uzos sistemajn atestojn kaj specifos la domajnon. Ni havas atestilon kaj ŝlosilon de fidinda atestila aŭtoritato. Persone, laŭ mi, tia koneksa proceduro estas pli facila ol ĵeti memsubskribitan atestilon al ĉiu aparato. Sed eĉ sen memsubskribitaj atestiloj, ĝi ankoraŭ ne funkciis. Samsung-aparatoj kaj Android =< 6 versioj ne povas uzi sistemajn atestilojn. Tial ni kreas apartan ekzemplon de eap-gasto por ili kun memsubskribitaj atestiloj. Por ĉiuj aliaj aparatoj, ni uzos la eap-klienton kun fidinda atestilo. La Uzantnomo estas determinita de la Anonima kampo kiam la aparato estas konektita. Nur 3 valoroj estas permesitaj: Gasto, Kliento kaj malplena kampo. Ĉio alia estas forĵetita. Ĝi estos agordita en politikistoj. Mi donos ekzemplon iom poste.

Ni redaktu la rajtigi kaj aŭtentikigi sekciojn en retejo-ebligita/interna-tunelo

retejo-ebligita/interna-tunelo

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
}

Poste, vi devas specifi en la politikoj kiuj nomoj povas esti uzataj por anonima ensaluto. Redaktado politiko.d/filtrilo.

Vi devas trovi liniojn similajn al ĉi tio:

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

Kaj sube en elsif aldonu la deziratajn valorojn:

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

Nun ni devas movi al la dosierujo certoj. Ĉi tie vi devas meti la ŝlosilon kaj atestilon de fidinda atestila aŭtoritato, kiun ni jam havas kaj devas generi memsubskribitajn atestilojn por eap-guest.

Ŝanĝu la parametrojn en la dosiero 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"

Ni skribas la samajn valorojn en la dosiero servilo.cnf. Ni ŝanĝas nur
komuna nomo:

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

Krei:

make

Preta. Ricevita servilo.crt и servilo.ŝlosilo ni jam registris supre en eap-gasto.

Kaj fine, ni aldonu niajn alirpunktojn al la dosiero kliento.conf. Mi havas el ili 7. Por ne aldoni ĉiun punkton aparte, ni skribos nur la reton, en kiu ili troviĝas (miaj alirpunktoj estas en aparta VLAN).

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

Ubiquiti-regilo

Ni levas apartan reton sur la regilo. Estu 192.168.2.0/24
Iru al agordoj -> profilo. Ni kreas novan:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ni skribas la adreson kaj havenon de la radiusa servilo kaj la pasvorton, kiu estis skribita en la dosiero klientoj.konf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Kreu novan sendratan retan nomon. Elektu WPA-EAP (Enterprise) kiel la aŭtentikigmetodon kaj specifu la kreitan radiusan profilon:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ni konservas ĉion, aplikas kaj pluiras.

Starigante klientojn

Ni komencu per la plej malfacila!

fenestroj 10

La malfacileco venas al la fakto, ke Vindozo ankoraŭ ne scias kiel konekti al kompania WiFi per domajno. Tial ni devas permane alŝuti nian atestilon al la fidinda atestilo. Ĉi tie vi povas uzi ambaŭ memsubskribitajn kaj de la atestadaŭtoritato. Mi uzos la duan.

Poste, vi devas krei novan konekton. Por fari tion, iru al la agordoj de reto kaj interreto -> Centro de Reto kaj Kundivido -> Kreu kaj agordu novan konekton aŭ reton:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Mane enigu la retnomon kaj ŝanĝu la tipon de sekureco. Post kiam ni klakas sur ŝanĝi konektajn agordojn kaj en la langeto Sekureco, elektu retan aŭtentigon - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ni eniras la parametrojn, preskribas la konfidencon de aŭtentigo - kliento. Kiel fidinda atestadaŭtoritato, elektu la atestilon, kiun ni aldonis, marku la skatolon "Ne eligu inviton al la uzanto se la servilo ne povas esti rajtigita" kaj elektu la aŭtentikigmetodon - neĉifrita pasvorto (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Poste, iru al la altnivelaj agordoj, metu markon sur "Specifi la aŭtentikigreĝimon". Elektu "Uzanto Aŭtentigo" kaj alklaku konservi akreditaĵojn. Ĉi tie vi devos enigi username_ldap kaj password_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ni konservas ĉion, aplikas, fermas. Vi povas konektiĝi al nova reto.

linux

Mi provis sur Ubuntu 18.04, 18.10, Fedora 29, 30.

Unue, ni elŝutu nian atestilon. Mi ne trovis en Linukso, ĉu eblas uzi sistemajn atestojn kaj ĉu entute ekzistas tia vendejo.

Ni konektu al la domajno. Tial ni bezonas atestilon de la atestadaŭtoritato de kiu nia atestilo estis aĉetita.

Ĉiuj ligoj estas faritaj en unu fenestro. Elektante nian reton:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonima-kliento
domajno - la domajno por kiu la atestilo estas eldonita

android

ne-Samsung

De la versio 7, kiam vi konektas WiFi, vi povas uzi sistemajn atestilojn specifante nur la domajnon:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domajno - la domajno por kiu la atestilo estas eldonita
anonima-kliento

samsung

Kiel mi skribis supre, Samsung-aparatoj ne scias kiel uzi sistemajn atestojn kiam ili konektas al WiFi, kaj ili ne havas la kapablon konekti per domajno. Tial vi devas permane aldoni la radikan atestilon de la atestadaŭtoritato (ca.pem, ni prenas ĝin sur la Radius-servilo). Jen kie memsubskribita estos uzata.

Elŝutu la atestilon al via aparato kaj instalu ĝin.

Instalado de AtestiloWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Samtempe, vi devos agordi la ekranan malŝlosigan ŝablonon, pinkodon aŭ pasvorton, se ĝi ne estas jam agordita:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Mi montris komplikan version de instalo de atestilo. Sur plej multaj aparatoj, simple alklaku la elŝutitan atestilon.

Kiam la atestilo estas instalita, vi povas daŭrigi la konekton:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

atestilo - indiku tiun, kiu estis instalita
anonima uzanto - gasto

MacOS

Apple-aparatoj el la skatolo nur povas konektiĝi al EAP-TLS, sed vi ankoraŭ devas ĵeti atestilon al ili. Por specifi malsaman konektan metodon, vi devas uzi Apple Configurator 2. Sekve, vi unue devas elŝuti ĝin al via Mac, krei novan profilon kaj aldoni ĉiujn necesajn WiFi-agordojn.

Apple ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Enigu vian retnomon ĉi tie
Sekureca Tipo - WPA2 Enterprise
Akceptitaj EAP-Tipoj - TTLS
Uzantnomo kaj Pasvorto - lasu malplenaj
Interna Aŭtentigo - PAP
Ekstera Identeco-kliento

Fido langeto. Ĉi tie ni specifas nian domajnon

Ĉiuj. La profilo povas esti konservita, subskribita kaj distribuita al aparatoj

Post kiam la profilo estas preta, vi devas elŝuti ĝin al la papavo kaj instali ĝin. Dum la instala procezo, vi devos specifi la usernmae_ldap kaj password_ldap de la uzanto:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

La procezo estas simila al macOS. Vi devas uzi profilon (vi povas uzi la saman kiel por macOS. Kiel krei profilon en Apple Configurator, vidu supre).

Elŝutu profilon, instalu, enigu akreditaĵojn, konektu:

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

Tio estas ĉio. Ni starigis Radius-servilon, sinkronigis ĝin kun FreeIPA, kaj diris al Ubiquiti AP-oj uzi WPA2-EAP.

Eblaj demandoj

En: kiel transdoni profilon/atestilon al dungito?

Pri: Mi konservas ĉiujn atestilojn/profilojn ĉe ftp kun ret-aliro. Altigis gastan reton kun rapidlimo kaj aliro nur al la Interreto, escepte de ftp.
Aŭtentigo daŭras 2 tagojn, post kiuj ĝi estas rekomencigita kaj la kliento restas sen Interreto. Tio. kiam dungito volas konektiĝi al WiFi, li unue konektas al la gastreto, aliras FTP, elŝutas la atestilon aŭ profilon, kiun li bezonas, instalas ĝin, kaj poste povas konektiĝi al la kompania reto.

En: kial ne uzi skemon kun MSCHAPv2? Ŝi estas pli sekura!

Pri: Unue, tia skemo funkcias bone ĉe NPS (Windows Network Policy System), en nia efektivigo necesas aldone agordi LDAP (FreeIpa) kaj stoki pasvortajn haŝojn sur la servilo. Aldoni. ne estas konsilinde fari agordojn, ĉar. ĉi tio povas konduki al diversaj problemoj de sinkronigado de la ultrasono. Due, la haŝiŝo estas MD4, do ĝi ne aldonas multe da sekureco.

En: ĉu eblas rajtigi aparatojn per mac-adresoj?

Pri: NE, ĉi tio ne estas sekura, atakanto povas ŝanĝi MAC-adresojn, kaj eĉ pli rajtigo per MAC-adresoj ne estas subtenata en multaj aparatoj.

En: kion ĝenerale ĉiuj ĉi atestiloj uzu? ĉu vi povas aliĝi sen ili?

Pri: atestiloj estas uzataj por rajtigi la servilon. Tiuj. kiam li konektas, la aparato kontrolas ĉu ĝi estas servilo, kiu povas esti fidinda aŭ ne. Se ĝi estas, tiam la aŭtentigo daŭras, se ne, la konekto estas fermita. Vi povas konektiĝi sen atestiloj, sed se atakanto aŭ najbaro starigas radiusservilon kaj alirpunkton samnoman kiel la nia hejme, li povas facile kapti la akreditaĵojn de la uzanto (ne forgesu, ke ili estas transdonitaj en klara teksto). Kaj kiam atestilo estas uzata, la malamiko vidos en siaj protokoloj nur nian fikcian Uzantnomon - gaston aŭ klienton kaj tajpan eraron - Nekonata CA Atestilo

iom pli pri macOSKutime en macOS, reinstalo de la sistemo estas farita per la Interreto. En reakira reĝimo, la Mac devas esti konektita al WiFi, kaj nek nia kompania WiFi nek la gastreto funkcios ĉi tie. Persone mi levis alian reton, la kutiman WPA2-PSK, kaŝitan, nur por teknikaj operacioj. Aŭ vi ankoraŭ povas krei ekfunkciigeblan USB-memorilon per la sistemo anticipe. Sed se la papavo estas post 2015, vi ankoraŭ bezonos trovi adaptilon por ĉi tiu poŝmemoro)

fonto: www.habr.com

Aldoni komenton