„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Kai kurie įmonės WiFi organizavimo pavyzdžiai jau buvo aprašyti. Čia aprašysiu, kaip įgyvendinau tokį sprendimą ir su kokiomis problemomis susidūriau jungiantis prie skirtingų įrenginių. Naudosime esamą LDAP su nusistovėjusiais vartotojais, įdiegsime FreeRadius ir sukonfigūruosime WPA2-Enterprise Ubnt valdiklyje. Viskas atrodo paprasta. Pažiūrėkime…

Šiek tiek apie EAP metodus

Prieš pradėdami užduotį, turime nuspręsti, kokį autentifikavimo metodą naudosime savo sprendime.

Iš Vikipedijos:

EAP yra autentifikavimo sistema, kuri dažnai naudojama belaidžiuose tinkluose ir taško-taško ryšiuose. Formatas pirmą kartą buvo aprašytas RFC 3748 ir atnaujintas RFC 5247.
EAP naudojamas autentifikavimo metodui pasirinkti, raktams perduoti ir tuos raktus apdoroti papildiniais, vadinamais EAP metodais. Yra daug EAP metodų, apibrėžtų naudojant patį EAP, ir tuos, kuriuos išleido atskiri pardavėjai. EAP neapibrėžia nuorodos sluoksnio, jis tik apibrėžia pranešimo formatą. Kiekvienas protokolas, kuris naudoja EAP, turi savo EAP pranešimų inkapsuliavimo protokolą.

Patys metodai:

  • LEAP yra patentuotas protokolas, kurį sukūrė CISCO. Rasta pažeidžiamumų. Šiuo metu nerekomenduojama naudoti
  • EAP-TLS yra gerai palaikomas tarp belaidžio ryšio tiekėjų. Tai saugus protokolas, nes jis yra SSL standartų įpėdinis. Kliento nustatymas yra gana sudėtingas. Be slaptažodžio, jums reikia kliento sertifikato. Palaikoma daugelyje sistemų
  • EAP-TTLS – plačiai palaikoma daugelyje sistemų, užtikrina gerą saugumą naudojant PKI sertifikatus tik autentifikavimo serveryje
  • EAP-MD5 yra dar vienas atviras standartas. Siūlo minimalų saugumą. Pažeidžiamas, nepalaiko abipusio autentifikavimo ir raktų generavimo
  • EAP-IKEv2 – pagrįsta interneto raktų mainų protokolo 2 versija. Suteikia abipusį autentifikavimą ir seanso rakto nustatymą tarp kliento ir serverio
  • PEAP yra bendras CISCO, Microsoft ir RSA Security sprendimas kaip atviras standartas. Plačiai prieinamas gaminiuose, užtikrina labai gerą saugumą. Panašiai kaip EAP-TTLS, reikalaujantis tik serverio sertifikato
  • PEAPv0/EAP-MSCHAPv2 – po EAP-TLS tai antras plačiai naudojamas standartas pasaulyje. Naudojamas kliento ir serverio ryšys Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC – sukūrė Cisco kaip PEAPv0/EAP-MSCHAPv2 alternatyvą. Jokiu būdu neapsaugo autentifikavimo duomenų. Nepalaikoma Windows OS
  • EAP-FAST yra Cisco sukurtas metodas LEAP trūkumams ištaisyti. Naudoja apsaugotos prieigos kredencialus (PAC). Visiškai nebaigtas

Iš visos šios įvairovės pasirinkimas vis dar nėra didelis. Reikalingas autentifikavimo metodas: geras saugumas, palaikymas visuose įrenginiuose (Windows 10, macOS, Linux, Android, iOS) ir, tiesą sakant, kuo paprastesnis, tuo geriau. Todėl pasirinkimas teko EAP-TTLS kartu su PAP protokolu.
Gali kilti klausimas – kam naudoti PAP? Juk slaptažodžius perduoda aiškiu tekstu?

Taip, teisingai. Ryšys tarp FreeRadius ir FreeIPA vyks būtent taip. Derinimo režimu galite stebėti, kaip siunčiamas vartotojo vardas ir slaptažodis. Taip, ir paleiskite juos, tik jūs turite prieigą prie „FreeRadius“ serverio.

Galite perskaityti daugiau apie tai, kaip veikia EAP-TTLS čia

Laisvas RADIUS

Mes atnaujinsime FreeRadius į CentOS 7.6. Čia nėra nieko sudėtingo, montuojame įprastu būdu.

