WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Některé příklady organizace firemní WiFi již byly popsány. Zde popíšu, jak jsem podobné řešení implementoval a jaké problémy jsem musel čelit při připojování na různých zařízeních. Použijeme stávající LDAP s registrovanými uživateli, zvýšíme FreeRadius a nakonfigurujeme WPA2-Enterprise na řadiči Ubnt. Všechno se zdá být jednoduché. Uvidíme…

Něco málo o metodách EAP

Než přistoupíme k úloze, musíme se rozhodnout, jakou autentizační metodu v našem řešení použijeme.

Z wikipedie:

EAP je ověřovací rámec, který se často používá v bezdrátových sítích a spojeních typu point-to-point. Formát byl poprvé popsán v RFC 3748 a aktualizován v RFC 5247.
EAP se používá k výběru metody ověřování, předávání klíčů a zpracování těchto klíčů pomocí zásuvných modulů nazývaných metody EAP. Existuje mnoho metod EAP, jak definovaných samotným EAP, tak vydaných jednotlivými prodejci. EAP nedefinuje linkovou vrstvu, definuje pouze formát zprávy. Každý protokol využívající EAP má svůj vlastní protokol pro zapouzdření zpráv EAP.

Samotné metody:

  • LEAP je proprietární protokol vyvinutý společností CISCO. Byly nalezeny chyby zabezpečení. V současné době se nedoporučuje používat
  • EAP-TLS je mezi bezdrátovými prodejci dobře podporován. Je to bezpečný protokol, protože je nástupcem standardů SSL. Nastavení klienta je poměrně složité. Kromě hesla potřebujete klientský certifikát. Podporováno na mnoha systémech
  • EAP-TTLS – široce podporovaný na mnoha systémech, nabízí dobré zabezpečení pomocí certifikátů PKI pouze na ověřovacím serveru
  • EAP-MD5 je další otevřený standard. Nabízí minimální zabezpečení. Zranitelný, nepodporuje vzájemné ověřování a generování klíčů
  • EAP-IKEv2 – založený na protokolu Internet Key Exchange Protocol verze 2. Poskytuje vzájemné ověření a vytvoření klíče relace mezi klientem a serverem
  • PEAP je společné řešení CISCO, Microsoft a RSA Security jako otevřený standard. Široce dostupné v produktech, poskytuje velmi dobré zabezpečení. Podobně jako EAP-TTLS vyžaduje pouze certifikát na straně serveru
  • PEAPv0/EAP-MSCHAPv2 - po EAP-TLS jde o druhý široce používaný standard na světě. Použitý vztah klient-server v Microsoft, Cisco, Apple, Linux
  • PEAPv1/EAP-GTC – Vytvořeno společností Cisco jako alternativa k PEAPv0/EAP-MSCHAPv2. Žádným způsobem nechrání autentizační data. Není podporováno v operačním systému Windows
  • EAP-FAST je metoda vyvinutá společností Cisco k nápravě nedostatků LEAP. Používá pověření pro chráněný přístup (PAC). Zcela nedokončené

Z celé této rozmanitosti stále není výběr velký. Byla vyžadována metoda ověřování: dobré zabezpečení, podpora na všech zařízeních (Windows 10, macOS, Linux, Android, iOS) a vlastně čím jednodušší, tím lepší. Volba proto padla na EAP-TTLS ve spojení s protokolem PAP.
Může vyvstat otázka - Proč používat PAP? protože přenáší hesla srozumitelně?

Ano to je správně. Tímto způsobem bude probíhat komunikace mezi FreeRadius a FreeIPA. V režimu ladění můžete sledovat, jak se zasílají uživatelské jméno a heslo. Ano, a nechte je jít, pouze vy máte přístup k serveru FreeRadius.

Můžete si přečíst více o práci EAP-TTLS zde

FreeRADIUS

FreeRadius bude zvýšen na CentOS 7.6. Není zde nic složitého, nastavujeme to běžným způsobem.

yum install freeradius freeradius-utils freeradius-ldap -y

Verze 3.0.13 se instaluje z balíčků. To druhé lze vzít na https://freeradius.org/

Poté již FreeRadius funguje. Řádek můžete odkomentovat v /etc/raddb/users

steve   Cleartext-Password := "testing"

Spusťte na server v režimu ladění

freeradius -X

A vytvořte testovací připojení z localhost

radtest steve testing 127.0.0.1 1812 testing123

Dostal jsem odpověď Přijaté ID přístupu-přijetí 115 od 127.0.0.1:1812 do 127.0.0.1:56081 délka 20, to znamená, že je vše v pořádku. Pokračuj.

Připojíme modul LDAP.

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

A hned to změníme. Potřebujeme FreeRadius, abychom měli přístup k 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}})"
}
...

Restartujte radius server a zkontrolujte synchronizaci uživatelů LDAP:

radtest user_ldap password_ldap localhost 1812 testing123

