WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Joitakin esimerkkejä yrityksen WiFin järjestämisestä on jo kuvattu. Tässä kuvailen, kuinka toteutin tällaisen ratkaisun, ja ongelmia, joita kohtasin yhdistäessäni eri laitteilla. Käytämme olemassa olevaa LDAP:ta vakiintuneiden käyttäjien kanssa, asennamme FreeRadiuksen ja määritämme WPA2-Enterprisen Ubnt-ohjaimeen. Kaikki näyttää yksinkertaiselta. Katsotaan…

Hieman EAP-menetelmistä

Ennen kuin aloitamme tehtävän, meidän on päätettävä, mitä todennusmenetelmää käytämme ratkaisussamme.

Wikipediasta:

EAP on todennuskehys, jota käytetään usein langattomissa verkoissa ja point-to-point-yhteyksissä. Muoto kuvattiin ensin RFC 3748:ssa ja päivitettiin RFC 5247:ssä.
EAP:tä käytetään todennustavan valitsemiseen, avainten siirtämiseen ja näiden avainten käsittelemiseen EAP-menetelmiksi kutsutuilla laajennuksilla. On olemassa monia EAP-menetelmiä, jotka on määritelty sekä itse EAP:lla että yksittäisten toimittajien julkaisemia. EAP ei määrittele linkkikerrosta, se määrittelee vain viestin muodon. Jokaisella EAP:tä käyttävällä protokollalla on oma EAP-sanomien kapselointiprotokollansa.

Itse menetelmät:

  • LEAP on CISCO:n kehittämä protokolla. Haavoittuvuuksia löydetty. Tällä hetkellä ei suositella käytettäväksi
  • EAP-TLS on hyvin tuettu langattomien toimittajien keskuudessa. Se on turvallinen protokolla, koska se on SSL-standardien seuraaja. Asiakkaan asettaminen on melko monimutkaista. Tarvitset salasanan lisäksi asiakasvarmenteen. Tuettu monissa järjestelmissä
  • EAP-TTLS - laajasti tuettu monissa järjestelmissä, tarjoaa hyvän suojan käyttämällä PKI-varmenteita vain todennuspalvelimella
  • EAP-MD5 on toinen avoin standardi. Tarjoaa minimaalisen turvallisuuden. Haavoittuva, ei tue keskinäistä todennusta ja avainten luomista
  • EAP-IKEv2 - perustuu Internet Key Exchange Protocol -versioon 2. Tarjoaa molemminpuolisen todennuksen ja istuntoavaimen muodostamisen asiakkaan ja palvelimen välillä
  • PEAP on CISCO:n, Microsoftin ja RSA Securityn yhteinen ratkaisu avoimena standardina. Saatavana laajasti tuotteissa, tarjoaa erittäin hyvän turvallisuuden. Samanlainen kuin EAP-TTLS, joka vaatii vain palvelinpuolen varmenteen
  • PEAPv0/EAP-MSCHAPv2 – EAP-TLS:n jälkeen tämä on toiseksi laajalti käytetty standardi maailmassa. Käytetty asiakas-palvelin-suhde Microsoftissa, Ciscossa, Applessa ja Linuxissa
  • PEAPv1/EAP-GTC – Ciscon luoma vaihtoehto PEAPv0/EAP-MSCHAPv2:lle. Ei suojaa todennustietoja millään tavalla. Ei tuettu Windows-käyttöjärjestelmässä
  • EAP-FAST on Ciscon kehittämä menetelmä LEAPin puutteiden korjaamiseksi. Käyttää Protected Access Credential (PAC) -tunnusta. Täysin keskeneräinen

Kaikesta tästä lajikkeesta valinta ei ole vieläkään suuri. Vaadittu todennusmenetelmä: hyvä tietoturva, tuki kaikilla laitteilla (Windows 10, macOS, Linux, Android, iOS) ja itse asiassa mitä yksinkertaisempi sen parempi. Siksi valinta osui EAP-TTLS:lle yhdessä PAP-protokollan kanssa.
Voi herää kysymys - Miksi käyttää PAP:ia? Loppujen lopuksi se lähettää salasanat selkeänä tekstinä?

Kyllä se on oikein. Kommunikointi FreeRadiuksen ja FreeIPAn välillä tapahtuu täsmälleen tällä tavalla. Debug-tilassa voit seurata, kuinka käyttäjätunnus ja salasana lähetetään. Kyllä, ja anna heidän mennä, vain sinulla on pääsy FreeRadius-palvelimeen.