yum install freeradius freeradius-utils freeradius-ldap -y

Iš paketų įdiegta 3.0.13 versija. Pastarąjį galima pasiimti adresu https://freeradius.org/

Po to „FreeRadius“ jau veikia. Eilutę galite atšaukti /etc/raddb/users

steve   Cleartext-Password := "testing"

Paleiskite serverį derinimo režimu

freeradius -X

Ir užmegzkite bandomąjį ryšį iš localhost

radtest steve testing 127.0.0.1 1812 testing123

Gavome atsakymą Gautas prieigos-priimimo ID 115 nuo 127.0.0.1:1812 iki 127.0.0.1:56081 ilgis 20, tai reiškia, kad viskas gerai. Pirmyn.

Modulio prijungimas ldap.

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

Ir tuoj pakeisime. Mums reikia „FreeRadius“, kad galėtume pasiekti „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}})"
}
...

Iš naujo paleiskite spindulio serverį ir patikrinkite LDAP vartotojų sinchronizavimą:

radtest user_ldap password_ldap localhost 1812 testing123

Redaguoti eap in Mods-enabled/eap
Čia pridėsime du eap atvejus. Jie skirsis tik sertifikatais ir raktais. Toliau paaiškinsiu, kodėl tai tiesa.

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

Toliau mes redaguojame svetainė įjungta / numatytasis. Mane domina autorizacijos ir autentifikavimo skyriai.

svetainė įjungta / numatytasis

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
}

Įgaliojimo skiltyje pašaliname visus modulius, kurių mums nereikia. Paliekame tik ldap. Pridėkite kliento patvirtinimą pagal vartotojo vardą. Štai kodėl aukščiau pridėjome du eap atvejus.

Keli EAPFaktas yra tas, kad prijungdami kai kuriuos įrenginius naudosime sistemos sertifikatus ir nurodysime domeną. Turime sertifikatą ir raktą iš patikimos sertifikavimo institucijos. Asmeniškai, mano nuomone, ši prisijungimo procedūra yra paprastesnė nei mesti ant kiekvieno įrenginio savarankiškai pasirašytą sertifikatą. Tačiau net ir be pačių pasirašytų pažymų išvykti vis tiek nebuvo įmanoma. „Samsung“ įrenginiai ir „Android“ =< 6 versijos nežino, kaip naudoti sistemos sertifikatus. Todėl jiems sukuriame atskirą eap-guest egzempliorių su savarankiškai pasirašytais sertifikatais. Visiems kitiems įrenginiams naudosime eap-client su patikimu sertifikatu. Vartotojo vardas nustatomas pagal lauką Anoniminis prijungiant įrenginį. Leidžiamos tik 3 reikšmės: Svečias, Klientas ir tuščias laukas. Visa kita išmesta. Tai galima sukonfigūruoti strategijose. Šiek tiek vėliau pateiksiu pavyzdį.

Redaguojame autorizavimo ir autentifikavimo skyrius svetainė įgalinta / vidinis tunelis

svetainė įgalinta / vidinis tunelis

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
}

Tada politikoje turite nurodyti, kuriuos vardus galima naudoti anoniminiam prisijungimui. Redagavimas politika.d/filter.

Turite rasti eilutes, panašias į šią:

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

Ir toliau elsif pridėkite reikiamas reikšmes:

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

Dabar turime pereiti į katalogą sertifikatai. Čia turime įdėti raktą ir sertifikatą iš patikimos sertifikavimo institucijos, kurią jau turime, ir turime sugeneruoti savarankiškai pasirašytus sertifikatus eap-guest.

Failo parametrų keitimas 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"

Į failą įrašome tas pačias reikšmes serveris.cnf. Mes tik keičiamės
Dažnas vardas:

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

Mes kuriame:

make

Paruošta. Gauta serveris.crt и serveris.raktas Aukščiau jau užsiregistravome eap-guest.

Ir galiausiai prie failo pridėkime savo prieigos taškus klientas.konf. Turiu jų 7. Kad kiekvieno taško atskirai nepridėtų, registruosime tik tą tinklą, kuriame jie yra (mano prieigos taškai yra atskirame VLAN).

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

Ubiquiti valdiklis