Editace eap in mods-enabled/eap
Zde přidáme dvě instance eap. Lišit se budou pouze certifikáty a klíči. Níže vysvětlím, proč je to pravda.

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

Další úpravy site-enabled/default. Zajímavé jsou části autorizace a ověřování.

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 sekci autorizace odebereme všechny moduly, které nepotřebujeme. Necháváme jen ldap. Přidejte ověření klienta podle uživatelského jména. Proto jsme výše přidali dvě instance eap.

Vícenásobný EAPFaktem je, že při připojování některých zařízení budeme používat systémové certifikáty a specifikovat doménu. Máme certifikát a klíč od důvěryhodné certifikační autority. Osobně je podle mě takový postup připojení jednodušší, než házet na každé zařízení self-signed certifikát. Ale i bez self-signed certifikátů to stále nešlo. Zařízení Samsung a verze Android =< 6 nemohou používat systémové certifikáty. Proto pro ně vytváříme samostatnou instanci eap-guest s certifikáty s vlastním podpisem. Pro všechna ostatní zařízení použijeme eap-client s důvěryhodným certifikátem. Uživatelské jméno je určeno polem Anonymní, když je zařízení připojeno. Jsou povoleny pouze 3 hodnoty: Host, Klient a prázdné pole. Vše ostatní je vyřazeno. Bude se to konfigurovat v politicích. Uvedu příklad o něco později.

Upravme části autorizace a ověřování 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
}

Dále musíte v zásadách určit, která jména lze použít pro anonymní přihlášení. Editace policy.d/filter.

Musíte najít řádky podobné tomuto:

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

A níže v elsif přidejte požadované hodnoty:

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

Nyní se musíme přesunout do adresáře certs. Zde musíme vložit klíč a certifikát od důvěryhodné certifikační autority, kterou již máme, a potřebujeme vygenerovat self-signed certifikáty pro eap-guest.

Změňte parametry v souboru 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"

Do souboru zapisujeme stejné hodnoty server.cnf. Pouze měníme
běžné jméno:

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"

Vytváříme:

make

Připraveno. Přijato server.crt и server.key již jsme se zaregistrovali výše v eap-guest.

A nakonec do souboru přidejte naše přístupové body client.conf. Mám jich 7. Abychom nepřidávali každý bod zvlášť, napíšeme pouze síť, ve které se nacházejí (moje přístupové body jsou v samostatné VLAN).

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

Ubiquiti ovladač

Na ovladači zvedneme samostatnou síť. Nechť je to 192.168.2.0/24
Přejděte do nastavení -> profil. Vytvoříme nový:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zapíšeme adresu a port radius serveru a heslo, které bylo zapsáno v souboru client.conf:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vytvořte nový název bezdrátové sítě. Jako metodu ověřování vyberte WPA-EAP (Enterprise) a zadejte vytvořený profil rádiusu:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vše uložíme, přihlásíme a jedeme dál.

Nastavení klientů

Začněme tím nejtěžším!

Windows 10

Potíž spočívá v tom, že Windows ještě neví, jak se připojit k firemní WiFi přes doménu. Proto musíme ručně nahrát náš certifikát do úložiště důvěryhodných certifikátů. Zde můžete použít jak vlastnoručně podepsaný, tak od certifikační autority. Budu používat druhý.

Dále musíte vytvořit nové připojení. Chcete-li to provést, přejděte do nastavení sítě a Internetu -> Centrum sítí a sdílení -> Vytvořte a nakonfigurujte nové připojení nebo síť:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ručně zadejte název sítě a změňte typ zabezpečení. Poté, co klikneme na změnit nastavení připojení a v záložce Zabezpečení vyberte síťové ověřování - EAP-TTLS.

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Jdeme do parametrů, předepisujeme důvěrnost autentizace - zákazník. Jako důvěryhodná certifikační autorita vyberte certifikát, který jsme přidali, zaškrtněte políčko „Nevystavovat uživateli pozvánku, pokud nelze server autorizovat“ a vyberte metodu ověření – nešifrované heslo (PAP).

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Dále přejděte do pokročilých nastavení a zaškrtněte „Zadat režim ověřování“. Vyberte „Ověření uživatele“ a klikněte na uložit přihlašovací údaje. Zde budete muset zadat username_ldap a password_ldap

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Vše uložíme, aplikujeme, zavřeme. Můžete se připojit k nové síti.

Linux

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

Nejprve si stáhněte certifikát pro sebe. V Linuxu jsem nenašel, zda je možné použít systémové certifikáty a zda vůbec takový obchod existuje.

Pojďme se připojit k doméně. Potřebujeme tedy certifikát od certifikační autority, u které byl náš certifikát zakoupen.

Všechna připojení jsou provedena v jednom okně. Výběr naší sítě:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

anonymní klient
doména – doména, pro kterou je certifikát vydán

Android

jiné než Samsung

Od verze 7 můžete při připojování WiFi používat systémové certifikáty zadáním pouze domény:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

