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
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
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ý:
Zapíšeme adresu a port radius serveru a heslo, které bylo zapsáno v souboru client.conf:
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:
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íť:
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.
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).
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
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ě:
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:
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átu
Zároveň budete muset nastavit gesto pro odemknutí obrazovky, PIN kód nebo heslo, pokud již není nastaveno:
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í:
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 Configurator
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:
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:
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