Ant valdiklio iškeliame atskirą tinklą. Tegul tai bus 192.168.2.0/24
Eikite į nustatymus -> profilis. Sukurkime naują:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Užrašome spindulio serverio adresą ir prievadą bei slaptažodį, kuris buvo įrašytas faile clients.conf:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Sukurkite naują belaidžio tinklo pavadinimą. Kaip autentifikavimo metodą pasirinkite WPA-EAP (Enterprise) ir nurodykite sukurtą spindulio profilį:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Viską išsaugome, pritaikome ir judame toliau.

Klientų nustatymas

Pradėkime nuo sunkiausios dalies!

langai 10

Sunkumas kyla dėl to, kad „Windows“ dar nežino, kaip prisijungti prie įmonės „WiFi“ per domeną. Todėl turime rankiniu būdu įkelti savo sertifikatą į patikimą sertifikatų saugyklą. Čia galite naudoti arba savarankiškai, arba sertifikavimo institucijos pasirašytą dokumentą. Aš naudosiu antrą.

Toliau reikia sukurti naują ryšį. Norėdami tai padaryti, eikite į Tinklo ir interneto nustatymai -> Tinklo ir bendrinimo centras -> Sukurkite ir sukonfigūruokite naują ryšį arba tinklą:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Rankiniu būdu įvedame tinklo pavadinimą ir pakeičiame saugos tipą. Tada spustelėkite pakeisti ryšio nustatymus ir skirtuke Sauga pasirinkite tinklo autentifikavimą – EAP-TTLS.

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Eikite į nustatymus, nustatykite autentifikavimo konfidencialumą - klientas. Kaip patikima sertifikavimo institucija, pasirinkite mūsų pridėtą sertifikatą, pažymėkite langelį „Neskelbti kvietimo vartotojui, jei serveris negali būti įgaliotas“ ir pasirinkite autentifikavimo metodą - paprasto teksto slaptažodį (PAP).

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Tada eikite į papildomus parametrus ir pažymėkite langelį „Nurodykite autentifikavimo režimą“. Pasirinkite „Vartotojo autentifikavimas“ ir spustelėkite išsaugoti kredencialus. Čia turėsite įvesti vartotojo vardą_ldap ir slaptažodį_ldap

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Išsaugome, taikome, viską uždarome. Galite prisijungti prie naujo tinklo.

Linux

Išbandžiau Ubuntu 18.04, 18.10, Fedora 29, 30.

Pirmiausia atsisiųskite sertifikatą sau. Linuxe neradau ar galima naudoti sistemos sertifikatus, ar apskritai yra tokia parduotuve.

Prisijungsime per domeną. Todėl mums reikia sertifikato iš sertifikavimo institucijos, iš kurios buvo pirktas mūsų sertifikatas.

Visos jungtys atliekamos viename lange. Pasirinkite mūsų tinklą:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

anonimas – klientas
domenas – domenas, kuriam išduotas sertifikatas

Android

ne Samsung

Nuo 7 versijos, prisijungdami prie WiFi, galite naudoti sistemos sertifikatus nurodydami tik domeną:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

domenas – domenas, kuriam išduotas sertifikatas
anonimas – klientas

"Samsung"

Kaip jau rašiau aukščiau, „Samsung“ įrenginiai nemoka naudotis sistemos sertifikatais jungiantis „WiFi“ ir neturi galimybės prisijungti per domeną. Todėl turite rankiniu būdu pridėti sertifikavimo institucijos šakninį sertifikatą (ca.pem, paimkite jį iš Radius serverio). Čia bus naudojamas savarankiškas parašas.

Atsisiųskite sertifikatą į savo įrenginį ir įdiekite.

Sertifikato įdiegimas„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Tokiu atveju turėsite nustatyti ekrano atrakinimo šabloną, PIN kodą arba slaptažodį, jei jis dar nenustatytas:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Parodžiau sudėtingą sertifikato diegimo parinktį. Daugumoje įrenginių tiesiog spustelėkite atsisiųstą sertifikatą.

Įdiegę sertifikatą, galite pereiti prie ryšio:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

sertifikatas – nurodykite tą, kurį įdiegėte
anoniminis vartotojas – svečias

macOS

„Apple“ įrenginiai gali prisijungti tik prie EAP-TLS, tačiau vis tiek turite pateikti jiems sertifikatą. Norėdami nurodyti kitą prisijungimo būdą, turite naudoti Apple Configurator 2. Atitinkamai, pirmiausia turite jį atsisiųsti į savo Mac kompiuterį, susikurti naują profilį ir pridėti visus reikiamus WiFi nustatymus.

