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.cz
Pro 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`.0
Na 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:

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:

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/
další weby:fond rozvojemetacentrumCzechLightpřenosyvideoservereduroameduID.cz