doména – doména, pro kterou je certifikát vydán
anonymní klient

Samsung

Jak jsem psal výše, zařízení Samsung neumí používat systémové certifikáty při připojení k WiFi a nemají možnost připojení přes doménu. Proto musíte ručně přidat kořenový certifikát certifikační autority (ca.pem, bereme ho na Radius serveru). Zde se bude používat vlastní podpis.

Stáhněte si certifikát do svého zařízení a nainstalujte jej.

Instalace certifikátuWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zároveň budete muset nastavit gesto pro odemknutí obrazovky, PIN kód nebo heslo, pokud již není nastaveno:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Ukázal jsem komplikovanou verzi instalace certifikátu. Na většině zařízení stačí kliknout na stažený certifikát.

Po instalaci certifikátu můžete přejít k připojení:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

certifikát - uveďte ten, který byl nainstalován
anonymní uživatel – host

macOS

Zařízení Apple se po vybalení umí připojit pouze k EAP-TLS, ale i tak na ně musíte hodit certifikát. Chcete-li zadat jiný způsob připojení, musíte použít Apple Configurator 2. Podle toho si jej musíte nejprve stáhnout do svého Macu, vytvořit nový profil a přidat všechna potřebná nastavení WiFi.

Apple ConfiguratorWiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

Zde zadejte název sítě
Typ zabezpečení - WPA2 Enterprise
Přijímané typy EAP – TTLS
Uživatelské jméno a heslo – ponechte prázdné
Vnitřní autentizace - PAP
Vnější identita – klient

Karta Důvěra. Zde specifikujeme naši doménu

Všechno. Profil lze uložit, podepsat a distribuovat do zařízení

Poté, co je profil připraven, je třeba jej stáhnout do máku a nainstalovat. Během procesu instalace budete muset zadat usernmae_ldap a password_ldap uživatele:

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

WiFi Enterprise. FreeRadius + FreeIPA + Ubiquiti

iOS

Proces je podobný jako v macOS. Musíte použít profil (můžete použít stejný jako pro macOS. Jak vytvořit profil v Apple Configurator, viz výše).

Stáhněte si profil, nainstalujte, zadejte přihlašovací údaje, připojte se:

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še. Nastavili jsme server Radius, synchronizovali jej s FreeIPA a řekli jsme přístupovým bodům Ubiquiti, aby používali WPA2-EAP.

Možné otázky

In: jak převést profil/certifikát na zaměstnance?

O: Všechny certifikáty/profily ukládám na ftp s webovým přístupem. Vybudovaná síť pro hosty s omezením rychlosti a přístupem pouze k internetu, s výjimkou ftp.
Autentizace trvá 2 dny, poté se resetuje a klient zůstane bez internetu. Že. když se chce zaměstnanec připojit k WiFi, nejprve se připojí k síti pro hosty, přistoupí k FTP, stáhne si certifikát nebo profil, který potřebuje, nainstaluje jej a poté se může připojit k podnikové síti.

In: proč nepoužít schéma s MSCHAPv2? je to bezpečnější!

O: Za prvé, takové schéma funguje dobře na NPS (Windows Network Policy System), v naší implementaci je nutné dodatečně nakonfigurovat LDAP (FreeIpa) a uložit hash hesel na server. Přidat. není vhodné provádět nastavení, protože. to může vést k různým problémům synchronizace ultrazvuku. Za druhé, hash je MD4, takže nepřidává moc zabezpečení.

In: je možné autorizovat zařízení pomocí mac-adres?

O: NE, toto není bezpečné, útočník může změnit MAC adresy a ještě více není na mnoha zařízeních podporována autorizace podle MAC adres

In: co obecně všechny tyto certifikáty používat? můžete se připojit bez nich?

O: certifikáty se používají k autorizaci serveru. Tito. Při připojování zařízení kontroluje, zda se jedná o server, kterému lze důvěřovat či nikoli. Pokud ano, pak autentizace pokračuje, pokud ne, spojení se ukončí. Můžete se připojit bez certifikátů, ale pokud si útočník nebo soused nastaví radius server a přístupový bod se stejným názvem jako my doma, může snadno zachytit přihlašovací údaje uživatele (nezapomeňte, že jsou přenášeny v čistém textu) . A když je použit certifikát, nepřítel uvidí ve svých protokolech pouze naše fiktivní uživatelské jméno - host nebo klient a chybu typu - neznámý certifikát CA

trochu více o macOSV systému macOS se přeinstalace systému obvykle provádí přes internet. V režimu obnovy musí být Mac připojen k WiFi a zde nebude fungovat naše firemní WiFi ani síť pro hosty. Osobně jsem zvedl jinou síť, obvyklou WPA2-PSK, skrytou, pouze pro technické operace. Nebo si stále můžete předem vytvořit bootovací USB flash disk se systémem. Ale pokud je mák po roce 2015, stále budete muset najít adaptér pro tento flash disk)

Zdroj: www.habr.com

Přidat komentář