"Apple Configurator"„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Čia nurodome savo tinklo pavadinimą
Apsaugos tipas – WPA2 Enterprise
Priimtini EAP tipai – TTLS
Vartotojo vardas ir slaptažodis – palikite tuščius
Vidinis autentifikavimas – PAP
Išorinė tapatybė – klientas

Pasitikėjimo skirtukas. Čia nurodome savo domeną

Visi. Profilį galima išsaugoti, pasirašyti ir platinti įrenginiuose

Kai profilis bus paruoštas, turite jį atsisiųsti į „Mac“ ir įdiegti. Diegimo proceso metu turėsite nurodyti vartotojo usernmae_ldap ir password_ldap:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

"iOS"

Procesas panašus į „MacOS“. Turite naudoti profilį (galite naudoti tą patį, kaip ir „MacOS“. Kaip sukurti profilį „Apple Configurator“, žr. aukščiau).

Atsisiųskite profilį, įdiekite, įveskite kredencialus, prisijunkite:

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

„WiFi“ įmonė. FreeRadius + FreeIPA + Ubiquiti

Tai viskas. Mes nustatėme Radius serverį, sinchronizavome jį su FreeIPA ir liepėme Ubiquiti prieigos taškams naudoti WPA2-EAP.

Galimi klausimai

In: kaip darbuotojui perduoti profilį/pažymą?

Apie: Visus sertifikatus/profilius saugau FTP su prieiga per internetą. Sukūriau svečių tinklą su greičio apribojimu ir prieiga tik prie interneto, išskyrus FTP.
Autentifikavimas trunka 2 dienas, po to atstatomas ir klientas lieka be interneto. Tai. Kai darbuotojas nori prisijungti prie WiFi, jis pirmiausia prisijungia prie svečių tinklo, prisijungia prie FTP, atsisiunčia jam reikalingą sertifikatą ar profilį, juos įdiegia ir tada gali prisijungti prie įmonės tinklo.

In: kodėl gi nenaudoti schemos su MSCHAPv2? tai saugiau!

Apie: pirma, ši schema gerai veikia NPS („Windows Network Policy System“), mūsų diegime būtina papildomai sukonfigūruoti LDAP („FreeIpa“) ir saugoti slaptažodžių maišą serveryje. Papildyti. Nepatartina atlikti nustatymų, nes tai gali sukelti įvairių problemų su ultragarso sistemos sinchronizavimu. Antra, maiša yra MD4, todėl ji neprideda daug saugumo

In: Ar galima autorizuoti įrenginius naudojant „Mac“ adresus?

Apie: NE, tai nėra saugu, užpuolikas gali suklastoti MAC adresus, o juo labiau autorizacija pagal MAC adresus nepalaikoma daugelyje įrenginių

In: Kam išvis naudoti visus šiuos sertifikatus? galite prisijungti ir be jų

Apie: sertifikatai naudojami serveriui autorizuoti. Tie. Prisijungdamas įrenginys patikrina, ar tai serveris, kuriuo galima pasitikėti, ar ne. Jei taip, autentifikavimas tęsiamas; jei ne, ryšys nutraukiamas. Galite prisijungti be sertifikatų, bet jei užpuolikas ar kaimynas namuose nustato spindulio serverį ir prieigos tašką tokiu pačiu pavadinimu kaip ir mūsų, jis gali lengvai perimti vartotojo kredencialus (nepamirškite, kad jie perduodami aiškiu tekstu) . Ir kai naudojamas sertifikatas, priešas savo žurnaluose matys tik mūsų fiktyvų vartotojo vardą – svečias arba klientas ir tipo klaidą – nežinomas CA sertifikatas.

šiek tiek daugiau apie macOSPaprastai „MacOS“ sistemos iš naujo įdiegimas atliekamas internetu. Atkūrimo režimu Mac turi būti prijungtas prie WiFi ir čia neveiks nei mūsų įmonės WiFi, nei svečių tinklas. Asmeniškai aš įdiegiau kitą tinklą, įprastą WPA2-PSK, paslėptą, tik techninėms operacijoms. Arba taip pat galite iš anksto sukurti įkrovos USB atmintinę su sistema. Bet jei jūsų „Mac“ yra po 2015 m., taip pat turėsite rasti adapterį šiai „flash drive“)

Šaltinis: www.habr.com

Добавить комментарий