WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Niektoré príklady organizácie firemnej WiFi už boli popísané. Tu popíšem, ako som implementoval podobné riešenie a problémy, ktorým som musel čeliť pri pripájaní na rôznych zariadeniach. Použijeme existujúce LDAP s registrovanými používateľmi, zvýšime FreeRadius a nakonfigurujeme WPA2-Enterprise na Ubnt radiči. Všetko sa zdá byť jednoduché. Pozrime sa…

Trochu o metódach EAP

Pred pokračovaním v úlohe sa musíme rozhodnúť, ktorú metódu autentifikácie použijeme v našom riešení.

Z wikipedia:

EAP je autentifikačný rámec, ktorý sa často používa v bezdrôtových sieťach a pripojeniach typu point-to-point. Formát bol prvýkrát opísaný v RFC 3748 a aktualizovaný v RFC 5247.
EAP sa používa na výber metódy autentifikácie, prístupových kľúčov a spracovanie týchto kľúčov pomocou doplnkov nazývaných metódy EAP. Existuje mnoho metód EAP, ktoré sú definované v samotnom EAP a vydané jednotlivými dodávateľmi. EAP nedefinuje linkovú vrstvu, definuje iba formát správy. Každý protokol využívajúci EAP má svoj vlastný protokol zapuzdrenia správ EAP.

Samotné metódy:

  • LEAP je proprietárny protokol vyvinutý spoločnosťou CISCO. Našli sa slabé miesta. V súčasnosti sa neodporúča používať
  • EAP-TLS je medzi dodávateľmi bezdrôtových zariadení dobre podporovaný. Ide o bezpečný protokol, pretože je nástupcom štandardov SSL. Nastavenie klienta je pomerne komplikované. Okrem hesla potrebujete klientsky certifikát. Podporované na mnohých systémoch
  • EAP-TTLS – široko podporovaný na mnohých systémoch, ponúka dobré zabezpečenie pomocou certifikátov PKI iba na autentifikačnom serveri
  • EAP-MD5 je ďalší otvorený štandard. Ponúka minimálnu bezpečnosť. Zraniteľný, nepodporuje vzájomnú autentifikáciu a generovanie kľúčov
  • EAP-IKEv2 – založený na protokole Internet Key Exchange Protocol verzie 2. Poskytuje vzájomnú autentifikáciu a vytvorenie kľúča relácie medzi klientom a serverom
  • PEAP je spoločné riešenie CISCO, Microsoft a RSA Security ako otvorený štandard. Široko dostupné v produktoch, poskytuje veľmi dobrú bezpečnosť. Podobne ako EAP-TTLS, vyžaduje len certifikát na strane servera
  • PEAPv0/EAP-MSCHAPv2 je druhý najpoužívanejší štandard na svete po EAP-TLS. Používajú ho spoločnosti Microsoft, Cisco a Apple na komunikáciu klient-server. Linux
  • PEAPv1/EAP-GTC – Vytvorené spoločnosťou Cisco ako alternatíva k PEAPv0/EAP-MSCHAPv2. Žiadnym spôsobom nechráni autentifikačné údaje. Nie je podporované v Windows OS
  • EAP-FAST je technika vyvinutá spoločnosťou Cisco na nápravu nedostatkov LEAP. Používa poverenie na chránený prístup (PAC). Úplne nedokončené

Pri tejto rozmanitosti je výber stále obmedzený. Požadovaná metóda overovania: dobré zabezpečenie, podpora na všetkých zariadeniach (Windows 10, macOS, Linux, Android, iOS) a v skutočnosti platí, že čím jednoduchšie, tým lepšie. Preto padla voľba na EAP-TTLS v spojení s protokolom PAP.
Môže vyvstať otázka – Prečo používať PAP? pretože prenáša heslá v čistote?

Áno, to je správne. Komunikácia medzi FreeRadius a FreeIPA bude prebiehať týmto spôsobom. V režime ladenia môžete sledovať, ako sa používateľské meno a heslo odosielajú. Áno, a nechajte ich ísť, iba vy máte prístup k serveru FreeRadius.