Voit lukea lisää EAP-TTLS:n toiminnasta täällä

FreeRADIUS

Päivitämme FreeRadiuksen CentOS 7.6:een. Tässä ei ole mitään monimutkaista, asennamme sen tavalliseen tapaan.

yum install freeradius freeradius-utils freeradius-ldap -y

Paketeista on asennettu versio 3.0.13. Jälkimmäinen voidaan ottaa osoitteessa https://freeradius.org/

Tämän jälkeen FreeRadius toimii jo. Voit poistaa rivin kommentoinnin hakemistosta /etc/raddb/users

steve   Cleartext-Password := "testing"

Käynnistä palvelimelle virheenkorjaustilassa

freeradius -X

Ja tee testiyhteys localhostista

radtest steve testing 127.0.0.1 1812 testing123

Saimme vastauksen Vastaanotettu Access-Accept Id 115 127.0.0.1:1812 - 127.0.0.1:56081 pituus 20, se tarkoittaa, että kaikki on kunnossa. Mene eteenpäin.

Moduulin liittäminen ldap.

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

Ja muutamme sen välittömästi. Tarvitsemme FreeRadiuksen voidaksemme käyttää FreeIPA:ta

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

Käynnistä sädepalvelin uudelleen ja tarkista LDAP-käyttäjien synkronointi:

radtest user_ldap password_ldap localhost 1812 testing123

Muokkaus sisään mods-enabled/eap
Lisäämme tähän kaksi eap-tapausta. Ne eroavat toisistaan ​​vain varmenteissa ja avaimissa. Selitän alla, miksi tämä on totta.

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

Seuraavaksi editoidaan sivusto käytössä/oletus. Olen kiinnostunut valtuutus- ja todennusosioista.

sivusto käytössä/oletus

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
}

Valtuutusosiossa poistamme kaikki tarpeettomat moduulit. Jätämme vain ldapin. Lisää asiakkaan vahvistus käyttäjänimellä. Tästä syystä lisäsimme yllä kaksi eap-tapausta.

Multi EAPTosiasia on, että kun yhdistämme joitain laitteita, käytämme järjestelmävarmenteita ja määritämme verkkotunnuksen. Meillä on varmenne ja avain luotettavalta varmentajalta. Henkilökohtaisesti tämä yhteysmenettely on mielestäni yksinkertaisempi kuin itse allekirjoitetun varmenteen heittäminen jokaiselle laitteelle. Mutta ilman itse allekirjoitettuja todistuksia ei silti ollut mahdollista lähteä. Samsung-laitteet ja Android =< 6 versiota eivät osaa käyttää järjestelmävarmenteita. Siksi luomme heille erillisen eap-guest-esiintymän itse allekirjoitetuilla varmenteilla. Kaikissa muissa laitteissa käytämme eap-clientiä luotettavalla varmenteella. Käyttäjänimi määräytyy Anonymous-kentän perusteella, kun laitetta yhdistetään. Vain 3 arvoa sallitaan: Vieras, Asiakas ja tyhjä kenttä. Kaikki loput heitetään pois. Tämä voidaan määrittää käytännöissä. Annan esimerkin hieman myöhemmin.

Muokataan valtuutus- ja todennusosioita sivustokäyttöinen/sisätunneli

sivustokäyttöinen/sisätunneli

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
}

Seuraavaksi sinun on määritettävä käytännöissä, mitä nimiä voidaan käyttää anonyymiin kirjautumiseen. Muokkaus policy.d/filter.

Sinun on löydettävä tämän kaltaiset rivit:

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

Ja alla elsifissä lisää tarvittavat arvot:

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

Nyt meidän on siirryttävä hakemistoon CERT. Täällä meidän on asetettava avain ja varmenne luotettavalta varmenneviranomaiselta, joka meillä jo on, ja meidän on luotava itse allekirjoitetut varmenteet eap-guestille.

Tiedoston parametrien muuttaminen 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"

Kirjoitamme tiedostoon samat arvot server.cnf. Me vain muutumme
yleinen nimi:

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"

Luomme:

make

Valmis. Otettu vastaan server.crt и palvelin.avain Olemme jo rekisteröityneet yllä eap-guest-palveluun.

Ja lopuksi lisätään tukiasemamme tiedostoon client.conf. Minulla on niitä 7. Jotta emme lisäisi jokaista pistettä erikseen, rekisteröimme vain sen verkon, jossa ne sijaitsevat (tukiasemani ovat erillisessä VLANissa).

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

Ubiquiti ohjain

