Toto je starší verze dokumentu!
Prozatím je k dispozici konfigurace z FEL ČVUT z 27. února 2005.
K pochopení obsahu tohoto dukumentu byste měli vědět, jak roaming funguje, a také byste měli mít základní představu o RADIUS protokolu.
FreeRadius je k dispozici zdarma jako Open Source software. Je určen primárně pro UNIXové systémy, ale na stránce www.freeradius.net jsou k dispozici i binárky pro MS Windows. V tomto návodu se budu zabývat Linuxovou verzí.
Je dost pravděpodobné, že pro Vaši distribuci jsou připraveny předkompilované balíčky, před jejich použitím si ale zkontrolujte, zda máte k dispozici knihovnu rlm_eap_tls.so, ta je k nezbytná pro ověřování klientů pomocí 802.1x. Např. v unstable Debian v balíku verze 1.1.2-2 tuto knihovnu nemají.
Konfiguraci FreeRadiusu komplikuje architektura tohoto produktu (např. authorizace se řeší před autentizací), velké množství konfiguračních souborů je nepřehledné díky velkému množství komentářů, které často nahrazují dokumentaci. Konfigurační soubory najdeme v adresáři /etc/raddb nebo /etc/freeradius.
Smažte zbytečné soubory: naslist, realms
Teto soubor definuje, jak se FreeRadius bude chovat k jednotlivým realmům. Nejprve jsou nastaveny parametry samotného proxy serveru.
<xterm> proxy server {
synchronous = no retry_delay = 5 retry_count = 2 dead_time = 0 default_fallback = yes post_proxy_authorize = no
} </xterm>
Někteří uživatelé se přihlašují jen pomocí uživatelského jména bez realmu. To jim sice „doma“ může fungovat, ale pokud by chtěli využít roamingu, budou muset měnit konfiguraci svého počítače, na což pravděpodobně nebudou připraveni. Proto důrazně doporučuji uživatelům znemožnit přihlašování bez realmu. K odchycení Access-Requestů bez realmu slouží definice realm NULL { … }
. Dotazy bez realmu se potom zakáží v souboru users
.
<xterm> realm NULL {
}
</xterm>
Následuje definice lokálních (domácích realmů). Nahraďte example.com
Vaším realmem. V případě, že Váš server má obsluhovat několik realmů, tak tuto sekci několikrát zopakujte.
<xterm> realm example.com {
type = radius authhost = LOCAL accthost = LOCAL
} </xterm>
Definice realm DEFAULT { … }
zajištují předání Access-Request paketů návštěvníků na národní RADIUS servery. Nahraďte xxx u parametru secret
hodnotami, které Vám byly přiděleny.
<xterm> realm DEFAULT {
type = radius authhost = radius1.eduroam.cz:1812 accthost = radius1.eduroam.cz:1813 secret = **xxx** nostrip
} </xterm>
V tomto souboru definujete klienty, kteří se mohou k Vašemu RADIUSu připojit.
<xterm> client ap1.example.com {
secret = **secret4ap1** shortname = **ap1**
} . . client apN.example.com {
secret = **secret4apN** shortname = **apN**
} </xterm>
V okamžiku, kdy Vaši uživatelé využijí roamingu, stanou se klienty NREN RADIUS serverů.
<xterm> client radius1.eduroam.cz {
secret = **xxx** shortname = radius1edu
} </xterm>
Dalším speciálním klientem je monitoring.
<xterm> client ermon.cesnet.cz {
secret = **xxx** shortname = ermon
} </xterm>
Tento soubor definuje staticky konfigurované uživatele. Dále např. specifikuje jak zacházet s jednotlivými realmy. Obecně mění hodnoty jednotlivých atributů na základě vstupních hodnot jiných atributů, nebo svých vlastních. Nejprve odmítneme uživatelé bez realmu. <xterm> DEFAULT Realm == NULL, Auth-Type := Reject </xterm>
Tohle by mělo zabezpečit, aby se v účtování objevilo skutečné uživatelské jméno, a ne třeba anonymous@myabc.com <xterm> DEFAULT Freeradius-Proxied-To == 127.0.0.1
User-Name = `%{User-Name}`, Fall-Through = Yes
</xterm>
Nyní definujeme staticky konfigurované uživatele. Můžou to být testovací uživatelé, nebo třeba speciální konta pro jednorázové akce, např. konference. <xterm> user1 User-Password == „password1“ user2 User-Password == „password2“ </xterm>
Testovací účet je směrován do neexistující VLAN, aby se dal ověřit bez možnosti dostat se do sítě. Pokud by měl být konfigurován staticky, vyměníme
Auth-Type = Local
za User-Password == „password“
. Obecně by ale měl testovací učet používat stejný typ autentizace jako reálné účty uživatelů,
aby se otestovaly všechny články AA řetězce.
<xterm>
eduroam-test Auth-Type = Local
Tunnel-Type = VLAN, Tunnel-Private-Group-ID = 666, Tunnel-Medium-Type = IEEE-802, Fall-Through = Yes
</xterm>
Uživatelé, kteří prošli předchozímy filtry, pokračují do dalšího zpracování <xterm> DEFAULT Auth-Type = Local
Fall-Through = 1
</xterm>
Tento soubor definuje zpracování paketů vrátivších přes proxy z cizích organizací. Do paketu posílaného zpět přístupovému bodu projdou pouze atributy vyjmenované v tomto souboru, popřípadě atributy s určitou hodnotou. Některé cizí organizace přidávají do Access-Accept paketu svého uživatele, který se chce připojit do naší sítě, atribut Tunnel-Private-Group-Id s hodnotou např. 200. Ten určuje, do které VLAN se má uživatel dostat v domácí síti. My ale máme pouze VLAN 100, proto povolujeme jen tuto hodnotu a dále 666 pro testovací uživatele. Atribut s jinou hodnotou se „zahodí“ a AP potom uživateli přiřadí implicitní VLAN. <xterm> DEFAULT
User-Name =* ANY, Called-Station-Id =* ANY, Calling-Station-Id =* ANY, Message-Authenticator =* ANY, EAP-Message =* ANY, NAS-Port-Type =* ANY, NAS-Port =* ANY, Service-Type =* ANY, NAS-IP-Address =* ANY, NAS-Identifier =* ANY, Proxy-State =* ANY, Framed-MTU >= 576, Framed-Filter-ID =* ANY, Reply-Message =* ANY, Proxy-State =* ANY, Session-Timeout <= 28800, Idle-Timeout <= 600, Port-Limit <= 2, Tunnel-Type == VLAN, Tunnel-Private-Group-Id == 100, Tunnel-Private-Group-Id == 666, Tunnel-Medium-Type == IEEE-802, MS-MPPE-Send-Key =* ANY, MS-MPPE-Recv-Key =* ANY, cisco-avpair =* ANY, WISPr-Location-ID =* ANY, Cisco-NAS-Port =* ANY, State =* ANY
</xterm>
Jedná se o hlavní konfigurační soubor.
Konfigurace jednotlivých modulů <xterm> modules {
# PAP module to authenticate users based on their stored password pap { encryption_scheme = crypt }
# Extensible Authentication Protocol $INCLUDE ${confdir}/eap.conf
# Microsoft CHAP authentication mschap { authtype = MS-CHAP } # Lightweight Directory Access Protocol (LDAP) ldap { server = "ldapserver.feld.cvut.cz" port = 636 identity = "uid=radius,ou=Special Users,o=feld.cvut.cz" password = ***************** basedn = "ou=People,o=feld.cvut.cz" filter = "(uid=%{Stripped-User-Name:-%{User-Name}})" start_tls = no dictionary_mapping = ${raddbdir}/ldap.attrmap
ldap_connections_number = 5 password_attribute = mobilitypassword timeout = 8 timelimit = 3 net_timeout = 1 }
realm suffix { format = suffix delimiter = "@" ignore_default = no ignore_null = no }
preprocess { huntgroups = ${confdir}/huntgroups hints = ${confdir}/hints with_ascend_hack = no ascend_channels_per_line = 23 with_ntdomain_hack = yes with_specialix_jetstream_hack = no with_cisco_vsa_hack = no }
files { usersfile = ${confdir}/users acctusersfile = ${confdir}/acct_users compat = no }
detail { detailfile = ${radacctdir}/%{Client-IP-Address}/detail-%Y%m%d detailperm = 0600 }
acct_unique { key = "User-Name, Acct-Session-Id, NAS-IP-Address, Client-IP-Address, NAS-Port" }
# $INCLUDE ${confdir}/sql.conf
} </xterm>
Autorizace <xterm> authorize {
preprocess mschap suffix eap files ldap
} </xterm>
Autentizace <xterm> authenticate {
Auth-Type PAP { pap } Auth-Type MS-CHAP { mschap } Auth-Type LDAP { ldap } eap
} </xterm>
<xterm> preacct {
preprocess acct_unique files
}
</xterm>
<xterm> accounting {
detail
# sql }
</xterm> <xterm> post-proxy {
attr_filter eap
} </xterm>
V souboru jsou uvedeny povolené metody EAP. Modul tls
musí být zkonfigurován, i když TLS metodu nepoužíváme. Tento modul totiž využívají
moduly peap
a ttls
.
<xterm>
eap {
default_eap_type = peap
timer_expire = 60
ignore_unknown_eap_types = no
cisco_accounting_username_bug = no
md5 {
}
leap {
}
tls {
private_key_file = /etc/ssl/private/radius.pem.key certificate_file = /etc/ssl/certs/radius.pem.crt CA_file = /etc/ssl/certs/cacert.pem dh_file = ${raddbdir}/certs/dh random_file = ${raddbdir}/certs/random fragment_size = 1024 include_length = yes
} peap {
default_eap_type = mschapv2 use_tunneled_reply = yes
} ttls {
default_eap_type = md5 use_tunneled_reply = yes
} mschapv2 { } }
</xterm>
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