Môžete si prečítať viac o práci EAP-TTLS tu

FreeRADIUS

Zvýšime FreeRadius na CentOS 7.6. Nie je tu nič zložité, inštalujeme ho obvyklým spôsobom.

yum install freeradius freeradius-utils freeradius-ldap -y

Verzia 3.0.13 sa inštaluje z balíkov. To posledné možno vziať https://freeradius.org/

Potom už FreeRadius funguje. Môžete odkomentovať riadok v /etc/raddb/users

steve   Cleartext-Password := "testing"

Spustite na server v režime ladenia

freeradius -X

A vytvorte testovacie pripojenie z localhost

radtest steve testing 127.0.0.1 1812 testing123

Dostal som odpoveď Id prijatého prístupu-akceptovania 115 od 127.0.0.1:1812 do 127.0.0.1:56081 dĺžka 20, to znamená, že je všetko v poriadku. Pokračuj.

Pripojíme modul ldap.

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

A hneď to zmeníme. Potrebujeme FreeRadius, aby sme mali prístup k FreeIPA

s povolenými mods/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}})"
}
...

Reštartujte radius server a skontrolujte synchronizáciu používateľov LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Úprava eap in mods-enabled/eap
Tu pridáme dva prípady eap. Líšiť sa budú iba certifikátmi a kľúčmi. Nižšie vysvetlím, prečo je to tak.

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

Ďalšia úprava site-enabled/default. Zaujímavé sú časti autorizácie a autentifikácie.

site-enabled/default

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 časti autorizácie odstránime všetky moduly, ktoré nepotrebujeme. Nechávame len ldap. Pridajte overenie klienta podľa používateľského mena. Preto sme vyššie pridali dve inštancie eap.

Multi EAPIde o to, že pri pripájaní niektorých zariadení budeme používať systémové certifikáty a zadávať doménu. Máme certifikát a kľúč od dôveryhodnej certifikačnej autority. Osobne si myslím, že tento postup pripojenia je jednoduchší ako inštalácia certifikátu s vlastným podpisom na každé zariadenie. Ale aj tak sme sa s certifikátmi s vlastným podpisom nezaobišli. Zariadenia Samsung a Android Verzia 6 nemôže používať systémové certifikáty. Preto pre ne vytvoríme samostatnú inštanciu eap-guest s certifikátmi s vlastným podpisom. Pre všetky ostatné zariadenia použijeme eap-client s dôveryhodným certifikátom. Používateľské meno je určené polem Anonymous pri pripojení zariadenia. Povolené sú iba tri hodnoty: Guest (Hosť), Client (Klient) a prázdne pole. Všetko ostatné sa zahodí. Toto je nakonfigurované v politikách. Príklad uvediem neskôr.

Upravme časti autorizácie a autentifikácie v site-enabled/inner-tunel

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

Ďalej musíte v politikách špecifikovať, ktoré mená možno použiť na anonymné prihlásenie. Úprava policy.d/filter.

Musíte nájsť riadky podobné tomuto:

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

A nižšie v elsif pridajte požadované hodnoty:

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

Teraz sa musíme presunúť do adresára certy. Tu musíte vložiť kľúč a certifikát od dôveryhodnej certifikačnej autority, ktorú už máme a potrebujeme vygenerovať certifikáty s vlastným podpisom pre eap-hosta.

Zmeňte parametre v súbore cca.cnf.

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

Do súboru zapíšeme rovnaké hodnoty server.cnf. Len sa meníme
spoločný názov:

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

Vytvoriť:

make

Pripravený. Prijaté server.crt и server.key už sme sa zaregistrovali vyššie v eap-guest.

A nakoniec pridajme do súboru naše prístupové body client.conf. Mám ich 7. Aby som nepridával každý bod zvlášť, napíšeme len sieť, v ktorej sa nachádzajú (moje prístupové body sú v samostatnej VLAN).

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

Ubiquiti ovládač

