Toto je starší verze dokumentu!
Tento návod Vás provede instalací RADIUS serveru FreeRADIUS. RADIUS server je potřebný pro zapojení do eduroam infrastruktury. Použitá ověřovací metoda bude EAP-PEAP.
Debian distribuuje FreeRADIUS bez zakompilované podpory pro TLS, tudíž je nutné si přeložit vlastní verzi. Stáhněte si zdrojové kódy z freeradius.org a rozbalte je.
V adresáři se zdrojovými kódy, spusťte:
./configure --prefix=/opt/radius-2.1.6 --with-system-libtool make #jako uživatel root spusťte make install
Pokud jste FreeRADIUS nemuseli překládat, najděte si umístění konfiguračních souborů. Na většině distribucí budou v /etc/radius
. Návod pracuje s umístěním v /opt/radius-2.1.6/etc/raddb
.
FreeRADIUS je po překladu přednastaven na EAP-TLS (ověřování uživatelským certifikátem). Při prvním spuštění si FreeRADIUS vygeneruje potřebné certifikáty (adresář certs
obsahuje skripty pro vytvoření testovací certifikační autority a všech potřebných certifikátů).
Základním pravidlem je dělat co nejméně změn. Konfigurace bude rozdělena do dvou částí: obecné a specifické. V obecné části nastavíme vše potřebné krok po kroku. Ve specifické části budou pouze tipy, jak napojit FreeRADIUS na LDAP, ta se bude lišit podle použitého LDAPu.
I malá změna dokáže udělat velké divy, proto doporučuji po každé změně otestovat RADIUS server nástrojem rad_eap_test.
v sekci eap {}
nastavíme:
default_eap_type = peap
v sekci tls {}
nastavíme své certifikáty (tls komunikace mezi uživatelským notebookem a naším RADIUS serverem):
private_key_file = /etc/ssl/private/radius09.pem certificate_file = /etc/ssl/certs/radius09.crt
Konfigurační volby private_key_file
a certificate_file
ukazují na soubory s privátním a veřejným klíčem Vašeho serveru, které získáte od certifikační autority (CA). Pokud certifikační autorita, která vydala certifikát pro server, nevydává certifikáty přímo pod kořenem, který mají uživatelé předinstalovaný v suplikantu, je nutné společně s certifikátem serveru posílat i certifikáty mezilehlých CA. To se udělá tak, že certifikáty přidáte do téhož souboru, ve kterém je certifikát serveru. Certifikáty přidávejte na konec souboru. Přidání mezilehlých certifikátů je nutné jak pro SureServer EDU, tak pro Terena Certificate Service.
Věnujte pozornost nastavení CA_file
a CA_path
. Pokud je
nastavíte špatně, můžete umožnit přihlášení komukoliv, kdo má
certifikát od zadané CA. Doporučujeme nechat CA_file
nenastavené a
CA_path
, která defaultně ukazuje do adresáře, kde je testovací
self-signed CA. Listem eduroam-admin proběhla zajímavá diskuze kolem
těchto parametrů, viz. emaily: 1 a
2.
Soubor proxy.conf
určuje, jak budeme požadavky směrovat. Požadavky s realmem „vas_realm.cz“ budeme směrovat na náš RADIUS. Požadavky bez realmu (realm NULL
) odmítneme úpravou souboru users
. Ostatní požadavky (realm DEFAULT
) chceme poslat na národní RADIUS server. V tomto souboru jsou úpravy hodně masivní. V podstatě vše zakomentovat, v souboru by mělo ve výsledku být jen následující:
proxy server { default_fallback = no } realm vas_realm.cz { } realm LOCAL { } realm NULL { } # ostatni pozadavky smeruj na narodni RADIUS pres radsecproxy realm DEFAULT { type = radius authhost = localhost:11812 secret = vase_heslo nostrip dead_time = 0 }
V souboru attrs
je konfigurace filtrování atributů přijatých přes proxy modul. Atributy uvedené v sekci DEFAULT
nejsou filtrovány. Do této sekce přidáme následující atributy, které zajistí, že VLAN 666 (testovací účty sledovací infrastruktury) nebudou filtrovány. Jiná VLAN ID budou odfiltrována.
Tunnel-Type == VLAN, Tunnel-Private-Group-Id == 666, Tunnel-Medium-Type == IEEE-802
V souboru clients.conf
je potřeba nadefinovat všechna zařízení ověřující se proti FreeRADIUSu, tedy všechny přístupové body i národní RADIUS servery komunikující přes RadSec proxy.
# příklad běžného klienta (AP) client 192.168.240.10 { secret = sdilene_heslo shortname = ap_10 } # připojení z radsecproxy client 127.0.0.1 { secret = radsec shortname = radsecproxy } # sledovací infrastruktura se připojuje přímo ze serveru ermon.cesnet.cz client 195.113.233.246 { secret = sdilene_heslo_ermon shortname = ermon }
Attribut Operator-Name slouží k indentifikaci SP odkud pochází požadavky na autentizaci uživatelů. V souboru /etc/raddb/sites-available/dafault přidejte:
.. authorize { update request { Operator-Name := 1domaci-realm.cz } ..
TODO; Prozatím dokumentace JISC.
Konfigurační soubor users
umožňuje definovat lokální uživatele, blokovat uživatele a realmy, porovnávat a nastavovat atributy u konkrétních uživatelů. My jej použijeme pro vytvoření testovacího účtu a k odmítnutí uživatelů bez nastaveného realmu.
DEFAULT Realm == NULL, Auth-Type := Reject
Pro zajištění vysoké kvality sítě eduroam je každá instituce zapojena do sledovací infrastruktury, proto je nutné vytvořit platný testovací účet. Pomocí testovacího účtu by neměl být umožněn přístup k síti eduroam. To je zajištěno nasměrováním do VLAN ID 666, která na přístupových bodech není definována, tudíž nikam nevede. Do souboru users přidáme:
testuziv Cleartext-Password:= "hlasna_trouba" Tunnel-Type = VLAN, Tunnel-Private-Group-ID = 666, Tunnel-Medium-Type = IEEE-802, Fall-Through = Yes
Zablokovaní lokálního účtu lze úpravou souboru users:
zlobivec Auth-Type := Reject
Zablokování libovolného účtu. Jméno je v tomto případě porovnáváno s ohledem na velikost písmen.
DEFAULT User-Name == "zlobivy_uzivatel@domena.cz", Auth-Type := Reject
Zablokovat celý realm lze úpravou proxy.conf
a users
.
Do souboru proxy.conf přidáme postižený realm např. abc.com:
realm abc.com { }
V souboru users
musíme zakázat definovaný realm v proxy.conf
:
DEFAULT Realm == abc.com, Auth-Type := Reject
K testování využijeme výše zmiňovaný rad_eap_test
.
sh rad_eap_test -H 127.0.0.1 -P 1812 -S radsec -u testuziv@vas_realm.cz -p 'hlasna_trouba' -m WPA-EAP -e PEAP -t 5 access-accept; 1
Pokud je vše v pořádku, vrátí nám klient access-accept. Dále nám klient může vrátit buď timeout (spojení se nezdařilo, neplatné sdílené heslo), nebo access-reject (neplatné uživatelské jméno případně heslo). Zpoždění odpovědi od serveru udává číslo za středníkem (v sekundách).
Napojení na konkrétní LDAP server se může drobně měnit podle použitého software a nastavení.
Je nutné upravit sites-enabled/inner-tunnel
. Soubor sites-enabled/default
netřeba měnit.
V sekci authorize {}
odkomentovat řádek ldap
.
V sekci authenticate {}
odkomentovat:
Auth-Type LDAP { ldap }
Dále v souboru modules/ldap
v sekci ldap
je potřeba správně nastavit:
server = "ldaps://radius.domena.cz" identity = "uid=admin,ou=Special users,dc=domena,dc=cz" # proxy uzivatel password = "heslo" # heslo proxy uzivatele basedn = "ou=People,dc=domena,dc=cz" # kde se maji hledat uzivatele filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" base_filter = "(objectclass=radiusprofile)"
V podsekci tls
je potřeba nastavit CA certifikát pro ověření LDAP serveru:
cacertfile = /etc/ssl/certs/ca_stroj.pem
Dále je nutné specifikovat atribut, ve kterém je uloženo heslo uživatele:
password_attribute = "radiusPassword"
Kromě správného jména/hesla, případně platného osobního certifikátu (EAP-TLS), lze ověřit, zda uživatel patří do správné/špatné skupiny a podle toho se zachovat.
Je-li uživatel členem skupiny, je mu odepřen přístup.
V souboru modules/ldap
upravit:
groupname_attribute = cn groupmembership_filter = "(&(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:Ldap-UserDn}))"
do souboru users přidat:
DEFAULT Ldap-Group == "cn=jmeno_skupiny, ou=Groups, dc=domena, dc=cz", Auth-Type:= Reject
Je-li uživatel členem skupiny, je mu umožněn přístup.
V souboru modules/ldap
upravit:
groupname_attribute = cn groupmembership_filter = "(&(objectClass=GroupOfUniqueNames)(uniqueMember=%{control:Ldap-UserDn}))"
do souboru users
přidat:
DEFAULT Ldap-Group == "cn=jmeno_skupiny, ou=Groups, dc=domena, dc=cz" Fall-Through = no # vsechny ostatni odmitneme DEFAULT Auth-Type:= Reject
groupname_attribute = cn groupmembership_filter = "(&(objectClass=posixGroup)(memberUID=%{User-Name}))"
Změny mezi verzemi 1.x a 2.x jsou příliš velké, proto doporučuji provést čistou instalaci podle tohoto návodu.
Pozor na změnu operátoru ==
na :=
a attributu User-Password
na Cleartext-Password
Dříve:
testuziv User-Password == "hlasna_trouba"
Nyní:
testuziv Cleartext-Password:= "hlasna_trouba"
Spuštění radiusd -X
končí chybou:
rlm_eap: SSL error error:00000000:lib(0):func(0):reason(0) rlm_eap_tls: Error loading randomness rlm_eap: Failed to initialize type tls /opt/radius-2.1.6/etc/raddb/eap.conf[17]: Instantiation failed for module "eap" /opt/radius-2.1.6/etc/raddb/sites-enabled/inner-tunnel[223]: Failed to find module "eap". /opt/radius-2.1.6/etc/raddb/sites-enabled/inner-tunnel[176]: Errors parsing authenticate section. Errors initializing modules
Nemáte vygenerované soubory: /opt/radius-2.1.6/etc/raddb/certs/dh
a /opt/radius-2.1.6/etc/raddb/certs/random
Jak vyřešit?
Spustit radiusd -X
po překladu, vygeneruje testovací CA a zároveň tyto potřebné soubory, nebo se přepněte do adresáře certs a napište příkazy:
make dh make random
CESNET, z. s. p. o.
Generála Píky 26
160 00 Praha 6
info@cesnet.cz
Tel: +420 234 680 222
GSM: +420 602 252 531
support@cesnet.cz