Technické podmínky připojení sítě k eduRoam.cz
Technická zpráva CESNETu
číslo 31/2004
k dispozici též ve formátech PDF,
PostScript a
XML.
Jan Tomášek
15. prosinec 2004
1 Úvod
Tato technická zpráva popisuje technické a administrativní požadavky kladené na síť organizace připojované k eduRoam.cz. Zpráva je také uveřejněna na portálu eduRoam.cz kde bude v budoucnu aktualizována podle toho jak se budou vyvíjet požadavky na roamingovou infrastrukturu. Adresa on-line verze je: http://www.eduroam.cz/spravce/pripojovani.html.
Od 26. 05. 2004 je CESNET, z.s.p.o. správcem CZ domény v rámci eduRoam hierarchie RADIUS serverů. CESNET provozuje dva národní RADIUS servery: radius1.eduroam.cz a radius2.eduroam.cz. První z nich je provozován na dedikovaném HW umístěném v sídle CESNETu v Praze, druhý sdílí HW s ldap3 a je hostován na VŠB-TUO. Oba RADIUS servery jsou na sobě nezávislé a jejich umístěním do vzdálených lokalit je zaručena vysoká spolehlivost poskytovaných služeb.
Požadavky kladené servery připojovaných organizací vychází z doporučení Terena TF-MOBILITY, v některých oblastech byly upraveny a rozšířeny s ohledem na vyšší bezpečnost a dostupnost poskytovaných služeb. Jedná se především o použití IPSec v transportním režimu pro šifrování veškeré komunikace mezi RADIUS servery.
Samotné připojování RADIUS serveru je dvoufázové. V první fázi je připraveno a otestováno spojení pomocí IPSec, v rámci druhé fáze je RADIUS server připojované organizace zařazen do eduRoam struktury RADIUS serverů a monitorovacího systému.
1.1 Poznámka k popisovanému technickému řešení
Popisované technické řešení předpokládá použití Linuxu. Spolupráce s jinými kompatibilními platformami je možná, ale správce připojovaného RADIUS serveru musí být schopen zajistit kompatibilitu s námi použitým řešením, případně být dostatečně odborně na výši, aby byl schopen objasnit nutné změny z naší strany.
V příkladech konfigurací bude jako lokální, tj. Váš systém, použito jména radius1.cesnet.cz (195.113.144.226). Pro Vaše použití bude nutné přepsat toto jméno jménem Vašeho RADIUS serveru. V příkladech uvádím cesty ke konfiguracím a startovacím skriptům tak, jak je zvykem na Debian GNU/Linux. Jestliže používáte jinou distribuci Linuxu, tak si vše upravte podle jejích zvyklostí.
2 Administrativní požadavky
2.1 Kontakty na administrátory
Ke každému připojenému RADIUS serveru musí být k dispozici alespoň jedna kontaktní osoba. Z důvodu zajištění zástupnosti by bylo vhodné, aby kontaktů bylo více. Tito uvedení správci by měli být schopni do jednoho pracovního dne zareagovat na požadavky správců národních RADIUS serverů tak, aby nebyla nijak ohrožena funkce žádné části infrastruktury.
Kontakty budou spravovány v databázi CAAS, na niž bude navázána databáze připojených RADIUS serverů a monitorovací služby. Alespoň jeden ze správců by měl mít právní vztah k CESNETu, mohl by se pak zaručit za další správce (tzv. sponzoring), aby mohli mít záznam v CAAS a měli tak přístup k monitorovací službě.
2.2 Certifikát vydaný CESNET CA pro připojovaný server
Připojovaný RADIUS server musí mít pro navázání IPSec spojení k dispozici certifikát vydaný CESNET CA. Díky politice vydávání certifikátů uplatňované CESNET CA bude dostatečným způsobem ověřena identita správce, což je nezbytné v prostředí eduRoam, kde je důvěra mezi propojenými institucemi základním předpokladem spolupráce.
V případě, že RADIUS server bude používat SSL certifikát pro účely prokazování své identity a ověřování identity uživatelů protokoly EAP-TLS, EAP-TTLS, může být jeho certifikát vydán jakoukoliv certifikační autoritou. Je také možné použít služeb CESNET CA, ale v tom případě je nutné pro tento účel vydat zvláštní certifikát.
2.3 Trvale funkční testovací účet
Poskytnutí trvale funkčního testovacího účtu pro účely monitorování infrastruktury je nezbytné s ohledem na dosažení maximální kvality služeb. Vyvíjená monitorovací služba bude popsána v samostatném dokumentu. Jejím cílem bude zajištění monitorování na takové úrovni, aby bylo zajištěno fungování mobilního přístupu k síti pro každého oprávněného uživatele z kterékoliv připojené instituce, a to kdekoliv. Proto je nutné, aby monitorovací systém měl k dispozici platný uživatelský účet. RADIUS server musí tento testovací účet označit AV-párem XXX (nebyl dosud určen). Přístupové body všech propojených institucí nesmí ve vlastním zájmu umožnit takto označeným uživatelům práci na síti, měli by být směrováni do "slepé" VLAN.
3 Fáze 1. - IPSec spojení
3.1 Úvod
V rámci přípravy jsme otestovali IPSec tunnel [1], OpenBSD's isakmpd [2] a IPsec-Tools (KAME's IPsec utilities) [3a][3b]. Z těchto tří implementací se jako nejvhodnější jeví IPsec-Tools (daemon racoon). Na RADIUS serverech provozovaných CESNETem je použit právě IPsec-Tools v konfiguraci popsané dále. Těm, kteří ještě žádné IPSec řešení nepoužívají, doporučujeme použití námi popisovaného řešení. Nebráníme se spolupráci s těmi, kteří používají řešení jiné, ale v těchto případech je třeba počítat s delší dobou nutnou na odladění a otestování specifické konfigurace.
IPSec tunnel vyžaduje úpravu zdrojového kódu kernelu a neumožňuje použití transportního režimu. Má implementováno pouze tunelování, což by přineslo zbytečné komplikace při přidělování IP adres tunelům, proto jsme se rozhodli ho nepoužít.
OpenBSD's isakmpd transportní režim podporuje, ale má horší podporu pro práci s certifikáty. Především se nám nepodařilo najít takovou konfiguraci, při které by byl schopen navázat šifrované spojení bez vymazání IPSec politik. V okamžiku restartu jednoho z konců spojení je nutné IPSec politiky vymazat na obou koncích, což je velmi těžko realizovatelné a mohlo byt vést až k výpadku celé národní eduRoam RADIUS hierarchie.
3.2 Postup
IPSec-Tools [3a] je preferovaný software pro připojení
k národním RADIUS serverům. Pro funkci IPSec je nezbytná podpora v
kernelu, ta je k dispozici v Linuxových kernelech řady 2.5.47+,
2.6.1+. Je také možné, že požadovaná funkcionalita je k dispozici v
některých distribučních kernelech, např. na Debian/Unstable je k
dispozici od verze kernelu 2.4.25. Klíčové je, aby byly zapnuty
CONFIG_INET_AH a CONFIG_INET_ESP v konfiguraci
kernelu.
Vytvořte soubor /etc/ipsec-policies.conf s tímto obsahem:
SETKEY="/usr/local/sbin/setkey" LOCAL="radius1.cesnet.cz" PEERS="radius1.eduroam.cz radius2.eduroam.cz"a spusťte
ipsec-policies start (viz. příloha). Po spuštění by se
mělo zobrazit:
Setting ipsec policies: radius1.cesnet.cz <-> radius1.eduroam.cz radius1.cesnet.cz <-> radius2.eduroam.czPro ověření, že je opravdu vše v pořádku, si můžete ještě zkontrolovat Security Policy Database spuštěním
setkey -DP. Získáte následující
výstup:
195.113.187.22[any] 195.113.144.226[any] any
in ipsec
esp/transport//require
ah/transport//require
created: Aug 26 15:31:42 2004 lastused:
lifetime: 0(s) validtime: 0(s)
spid=1032 seq=3 pid=5559
refcnt=1
195.113.157.14[any] 195.113.144.226[any] any
in ipsec
esp/transport//require
ah/transport//require
created: Aug 26 15:31:43 2004 lastused:
lifetime: 0(s) validtime: 0(s)
spid=1048 seq=2 pid=5559
refcnt=1
195.113.144.226[any] 195.113.187.22[any] any
out ipsec
esp/transport//require
ah/transport//require
created: Aug 26 15:31:42 2004 lastused:
lifetime: 0(s) validtime: 0(s)
spid=1025 seq=1 pid=5559
refcnt=1
195.113.144.226[any] 195.113.157.14[any] any
out ipsec
esp/transport//require
ah/transport//require
created: Aug 26 15:31:43 2004 lastused:
lifetime: 0(s) validtime: 0(s)
spid=1041 seq=0 pid=5559
refcnt=1
Jestliže všechno vypadá v pořádku, zkuste pingnout na oba národní
RADIUSy (radius1/radius2.eduroam.cz). Ping by neměl
projít, protože jsou již nakonfigurovány IPSec politiky. Kernel tedy
už ví, že musí s národními RADIUSy komunikovat šifrovaně, ale ještě
neběží racoon, který zajistí výměnu Security Associations, čímž
umožní zahájení šifrované komunikace.
V tento okamžik se obraťte na správce národních RADIUSů, aby upravil konfiguraci FW a nakonfiguroval systém pro komunikaci pomocí IPSec s Vašimi systémy.
Pozor! radius2.eduroam.cz sdílí HW s dalšími službami! Je na něm provozována replika LDAP databáze ldap3.cesnet.cz a TACACS+ server. Jestliže některou ze služeb tohoto systému využíváte, musíte počítat s výpadkem do doby, než bude IPSec nakonfigurován na obou koncích.
Jakmile budete mít potvrzeno, že konfigurace národních RADIUS
serverů je připravena, můžete zkusit spustit racoon
daemona. Příklad konfigurace je v souboru racoon.conf v
příloze, skript pro spuštění se jmenuje racoon a je umístěn
tamtéž. Po spuštění daemona zkuste spustit ping
radius1.eduroam.cz a pomocí příkazu setkey -D si můžete
ověřovat, jak racoon sestavuje Security Associations.
Jestliže se SA úspěšně sestaví a ping začne procházet je první první fáze ukončena.
3.3 Umístění SSL certifikátů
Navrhovaná konfigurace uložení certifikátů předpokládá, že v
adresáři /etc/ssl budete mít symbolické linky na samotné
certifikáty. Jméno linku musí odpovídat otisku X509 certifikátu, na který
ukazuje. Linky vytvořte takto:
radius1:/etc/ssl# ln -s certs/CESNET-CA.pem \ `openssl x509 -in certs/CESNET-CA.pem -noout -hash`.0 radius1:/etc/ssl# ln -s certs/radius1.cesnet.cz.pem \ `openssl x509 -in certs/radius1.cesnet.cz.pem -noout -hash`.0Na tom samém místě očekává racoon umístění revokačního listu. Jméno souboru musí odpovídat linku odkazujícímu na
certs/CESNET-CA.pem, jen přípona souboru bude
.r0. Doporučuji, abyste si svůj systém nakonfigurovali tak,
aby revokační list stahoval automaticky každý den. Můžete použít třeba
tento příkaz:
/usr/bin/wget http://www.cesnet.cz/pki/crl/cca.crl -q -O - |\ openssl crl -inform DER -outform PEM -out /etc/ssl/ed99a497.r0
3.4 Oživování spojení
SA jsou sestavovány až na základě požadavku a jejich doba platnosti je omezená. Za optimálních podmínek trvá sestavení SA cca 5sec. To je příliš dlouhá doba, která by vedla k tomu, že by RADIUS servery vzdávaly pokusy o ověření uživatele z důvodu jejich vnitřního timeoutu. Uživatel by pak musel pokus o ověření zbytečně opakovat.
Aby se výše uvedenému předešlo, tak pravidelně oba národní RADIUS
servery pingají na připojené servery. Získaná data jsou použita také
jako základní monitoring dostupnosti služeb a statistiky z nich
vypočtené jsou každý den rozesílány správcům. K testování se používá
skript eduRoam-ping.sh, který je k dispozici v
přílohách. Skript eduRoam-ping.pl slouží ke zpracování
získaných dat. Správci připojených serverů je mohou použít pro vlastní
testování dostupnosti.
3.5 Spolupráce s jinými platformami
Je otestováno propojení s MS Windows 2003. Máme přislíben komplexní návod pro tuto platformu, měl by být k dispozici na začátku roku 2005.
3.6 Použití kombinace ESP+AH
IPSec provozovaný na národních RADIUS serverech používá protokoly ESP a AH. Poznatky, které jsme učinili v poslední době, ukazují, že tato kombinace může za určitých podmínek způsobit téměř nefunkčnost propojení. Pracovní teorie je, že protokol AH způsobuje nadbytečný overhead a některé sítové prvky po cestě se nemusí s tak velkými pakety vyrovnat a zahazují je. Díky tomu je spojení velmi nestabilní.
Ve spolupráci se ZČU, která na problém upozornila, testujeme stabilitu spojení jen s protokolem ESP. Je pravděpodobné, že do budoucna bude používán IPSec v transportním režimu jen s protokolem ESP všude, kde to bude možné.
4 Fáze 2. - Propojení RADIUS serverů
4.1 Úvod
Při nasazování tohoto projektu jsme vyzkoušeli Radiator [4] a FreeRadius [5]. Ani jeden z nich nevyhovoval plně našim požadavkům, a to především s ohledem možnosti konfigurace modulu pro ověřování uživatelských účtů v LDAP databázi. S ohledem na nutnost úprav se nám zdálo vhodnější použít FreeRadius, protože publikace výsledků naší práce by byla snazší. A nemuseli bychom řešit konflikt s proprietární licencí.
Na základě výše uvedeného jsme nasadili FreeRadius do testovacího provozu a začali testovat další části řetězce. Zapojili jsme naše RADIUS servery do top level struktury. Při testování bezdrátového připojení s různými zařízeními jsme začali narážet na omezení FreeRadiusu (nedostatečné množství podporovaných protokolů), také poměrně často docházelo k výpadkům služby z důvodu chyb v kódu FreeRadiusu. To vše ve spojení s nedostatkem dokumentace a značnou nepřehledností konfiguračních souborů vedlo k tomu, že jsme se rozhodli znovu vrátit na začátek a ještě jednou otestovat Radiator, jestli by lépe nevyhověl našim potřebám.
Domníváme se, že přechod na Radiator se nám vyplatil, i když cena
není nejnižší (licence stojí cca USD1500 a každý další rok případně
cca USD350 za přístup k novým verzím). Dokumentace je srozumitelná a
dostatečná, podpora ve veřejné emailové konferenci
radiator@open.com.au je velmi promptní a otázky nezůstávají
nezodpovězeny, vždy zareaguje někdo z OSC, k dispozici je velké
množství příkladů konfigurace. Konfigurace je ve srovnání s
FreeRadiusem mnohem přehlednější a srozumitelnější. Radiator je napsán
v Perlu, což umožňuje uživatelům psát vlastní kód, který může upravit
chování téměř jakékoli části Radiatoru. Doporučujeme zvážit nasazení
Radiatoru pro Vaši implementaci eduRoam infrastruktury. Dále je
k dispozici příklad konfigurace jak Radiatoru tak FreeRadiusu.
4.2 Obecný postup propojení
Hierarchie Radius serverů je popsána v dokumentu Popis roamingu a mobility v rámci české NREN. Samotné propojení RADIUS serverů je možné, jestliže máte splněnou první fázi - správce národních RADIUS serverů Vám vydal klíč pro vzájemnou komunikaci RADIUS serverů. Pro každý server je použit jiný klíč, pro komunikaci mezi národním a Vaším RADIUS serverem je v obou směrech použit ten samý klíč.
U obou popisovaných serverů je propojení konfigurováno na dvou místech. Na jednom místě budete konfigurovat, jak se má Váš RADIUS server zachovat, má-li zpracovat dotaz na ověření cizího uživatele. Takový dotaz je nutno předat národním serverům. Pro úspěšné předání potřebujete klíč, kterým je šifrována komunikace v tomto směru. V tomto směru Váš server vystupuje jako klient národních RADIUS serverů. Až Vašemu serveru bude některý z národních serverů doručovat odpověď na jeho dotaz, bude naopak on vystupovat jako klient Vašeho serveru. Toto je druhé místo, kde je nutné uvést přidělený klíč.
Váš server nesmí předávat národním RADIUS serverům dotazy bez realmu. Rozhodnutí, jak budete zacházet s takovými dotazy, záleží na Vašich preferencích. Jestliže se ale rozhodnete předpokládat, že takový uživatel je Váš lokální, musíte počítat s problémy takových uživatelů v jiných než domácích sítích. Doporučujeme na dotazy bez realmu odpovídat Access-Rejected.
Odpovědi které Váš RADIUS dostává od národního serveru musí náležitě zpracovat:
- Některé připojené organizace posílají s odpovědí AV páry
určující, do jaké VLAN má být uživatel umístěn. Musíte zajistit
odstranění těchto AV párů, aby nedošlo k průnikům hostů do těch oblastí
Vaší sítě, kam je nechcete pustit. Jedná se především o:
Tunnel-Private-Group-ID,Tunnel-TypeaTunnel-Medium-Type. - Odpověď obsahující AV pár XXX musí zpracovat tak, aby Vaše přístupové body neumožnily s tímto účtem přistupovat k síťovým službám. Je však nutné, aby nechal u této odpovědi z proxy Access-Accepted, byl-li dotaz platný. Toto je nutné pro testování a monitoring národní struktury RADIUS serverů.
4.3 Radiator
Konfigurace uvedená v příloze radiator/radius.cfg je provozována na RADIUS serveru radius1.cesnet.cz. V příloze
radiator/xxx.pl je příklad ošetření testovacích účtů. Zatím není rozhodnuto, jaký AV pár XXX budeme používat.
Pro ověřování uživatelů používáme LDAP server. Záznamy uživatelů
jsou umístěny v ou=People,dc=cesnet,dc=cz a speciální účty
(např. monitoring) jsou umístěny v ou=Special
users,dc=cesnet,dc=cz. S ohledem na eduRoam-simple a fakt, že
nadřazená top level struktura RADIUS serverů zatím
nekomunikuje pomocí IPSec, používají naši uživatelé jiná hesla pro
eduRoaming než pro práci vyžadující vyšší úroveň zabezpečení. Tato
hesla jsou uložena v atributu radiusPassword a RADIUS server je smí z
databáze číst. U uživatele může být atribut radiusTunnelPrivateGroupID,
který identifikuje, do jaké VLAN má být uživatel umístěn. Toto je
používáno výhradně jako metoda označení testovacích uživatelů.
Tato konfigurace je plně funkční pro tyto ověřovací mechanizmy:
- LEAP - Ověřeno s Palmem a MS-Windows XP+Intel Supplicant
- EAP-TTLS-PAP - Ověřeno XSupplicantem na Linuxu a MS-Windows XP+Intel Supplicant
- EAP-TTLS-CHAP - Ověřeno XSupplicantem na Linuxu a MS-Windows XP+Intel Supplicant
- EAP-TTLS-MSCHAP - Ověřeno XSupplicantem na Linuxu a MS-Windows XP+Intel Supplicant
- PEAP-MSCHAPv2 - Ověřeno XSupplicantem na Linuxu a MS-Windows XP+Intel Supplicant
Konfigurace je funkční také pro EAP-MD5, tento mechanizmus ale nepodporuje dynamickou výměnu WEP klíčů a nejsou v naší lokální bezdrátové síti podporovány.
EAP-TTLS-MSCHAPv2 není zatím podporován z důvodů drobného problému v implementaci Radiatoru.
EAP-TLS nebyl ještě testován, ale bude vyžadovat úpravy Radiatoru, aby byly správně dohledávány a porovnávány uživatelské certifikáty.
4.4 FreeRadius
FreeRadius je úspěšně provozován na FEL-ČVUT, TUL a dalších univerzitách. Příklad funkční konfigurace je k dispozici v přílohách.
5 Přílohy
5.1 Skript ipsec-policies
Skript slouží k nastavení/odstranění IPSec politik.
#!/bin/bash
#Version: 2004.12.14
. /etc/ipsec-policies.conf
setPolicy () {
echo "spdadd $1 $2 any -P out
ipsec esp/transport//require
ah/transport//require;" | $SETKEY -c
echo "spdadd $2 $1 any -P in
ipsec esp/transport//require
ah/transport//require;" | $SETKEY -c
}
start () {
echo "Setting ipsec policies: "
for PEER in $PEERS
do
echo " $LOCAL <-> $PEER";
setPolicy $LOCAL $PEER
done
}
stop () {
echo "Clearing ipsec policies: unsuported."
};
force-stop () {
$SETKEY -F; $SETKEY -FP
}
case "$1" in
start)
force-stop
start
;;
stop)
stop
;;
force-stop)
force-stop
;;
restart)
force-stop
start
;;
*)
echo "Usage: " `basename $0` "{start|stop|restart}"
esac
5.2 Příklad konfigurace pro racoon
Konfigurace pro racoon:
#Version: 2004.12.14
path certificate "/etc/ssl";
remote anonymous {
exchange_mode main;
my_identifier asn1dn;
peers_identifier asn1dn;
certificate_type x509 "certs/ipsec_radius1.cesnet.cz.crt.pem"
"private/ipsec_radius1.cesnet.cz.key.pem";
proposal {
encryption_algorithm 3des;
hash_algorithm sha1;
authentication_method rsasig;
dh_group 2;
}
proposal {
encryption_algorithm 3des;
hash_algorithm md5;
authentication_method rsasig ;
dh_group 2;
}
proposal_check obey;
}
sainfo anonymous
{
pfs_group 1;
lifetime time 30 min;
encryption_algorithm 3des ;
authentication_algorithm hmac_sha1, hmac_md5;
compression_algorithm deflate ;
}
5.3 Skript racoon
Skript slouží nastartování/zastavení daemona racoon zodpovědného za výměnu
SA.:
#!/bin/bash
#Version: 2004.12.14
DAEMON="/usr/sbin/racoon"
#OPTIONS="-v -d -4 -f /etc/racoon.conf"
OPTIONS="-4 -f /etc/racoon.conf"
start () {
echo -n "Starting ipsec daemon: "
if /sbin/start-stop-daemon -start -exec $DAEMON - $OPTIONS
then
echo "racoon.";
else
echo "" >/dev/null
fi
};
stop () {
echo -n "Stoping ipsec daemon: racoon"
E=0;
while test 30 -ge $E
do
if ps auxww |grep -v grep| grep $DAEMON >/dev/null; then
if test $E -ge 20
then
/sbin/start-stop-daemon -stop -signal 9 -exec $DAEMON
echo -n "!"
else
/sbin/start-stop-daemon -stop -exec $DAEMON
echo -n "."
fi
if test $E -ge 30; then
echo ". FAILED."
else
sleep 1
fi
E=$[E+1];
else
E=1000;
echo " stoped."
fi
done
};
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
*)
echo "Usage: " `basename $0` "{start|stop|restart}"
esac
5.4 Příklad konfigurace pro Radiator
Ukázka konfigurace Radiatoru, tak jak je použita na radius1.cesnet.cz.
#Version: 14.12.2004
#Foreground
#LogStdout
#Trace 4
LogDir /var/log/radiator
DbDir /usr/share/radiator
<AuthLog SYSLOG>
Identifier authlogger
Facility local7
LogSuccess 1
LogFailure 1
SuccessFormat %U:%P:OK
FailureFormat %U:%P:FAIL
</AuthLog>
<Log SYSLOG>
Facility local7
LogIdent radiator
Trace 4
</Log>
<Log FILE>
Filename /var/log/radiator-file
LogIdent radiator-file
Trace 4
</Log>
AuthPort 1645,1812
AcctPort 1646,1813
<Client localhost>
Secret mysecret
DupInterval 0
</Client>
<Client DEFAULT>
Secret some-secret
</Client>
# - Definition of local authentication -
<AuthBy LDAP2>
Identifier CheckLDAP
# Strip realm
RewriteUsername s/^(.*?)\@.*$/$1/
# Convert user name to lowercase
RewriteUsername tr/A-Z/a-z/
Host localhost
AuthDN uid=rad1,ou=Special users,dc=cesnet,dc=cz
AuthPassword password-for-rad1
BaseDN dc=cesnet,dc=cz
UsernameAttr uid
PasswordAttr radiusPassword
AuthAttrDef radiusTunnelPrivateGroupID,
Tunnel-Private-Group-ID, reply
EAPType PEAP,TTLS,TLS,MSCHAP-V2,MD5,
MD5-Challenge,LEAP
EAPTLS_CAFile
/etc/ssl/certs/trusted-CA-list.crt
EAPTLS_CertificateFile
/etc/ssl/certs/radius_radius1.eduroam.cz.crt.pem
EAPTLS_PrivateKeyFile
/etc/ssl/private/radius_radius1.eduroam.cz.key.pem
EAPTLS_CertificateType PEM
EAPTLS_MaxFragmentSize 1000
EAPTLS_CRLCheck
EAPTLS_CRLFile /etc/ssl/ed99a497.r0
AutoMPPEKeys
SSLeayTrace 0
AllowInReply Tunnel-Private-Group-ID
AddToReplyIfNotExist Tunnel-Private-Group-ID=1:100
AddToReply Tunnel-Type=1:VLAN,\
Tunnel-Medium-Type=1:Ether_802
</AuthBy>
# - Local realms -
<Client radius1.eduroam.cz>
Secret password-for-rad1cesnet-rad1eduroam
</Client>
<Client ldap3.cesnet.cz> # radius2.eduroam.cz
Secret password-for-rad1cesnet-rad1eduroam
</Client>
<Handler Realm=/^cesnet\.cz$/>
# Strip realm
RewriteUsername s/^(.*?)\@.*$/$1/
# Convert user name to lowercase
RewriteUsername tr/A-Z/a-z/
AuthBy CheckLDAP
AuthLog authlogger
</Handler>
<Handler TunnelledByTTLS=1>
AuthBy CheckLDAP
AuthLog authlogger
</Handler>
<Handler TunnelledByPEAP=1>
AuthBy CheckLDAP
AuthLog authlogger
</Handler>
# ^^^^^^^^^^^^^
# - NULL realmy nas nezajimaji takze taky zahazujeme -
<Handler Realm=/^$/>
<AuthBy FILE>
Filename /dev/null
</AuthBy>
</Handler>
# ^^^^^^^^^^^^^
# - A vechno co neni nase posilame na narodni radiusy -
<Handler>
<AuthBy RADIUS>
<Host radius1.eduroam.cz>
AuthPort 1812
AcctPort 1813
Secret password-for-rad1cesnet-rad1eduroam
</Host>
<Host radius2.eduroam.cz>
AuthPort 1812
AcctPort 1813
Secret password-for-rad1cesnet-rad1eduroam
</Host>
# Zpracovani XXX AV paru
ReplyHook file:"/etc/radiator/xxx.pl"
</AuthBy>
AllowInReply Tunnel-Private-Group-ID
AddToReplyIfNotExist Tunnel-Private-Group-ID=1:100
AddToReply Tunnel-Type=1:VLAN,\
Tunnel-Medium-Type=1:Ether_802
</Handler>
# ^^^^^^^^^^^^^
Skript xxx.pl manipulující s AV páry u dopovědí z proxy serverů:
use Data::Dumper;
# V tenhle okamzik nepouzivame zadny AV par XXX takze je vse opreno
# o hodnotu Tunnel-Private-Group-ID to se v budoucnu zmeni!
sub {
my $replyFromProxy = ${$_[0]};
my $replyToNAS = ${$_[1]};
my $originalRequest = ${$_[2]};
my $sentToProxy = ${$_[3]};
my $host = $_[4];
my $testAccountID = 'Tunnel-Private-Group-ID';
my $testAccountIDValue = '1:666';
#&main::log($main::LOG_DEBUG,
# ">>>> I was here <<<<");
my $code = $replyFromProxy->code;
if ($code eq 'Access-Accept') {
my $attrVal = $replyFromProxy->get_attr($testAccountID);
if ($attrVal eq $testAccountIDValue) {
&main::log($main::LOG_DEBUG,
"This is a testing account ($testAccountID=".
"$attrVal == $testAccountIDValue)");
} else {
&main::log($main::LOG_DEBUG,
"This is NOT a testing account ($testAccountID=".
"$attrVal != $testAccountIDValue) => replacing ".
"$testAccountID with proper local value" );
$replyToNAS->delete_attr($testAccountIDValue);
};
} else {
&main::log($main::LOG_DEBUG,
">>>> Too bad: $code <<<<");
};
return ;
}
5.5 Skript eduRoam-ping.sh
Skript slouží k oživování všech definovaných IPSec tunelů.
#!/bin/bash #Version: 2004.12.14 test -f /var/lock/eduRoam-ping && exit 0; touch /var/lock/eduRoam-ping /usr/sbin/setkey -DP |grep ^[0-9] |tr " " "\n" |\ grep -v ^any| grep -v 0\.0\.0\. | sed "s/\[any\]//" | sort -u |\ while read IP do DATE=`date`; PING=`ping -s 512 -c 5 -q $IP 2>/dev/null |grep transmitted` echo "$DATE $IP $PING" >>/var/log/eduRoam-ping.log; done rm /var/lock/eduRoam-ping
5.6 Skript eduRoam-ping.pl
Skript slouží vyhodnocování dostupnosti IPSec spojení. Zpracovává data získaná skriptem eduRoam-ping.sh, je k dispozici on-line na adrese: http://www.eduroam.cz/spravce/pripojovani-prilohy/eduRoam-ping.pl
5.7 Příklad konfigurace FreeRadiusu
Příklad vychází z konfigurace provozované na FEL-ČVUT. Za
poskytnutí děkujeme Jirkovi Cejpovi. Konfigurace neřeší
odstraňování/přepisování AV párů Tunnel-Private-Group-ID,
Tunnel-Type a Tunnel-Medium-Type. Je k dispozici ke
stažení z portálu eduRoam.cz: http://www.eduroam.cz/spravce/pripojovani-prilohy/freeradius-2004.12.14.tar.bz2
Použitá literatura
| [1] | IPSec-tunnel: http://ringstrom.mine.nu/ipsec_tunnel/ |
| [2] | IPSec HOWTO, isakmpd: http://www.ipsec-howto.org/x405.html |
| [3a] | IPSec-Tools (KAME's IPsec utilities): http://ipsec-tools.sourceforge.net/ |
| [3b] | IPSec HOWTO, racoon: http://www.ipsec-howto.org/x247.html |
| [4] | Radiator: http://www.open.com.au/radiator/index.html |
| [5] | FreeRadius: http://www.freeradius.org/ |