Na ovládači vytvárame samostatnú sieť. Nech je to 192.168.2.0/24
Prejdite na nastavenia -> profil. Vytvárame nový:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zapíšeme adresu a port radius servera a heslo, ktoré bolo zapísané v súbore klienti.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vytvorte nový názov bezdrôtovej siete. Ako metódu overenia vyberte WPA-EAP (Enterprise) a zadajte vytvorený rádiusový profil:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Všetko uložíme, prihlásime a ideme ďalej.

Nastavenie klientov

Začnime tým najťažším!

Windows 10

Ťažkosť spočíva v tom, že Windows Stále sa nedokáže pripojiť k firemnej Wi-Fi sieti cez doménu. Musíme teda manuálne pridať náš certifikát do dôveryhodného úložiska certifikátov. Môžete použiť buď certifikát s vlastným podpisom, alebo certifikát od certifikačnej autority. Ja použijem tú druhú.

Ďalej musíte vytvoriť nové pripojenie. Ak to chcete urobiť, prejdite do nastavení siete a internetu -> Centrum sietí -> Vytvoriť a nakonfigurovať nové pripojenie alebo sieť:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Manuálne zadajte názov siete a zmeňte typ zabezpečenia. Potom, čo klikneme na zmeniť nastavenia pripojenia a na karte Zabezpečenie vyberte overenie siete - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ideme do parametrov, predpíšeme dôvernosť autentifikácie - zákazník. Ako dôveryhodná certifikačná autorita vyberte certifikát, ktorý sme pridali, zaškrtnite políčko „Nevystavovať používateľovi pozvánku, ak server nie je možné autorizovať“ a vyberte metódu overenia - nezašifrované heslo (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ďalej prejdite na rozšírené nastavenia a začiarknite políčko „Určiť režim overenia“. Vyberte „Overenie používateľa“ a kliknite na uložiť poverenia. Tu budete musieť zadať username_ldap a password_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Všetko uložíme, aplikujeme, uzavrieme. Môžete sa pripojiť k novej sieti.

Linux

Skontroloval som Ubuntu 18.04, 18.10, Fedora 29, 30.

Najprv si stiahnite certifikát. Nenašiel som ho v Linux, je možné použiť systémové certifikáty a existuje vôbec takéto úložisko?

Poďme sa pripojiť k doméne. Preto potrebujeme certifikát od certifikačnej autority, od ktorej bol náš certifikát zakúpený.

Všetky pripojenia sú vytvorené v jednom okne. Výber našej siete:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonymný klient
doména – doména, pre ktorú je certifikát vydaný

Android

iné ako Samsung

Od verzie 7 môžete pri pripájaní WiFi použiť systémové certifikáty zadaním iba domény:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

doména – doména, pre ktorú je certifikát vydaný
anonymný klient

Samsung

Ako som písal vyššie, zariadenia Samsung nevedia používať systémové certifikáty pri pripojení k WiFi a nemajú možnosť pripojenia cez doménu. Preto musíte manuálne pridať koreňový certifikát certifikačnej autority (ca.pem, berieme ho na server Radius). Tu sa použije vlastnoručný podpis.

Stiahnite si certifikát do svojho zariadenia a nainštalujte ho.

Inštalácia certifikátuWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zároveň budete musieť nastaviť vzor odomknutia obrazovky, PIN kód alebo heslo, ak ešte nie je nastavené:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ukázal som komplikovanú verziu inštalácie certifikátu. Na väčšine zariadení stačí kliknúť na stiahnutý certifikát.

Keď je certifikát nainštalovaný, môžete prejsť na pripojenie:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

certifikát - uveďte ten, ktorý bol nainštalovaný
anonymný používateľ – hosť

macOS

Zariadenia Apple sa po vybalení môžu pripojiť iba k EAP-TLS, ale aj tak im musíte hodiť certifikát. Ak chcete určiť iný spôsob pripojenia, musíte použiť Apple Configurator 2. Najprv si ho teda musíte stiahnuť do svojho Macu, vytvoriť nový profil a pridať všetky potrebné nastavenia WiFi.

Apple konfigurátorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Tu zadajte názov siete
Typ zabezpečenia - WPA2 Enterprise
Akceptované typy EAP – TTLS
Používateľské meno a heslo - nechajte prázdne
Vnútorná autentifikácia - PAP
Vonkajšia identita-klient

Karta Dôvera. Tu špecifikujeme našu doménu

Všetky. Profil je možné uložiť, podpísať a distribuovať do zariadení

Keď je profil pripravený, musíte si ho stiahnuť do maku a nainštalovať. Počas procesu inštalácie budete musieť zadať usernmae_ldap a password_ldap používateľa:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

Proces je podobný macOSMusíte použiť profil (môžete použiť rovnaký ako pre macOS(Postup vytvorenia profilu v Apple Configuratore nájdete vyššie.)

Stiahnite si profil, nainštalujte, zadajte poverenia, pripojte sa:

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 všetko. Nastavili sme server Radius, synchronizovali sme ho s FreeIPA a povedali sme Ubiquiti AP, aby používali WPA2-EAP.

Možné otázky

in: ako preniesť profil/certifikát na zamestnanca?

o: Všetky certifikáty/profily ukladám na ftp s webovým prístupom. Vybudovaná hosťovská sieť s rýchlostným limitom a prístupom iba na internet, s výnimkou ftp.
Autentifikácia trvá 2 dni, potom sa resetuje a klient zostane bez internetu. To. keď sa chce zamestnanec pripojiť na WiFi, najprv sa pripojí k hosťovskej sieti, pristúpi na FTP, stiahne si certifikát alebo profil, ktorý potrebuje, nainštaluje si ho a potom sa môže pripojiť k podnikovej sieti.

in: prečo nepoužiť schému s MSCHAPv2? Je bezpečnejšia!

o: Po prvé, táto schéma funguje dobre pre NPS (Windows Naša implementácia vyžaduje dodatočnú konfiguráciu LDAP (FreeIpa) a ukladanie hashov hesiel na serveri. Dodatočná konfigurácia sa neodporúča, pretože môže viesť k rôznym problémom so synchronizáciou účtov. Po druhé, hash je MD4, takže výrazne nezvyšuje bezpečnosť.

in: je možné autorizovať zariadenia podľa mac-adries?

o: NIE, toto nie je bezpečné, útočník môže zmeniť MAC adresy a ešte viac nie je na mnohých zariadeniach podporovaná autorizácia podľa MAC adries

in: čo vo všeobecnosti použiť všetky tieto certifikáty? môžeš sa pridať aj bez nich?

o: certifikáty sa používajú na autorizáciu servera. Tie. pri pripájaní zariadenie skontroluje, či ide o server, ktorému možno dôverovať alebo nie. Ak je, potom autentifikácia pokračuje, ak nie, spojenie sa uzavrie. Môžete sa pripojiť bez certifikátov, ale ak si útočník alebo sused nastaví rádius server a prístupový bod s rovnakým názvom ako máme my doma, môže ľahko zachytiť prihlasovacie údaje používateľa (nezabúdajte, že sa prenášajú ako čistý text). A keď sa použije certifikát, nepriateľ uvidí vo svojich protokoloch iba naše fiktívne používateľské meno - hosť alebo klient a chybu typu - neznámy certifikát CA

trochu viac o macOSZvyčajne na macOS Preinštalovanie systému sa vykonáva cez internet. V režime obnovy musí byť Mac pripojený k WiFi a ani naša firemná WiFi, ani hosťovská sieť nebudú fungovať. Osobne som nastavil inú sieť, bežnú sieť WPA2-PSK, skrytú, len pre technické účely. Prípadne si môžete vytvoriť bootovací USB disk s vopred nainštalovaným systémom. Ak je však váš Mac vyrobený po roku 2015, budete musieť pre tento USB disk nájsť adaptér.

Zdroj: hab.com

Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster