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 - po EAP-TLS ide o druhý široko používaný štandard na svete. Použitý vzťah klient-server v Microsoft, Cisco, Apple, 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 operačnom systéme Windows
  • 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é

Zo všetkej tejto rozmanitosti výber stále nie je veľký. Požadovaný bol spôsob overenia: dobré zabezpečenie, podpora na všetkých zariadeniach (Windows 10, macOS, Linux, Android, iOS) a vlastne čím jednoduchšie, tým lepšie. Preto voľba padla 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

FreeRadius sa zvýši na CentOS 7.6. Nie je tu nič zložité, nastavíme to 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 EAPFaktom je, že pri pripájaní niektorých zariadení budeme používať systémové certifikáty a špecifikovať doménu. Máme certifikát a kľúč od dôveryhodnej certifikačnej autority. Osobne je podľa mňa takýto postup pripojenia jednoduchší, ako hodiť na každé zariadenie certifikát s vlastným podpisom. Ale ani bez certifikátov s vlastným podpisom to stále nešlo. Zariadenia Samsung a verzie Android =< 6 nemôžu používať systémové certifikáty. Preto pre nich 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é poľom Anonymný pri pripojení zariadenia. Povolené sú len 3 hodnoty: Hosť, Klient a prázdne pole. Všetko ostatné sa vyhodí. Bude to nakonfigurované v politikoch. Trochu neskôr uvediem príklad.

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 = [email protected]
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 = [email protected]
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

Problém spočíva v tom, že systém Windows ešte nevie, ako sa pripojiť k firemnej WiFi prostredníctvom domény. Preto musíme náš certifikát manuálne nahrať do úložiska dôveryhodných certifikátov. Tu môžete použiť ako vlastnoručne podpísané, tak aj od certifikačnej autority. Použijem 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

Testoval som na Ubuntu 18.04, 18.10, Fedora 29, 30.

Najprv si stiahneme náš certifikát. V Linuxe som nenašiel, či je možné použiť systémové certifikáty a či vôbec takýto obchod existuje.

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ý ako v systéme macOS. Musíte použiť profil (môžete použiť rovnaký ako pre macOS. Ako vytvoriť profil v Apple Configurator, pozri 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é, takáto schéma funguje dobre na NPS (Windows Network Policy System), v našej implementácii je potrebné dodatočne nakonfigurovať LDAP (FreeIpa) a uložiť hash hesiel na server. Pridať. nie je vhodné vykonávať nastavenia, pretože. to môže viesť k rôznym problémom so synchronizáciou ultrazvuku. Po druhé, hash je MD4, takže nepridáva veľa bezpečnosti.

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 macOSV systéme macOS sa preinštalovanie systému zvyčajne vykonáva cez internet. V režime obnovenia musí byť Mac pripojený k WiFi a nebude tu fungovať ani naša firemná WiFi, ani sieť pre hostí. Osobne som zdvihol inú sieť, obvyklú WPA2-PSK, skrytú, len pre technické operácie. Alebo si stále môžete vopred vytvoriť bootovací USB flash disk so systémom. Ale ak je mak po roku 2015, stále budete musieť nájsť adaptér pre tento flash disk)

Zdroj: hab.com

Pridať komentár