FreeRADIUS je implementace protokolu 802.1x, který využívá, stejně jako WPA2-Enterprise, pro autentizaci protokol EAP (Extensible Authentication Protocol). Protokol 802.1x používá EAP pro autentizaci přes LAN a WPA2-Enterprise používá EAP pro autentizaci přes Wi-Fi. EAP se používá pro autentizaci uživatele dříve, než získá přístup k počítačové síti.
Ověřování pomocí EAP se skládá ze tří komponent:
- Autentikátor – v případě bezdrátových sítí se jedná o access point (v případě drátových sítí o switch), který zvládá WPA2-Enterprise. Komunikuje pomocí point-to-point protokolu s autentizačním serverem, v tomto případě FreeRADIUS serverem. Umožňuje komunikaci mezi autentizačním serverem a žadatelem (supplicantem).
- Žadatel (supplicant) – žadatel je jakékoliv zařízení žádající o přístup k počítačové síti autentizační server prostřednictvím autenticatoru.
- Autentizační server – nejčastěji nějaká implementace RADIUS protokolu.
Nastavení modulu EAP
Modul EAP je základním modulem (dostupný po instalaci základního balíčku), včetně dalších modulů, na kterých je závislý. Tyto moduly jsou obsaženy ve FreeRADIUS serveru ihned po základní instalaci. Konfigurace modulu EAP se nachází v souboru /etc/freeradius/eap.conf.
Modul EAP obsahuje několik autentizačních metod. Tyto metody jsou konfigurovány jako pododdíly konfigurace EAPu. Oddíl EAP musí mít uvedenu alespoň jednu autentizační metodu.
Autentizační metody protokolu EAP:
- MD5 – není nutno konfigurovat, nedoporučuje se pro jeho bezpečnostní slabiny.
- LEAP – vyvinuto společností Cisco, nedoporučuje se pro jeho bezpečnostní slabiny.
- GTC – tato metoda může být použita jen uvnitř tunelované metody, jako je TTLS nebo PEAP, protože zasílá heslo v nešifrované podobě.
- TLS – tato metoda požaduje po klientovi jeho klientský certifikát a poskytuje základ šifrování pro metody TTLS a PEAP. Patří mezi velmi bezpečné, ale náročnější vzhledem k managementu klientských certifikátů.
- TTLS – vytváří zabezpečený tunel k transportu další autentizační metody. Typicky se používá pro přenos nezašifrovaných hesel. Metoda TTLS paří mezi velmi populární, bezpečné a podporuje ji většina zařízení. Bohužel většinou není podporováno u produktů firmy Microsoft.
- PEAP – vytváří zabezpečený tunel podobně jako TTLS. Mezi populární vnitřní metody autentizace patří MSCHAPv2 a GTC. Metoda MSCHAPv2 má výbornou podporu u produktů firmy Microsoft na rozdíl od GTC. PEAP patří mezi velmi oblíbené a bezpečné.
- MSCHAPv2 – používá protokol MSCHAP pro autentizaci. Sice nevytváří zabezpečení komunikace tunelem, ale i tak patří mezi bezpečné metody. MSCHAPv2 potřebuje získávat heslo v nezašifrované podobě, aby FreeRADIUS server mohl vytvořit LM-password a NT-password. Řešení se ovšem nabízí vytvořit v LDAP stromu další atribut a uchovávat v něm prosté heslo, nicméně je doporučeno mít heslo rozdílné od hesla hashovaného (v LDAP většinou pomocí algoritmu SHA). Existují i další řešení, jak jde tento stav obejít, např. připojovat se pomocí FreeRADIUS serveru verze 3 k Sambě verze 4 jako k active directory.
Příklad konfigurace EAP
Důležité je nepoužívané a mnohdy i bezpečnostně slabé autentizační metody odstranit nebo zakomentovat v příslušných souborech.
Z výše uvedených důvodů uvádím konfiguraci metod PEAP/MSCHAPv2 a EAP-TTLS, aby byla pokryta podpora nejrůznějších OS. Z tohoto důvodu je nutné uchovávat hesla v nezašifrované (plain) podobě.
V konfiguraci /etc/freeradius/eap.conf
je nutné upravit:
- Zakomentovat oddíl leap.
- Ponechat oddíl md5 – je použito jako výchozí typ při komunikaci v rámci tunelu TTLS.
- Zakomentovat oddíl GTC.
- Nastavit certifikáty v oddíle
tls
– je potřeba i pro oddíl TTLS. - V oddíle
ttls
nastavitdefault_eap_type = md5
, autoři FreeRADIUS serveru doporučují toto nastavení pro komunikaci v rámci tunelu. - V oddíle PEAP nastavit
default_eap_type = mschapv2
, autoři FreeRADIUS serveru doporučují toto nastavení.
Výše uvedené drobné změny jsou funkční a fungující konfigurací pokud chcete používat autentizaci PEAP/MSCHAPv2, která bezproblémově funguje na většině OS. Problém může nastat pouze v případě, že si sami podepisujete certifikát (ve většině případů). Linux a iOS vypíšou varování a lze dále pokračovat. Ve Windows 7 je potřeba v nastavení WiFi sítí zrušit ověřování certifikátu.
Soubor users
Soubor users
obsahuje informace o uživatelských účtech. Má velice jednoduchý tvar. Hned za uživatelským jménem následují podmínky, které musí být splněny, aby byl uživatel autentizován. Např.:
Alice Cleartext-Password:="tajneheslo", Simultaneous Use := "1", Login Time := "Wk0650-1615"
Výše uvedený záznam by měl být celý na jednom řádku. Na dalších řádcích můžou být atributy, které jsou pak obsaženy v odpovědi.
U výše uvedeného příkladu byla použita určitá omezení v přihlašování:
- možnost přihlásit pouze jedno zařízení,
- možnost přihlásit se jen v určitou dobu.
FreeRADIUS server používá různé interní atributy a jeden z nich je Simultaneous-use
. V tomto atributu lze specifikovat, kolik zařízení se může v jeden okamžik autentizovat pomocí FreeRADIUS serveru. Zde je potřeba počítat množství otevřených session. Tuto funkci zajišťuje modul sradutmp
v oddíle session
. Pokud je v tomto oddíle použitý modul radutmp
, je lepší ho zakomentovat a použít místo něj bezpečnější sradutmp
. Tento modul pak ukládá sessions do souboru /var/log/freeradius/sradutmp
.
Někdy se klientské NAS mohou chovat podivně, obzvláště ty, které jsou konfigurovány jako nas-type=other
v souboru clients.conf
. Může totiž nastat situace, kdy nám atribut Simultaneous-use
funguje naprosto přesně na jednom místě, ale po přesunu jinam se nám zařízení odmítne znovu autentizovat. Je to dáno tím, že posílá vadný atribut nas-port
a kvůli tomu nelze sledovat jednotlivé session.
Další potřebný vnitřní atribut je Login-Time
. Tento atribut určuje, ve kterou dobu se může uživatel přihlásit do systému. Čas je zde definován jako seznam textových řetězců oddělených čárkou. Každý textový řetězec musí začínat definicí dne. Zde může být uveden pouze jeden den, několik dní, nebo rozsah dní oddělené pomlčkou.
Definované hodnoty jsou:
- Mo, Tu, We, Th, Fr, Sa a Su pro jednotlivé dny v týdnu,
- Wk jsou pracovní dny,
- Any, nebo Al značí všechny dny.
Po definici dni následuje rozsah hodin ve formátu hhmm-hhmm
.
Příklad:
"Wk0700-2200,Sa,Su0800-1600"
FreeRADIUS počítá čas do konce povoleného časového rozsahu, a pokud se někdo autentizuje v čase menším než je defaultní doba platnosti sezení, tak server nastaví Session-Timeout
na kratší dobu, a to tak, aby čas sezení vypršel přesně na konci platnosti časového rozsahu.
Nyní byste měli mít FreeRADIUS nakonfigurovaný pro základní autentizaci. Dále je možno propojit FreeRADIUS s LDAP nebo MySQL serverem. Na Internetu je několik zdrojů, které tuto problematiku řeší a poskytují další informace např.:
- Oficiální dokumentace vývojářů FreeRADIUS
- VAN DER WALT, Dirk. FreeRADIUS beginner's guide: manage your network resources with FreeRADIUS. Birmingham [U.K.]: Packt Pub. Ltd., 2011, xiii, 317 p.