Nostamme erillisen verkon ohjaimeen. Olkoon se 192.168.2.0/24
Mene asetuksiin -> profiili. Luodaan uusi:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Kirjoitamme muistiin sädepalvelimen osoitteen ja portin sekä tiedostoon kirjoitetun salasanan clients.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Luo uusi langattoman verkon nimi. Valitse todennusmenetelmäksi WPA-EAP (Enterprise) ja määritä luotu sädeprofiili:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tallennamme kaiken, käytämme sitä ja siirrymme eteenpäin.

Asiakkaiden asettaminen

Aloitetaan vaikeimmasta osasta!

Windows 10

Vaikeus johtuu siitä, että Windows ei vielä osaa muodostaa yhteyttä yrityksen WiFi-verkkoon toimialueen kautta. Siksi meidän on ladattava sertifikaattimme manuaalisesti luotettavaan varmennevarastoon. Täällä voit käyttää joko itse allekirjoitettua tai varmentajan allekirjoitusta. Käytän toista.

Seuraavaksi sinun on luotava uusi yhteys. Voit tehdä tämän siirtymällä kohtaan Verkko- ja Internet-asetukset -> Verkko- ja jakamiskeskus -> Luo ja määritä uusi yhteys tai verkko:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Annamme verkon nimen manuaalisesti ja muutamme suojaustyyppiä. Napsauta sitten muuttaa yhteysasetuksia ja valitse Suojaus-välilehdessä verkkotodennus - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Siirry asetuksiin, aseta todennuksen luottamuksellisuus - asiakas. Valitse luotetuksi varmenneviranomaiseksi lisäämämme varmenne, valitse ruutu "Älä lähetä kutsua käyttäjälle, jos palvelinta ei voida valtuuttaa" ja valitse todennusmenetelmä - plaintext password (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Siirry seuraavaksi lisäparametreihin ja valitse ruutu "Määritä todennustila". Valitse "Käyttäjän todennus" ja napsauta tallenna tunnistetiedot. Täällä sinun on annettava käyttäjätunnus_ldap ja salasana_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tallennamme, käytämme, suljemme kaiken. Voit muodostaa yhteyden uuteen verkkoon.

Linux

Testasin Ubuntu 18.04, 18.10, Fedora 29, 30.

Lataa ensin sertifikaatti itsellesi. En ole löytänyt Linuxista, onko mahdollista käyttää järjestelmävarmenteita tai onko sellaista kauppaa ollenkaan.

Yhdistämme verkkotunnuksen kautta. Siksi tarvitsemme sertifikaatin varmenneviranomaiselta, jolta sertifikaattimme on ostettu.

Kaikki liitännät tehdään yhdessä ikkunassa. Valitse verkkomme:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonyymi - asiakas
domain — verkkotunnus, jolle varmenne on myönnetty

Android

ei Samsung

Versiosta 7 alkaen, kun yhdistät WiFi-yhteyden, voit käyttää järjestelmävarmenteita määrittämällä vain verkkotunnuksen:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

domain — verkkotunnus, jolle varmenne on myönnetty
anonyymi - asiakas

Samsung

Kuten edellä kirjoitin, Samsung-laitteet eivät osaa käyttää järjestelmävarmenteita kytkettäessä WiFi-yhteyttä, eivätkä he pysty muodostamaan yhteyttä verkkotunnuksen kautta. Siksi sinun on lisättävä manuaalisesti varmentajan juurivarmenne (ca.pem, ota se Radius-palvelimelta). Tässä käytetään itse allekirjoitettua.

Lataa varmenne laitteellesi ja asenna se.

Varmenteen asentaminenWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tässä tapauksessa sinun on asetettava näytön lukituksen avauskuvio, PIN-koodi tai salasana, jos sitä ei ole vielä asetettu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Näytin monimutkaisen vaihtoehdon varmenteen asentamiseksi. Useimmissa laitteissa napsauta vain ladattua varmennetta.

Kun varmenne on asennettu, voit jatkaa yhteyden muodostamiseen:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

varmenne - ilmoita asentamasi varmenne
anonyymi käyttäjä - vieras

macOS

Apple-laitteet voivat muodostaa yhteyden EAP-TLS:ään vain valmiina, mutta sinun on silti annettava niille varmenne. Jos haluat määrittää toisen yhteystavan, sinun on käytettävä Apple Configurator 2:ta. Sen vuoksi sinun on ensin ladattava se Mac-tietokoneellesi, luotava uusi profiili ja lisättävä kaikki tarvittavat WiFi-asetukset.

Apple ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tässä ilmoitamme verkostomme nimen
Suojaustyyppi - WPA2 Enterprise
Hyväksytyt EAP-tyypit – TTLS
Käyttäjätunnus ja salasana - jätä tyhjäksi
Sisäinen todennus - PAP
Ulkoinen identiteetti - asiakas

Luottamus-välilehti. Tässä ilmoitamme verkkotunnuksemme

Kaikki. Profiili voidaan tallentaa, allekirjoittaa ja jakaa laitteille

Kun profiili on valmis, sinun on ladattava se Mac-tietokoneellesi ja asennettava se. Asennuksen aikana sinun on määritettävä käyttäjän usernmae_ldap ja password_ldap:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

Prosessi on samanlainen kuin macOS. Sinun on käytettävä profiilia (voit käyttää samaa kuin macOS:ssä. Katso edellä, kuinka voit luoda profiilin Apple Configuratorissa).

Lataa profiili, asenna, syötä tunnistetiedot, yhdistä:

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

Siinä kaikki. Asensimme Radius-palvelimen, synkronoimme sen FreeIPAn kanssa ja käskimme Ubiquiti-tukiasemia käyttämään WPA2-EAP:tä.

Mahdollisia kysymyksiä

in: kuinka profiili/todistus siirretään työntekijälle?

Tietoja: Tallennan kaikki varmenteet/profiilit FTP:lle, jolla on pääsy verkon kautta. Asetin vierasverkon, jossa on nopeusrajoitus ja pääsy vain Internetiin FTP:tä lukuun ottamatta.
Todennus kestää 2 päivää, jonka jälkeen se nollataan ja asiakas jää ilman Internetiä. Että. Kun työntekijä haluaa muodostaa yhteyden WiFi-verkkoon, hän muodostaa ensin yhteyden vierasverkkoon, kirjautuu FTP:hen, lataa tarvitsemansa varmenteen tai profiilin, asentaa ne ja voi sitten muodostaa yhteyden yrityksen verkkoon.

in: miksi et käyttäisi mallia MSCHAPv2:n kanssa? se on turvallisempaa!

Tietoja: Ensinnäkin tämä malli toimii hyvin NPS:ssä (Windows Network Policy System), toteutuksessamme on lisäksi tarpeen määrittää LDAP (FreeIpa) ja tallentaa salasanatiivisteet palvelimelle. Lisätä. Ei ole suositeltavaa tehdä asetuksia, koska tämä voi johtaa erilaisiin ongelmiin ultraäänijärjestelmän synkronoinnissa. Toiseksi hash on MD4, joten se ei lisää paljon turvallisuutta

in: Onko mahdollista valtuuttaa laitteita käyttämällä mac-osoitteita?

Tietoja: EI, tämä ei ole turvallista, hyökkääjä voi huijata MAC-osoitteita, ja vielä enemmän MAC-osoitteiden valtuutusta ei tueta monissa laitteissa

in: Miksi käyttää kaikkia näitä varmenteita? voit muodostaa yhteyden ilman niitä

Tietoja: varmenteita käytetään valtuuttamaan palvelin. Nuo. Yhteyttä muodostettaessa laite tarkistaa, onko se palvelin, johon voi luottaa vai ei. Jos näin on, todennus etenee; jos ei, yhteys suljetaan. Voit muodostaa yhteyden ilman varmenteita, mutta jos hyökkääjä tai naapuri perustaa kotona sädepalvelimen ja tukiaseman, jolla on sama nimi kuin meillä, hän voi helposti siepata käyttäjän tunnistetiedot (älä unohda, että ne välitetään tekstimuodossa) . Ja kun varmennetta käytetään, vihollinen näkee lokeissaan vain kuvitteellisen käyttäjätunnuksemme - vieras tai asiakas ja tyyppivirheen - Tuntematon CA-sertifikaatti

hieman lisää macOS:stäYleensä macOS:ssä järjestelmän uudelleenasentaminen tapahtuu Internetin kautta. Palautustilassa Macin on oltava yhteydessä WiFi-verkkoon, eikä yrityksen WiFi tai vierasverkko toimi täällä. Henkilökohtaisesti asensin toisen verkon, tavallisen WPA2-PSK:n, piilotettuna, vain teknisiä toimintoja varten. Tai voit myös tehdä käynnistettävän USB-muistitikun järjestelmän kanssa etukäteen. Mutta jos Macisi on vuoden 2015 jälkeen, sinun on myös löydettävä sovitin tälle flash-asemalle)

Lähde: will.com

Lisää kommentti