Věnujte prosím pozornost plánovanému ukončení provozu eduroam-simple.

Úvod

Ne všichni uživatelé mají na svých počítačích možnost autentizace prostřednictvím protokolu 802.1x, tento protokol nemusí dostatečně podporovat buď operační sytém, nebo WiFi hardware. Pro takové uživatele je nutné vybudovat alternativní možnost, kterou je např. registrace prostřednictvím WWW rozhraní. Možností, jak toto rozhraní implementovat, je celá řada. Je možné buď využít hotových produktů, jako jsou např. ChillySpot, nebo jednodušší Tino a nebo vytvořit vlastní řešení. Touto cestou jsme se vydali v CESNETu a vytvořili tzv. eduroam-simple balíček, určený právě pro eduroam. Tento balíček je nyní volně k dispozici a jeho popisem se zabývá následující text.

Popis řešení

Bránu do Internetu pro WiFi stanice tvoří firewall, který zároveň slouží jak pro ochranu stanic podporujících 802.1x (dále jen přístup eduroam), tak i jako ochrana a filtr pro stanice regisrované prostřednictvím WWW stránky (dále jen přístup eduroam-simple). Firewall má tři rozhraní, jedno externí a dvě interní - jedno pro přístup eduroam a jedno pro přístup eduroam-simple. Každé z obou rozhraní má vlastní VLAN, které je na přístupových bodech přiřazeno vlastní SSID, přičemž u eduroam je na přístupových bodech u odpovídajícího SSID zapnuta autentizace 802.1x a firewall umožňuje stanicím v této síti přístup do Internetu bez omezení, u eduroam-simple je naopak řízení přístupu ponecháno na firewallu.

Uživatel, který použije síť eduroam-simple, má na počátku uzavřený přístup k Internetu. Otevře-li si WWW prohlížeč, z jakékoliv stránky prohlížené jak protokolem HTTP, tak i HTTPS, bude přeměrován na registrační stránku firewallu. Zde musí vyplnit své eduroam kredenciále a po úspěšném ověření je mu přístup do sítě otevřen. Jedná-li se o testovacího uživatele, je pouze oznámeno úspěšné ověření, přístup do sítě však uživatel nezíská.

[Obrázek]

Obrázek: Ukázka registrace stanice přes rozhraní Scaa

Zaregistrovaná stanice musí být aktivní, pokud má její registrace zůstat platná. Její aktivita je periodicky každé tři minuty ověřována prostřednictvím ARP pingu a pokud se dvě po sobě následující ověření nepodaří od stanice získat odpověď, je její registrace zrušena a uživatel jí musí zopakovat. Stejně tak je expirován i záznam stanice, jejíž registrace je starší než den.

Technické řešení

popis balíčku

Balíček eduroam-simple se skládá ze skriptů implementujících WWW rozhraní a autorizaci proti radius serveru, dále ze systémových skriptů zajišťujících konfiguraci firewallových pravidel, expiraci registrací a nastavování směrování a nakonec ze sady konfiguračních souborů pro http a dhcp server. V binární podobě je zde též autentizační radiusová knihovna a bezpečný identd demon, který správně reaguje na auth dotazy serveru a pritom neumoznuje napadeni systemu z vnejsku. Pro snadnou instalaci je zde také instalační skript a skript, který je třeba spustit po každém zavedení systému.

požadavky na systém

Pro správnou funkci systému je vyžadována libovolná plnohodnotná distribuce Linuxu na intelovské platformě založená na GLibc verze alespoň 2.1. Tato distribuce by kromě běžných balíků měla obsahovat Apache verze 1.3.x, BIND verze 9, MySQL verze 3.20.x nebo vyšší, DHCPD verze 3.0 a dále také OpenSSL a PHP4.

příprava systému před instalací

Jak bylo řečeno výše, počítač pro firewall by měl mít nejméně tři síťová rozhraní. U prvního z nich, eth0, se počítá s připojením směrem ven, toto rozhraní by mělo mít veřejnou IP adresu a jak přímý, tak i reverzní záznam v DNS. Jméno firewallu může být zvoleno libovolně, musí však korespondovat vnitřní pojmenovaní stanice (nejčastěji uvedené v /etc/HOSTNAME) a jméno zavedené v DNS. Druhé rozhraní by mělo být připojeno do VLAN pro přístup eduroam-simple a třetí do VLAN pro přístup eduroam. Druhé a třetí rozhraní by mělo sdílet adresový prostor, není tedy zapotřebí dvou IP rozsahů. Adresy jsou dynamicky přidělovány do obou VLAN, směrování na rozhraní firewallu je řešeno rovněž dynamicky přidáváním položek za běhu do směrovací tabulky jádra. IP rozsah přidělený vnitřním sítím se předpokládá veřejný. Pro použití balíčku eduroam-simple s překladem privátních adres je nutné jej upravit.

Po nainstalování Linuxu a zkonfigurování síťových rozhraní (eth1 by mělo mít první adresu z rozsahu interní sítě, eth2 druhou) je nutné zkonfigurovat firewall pro omezení přístupu z vnějšku. Ve většině případů pravděpodobně nebude zapotřebí na firewallu provozovat žádnou veřejnou službu (kromě DNS), takže firewall můžeme uzavřít např. příkazy

iptables -P INPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i eth0 --dport 53 -j ACCEPT
iptables -P FORWARD DROP
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -P OUTPUT ACCEPT

umístěnými ve vhodném startovacím skriptu. Některé distribuce Linuxu umožňují uložit aktuální stav iptables a při startu systému tuto uloženou konfiguraci samy načtou. O pravidla pro interní rozhraní není nutné se starat, vyřeší je eduroam-simple.

Další konfigurací, kterou je nutné před instalací balíčku eduroam-simple provést, je nastavení služby DNS. Předpokládá se, že nameserver pro reverzní doménu vnitřní sítě poběží na firewallu a že stanice ve vaší WiFi síti budou ve jmenném prostoru subdomény roam pod doménou vaší organizace, tj. doménou, ve které se nalézá samotný firewall. Je-li tedy jméno firewallu např. roamfw.organization.org, pak stanice budou dynamicky vytvářeny v doméně roam.organization.org. I pro tuto doménu by měl být primárním nameserverem firewall, aby mohly být nově připojené počítače zaneseny DHCP serverem do DNS. Výše uvedené domény tedy nadefinujte a zónové soubory ponechte buď prázdné, nebo do nich zaneste pouze rozhraní firewallu.

Poslední konfigurací je zastavení zbytečných služeb a spuštění démonů MySQLD a InetD. Zajistěte, aby se při startu systému pouštěly pouze tyto dva démony, případně ještě démon SSHD pro vzdálenou administraci firewallu. Apache se svou konfigurací spouští startovací skript rc.eduRoam (viz. dále). V konfiguračním souboru /etc/inetd.conf zakomentujte zbytečné služby, tj. pravděpodobně vše. Démon je však potřeba ponechat spuštěný, potřebné služby sem doplní instalační skript z balíčku eduroam-simple.

vlastní instalace balíčku

Nyní si stáhněte balíček eduroam-simple a rozbalte jej v kořenovém adresáři firewallu. Vytvořený adresář eduRoam již zůstane na svém místě a nelze ho bez úprav balíčku přesunout jinam.

V dalším kroku si prohlédněte soubor /eduRoam/etc/eduRoam.cfg a zkontrolujte v něm, zda cesty ke zde uvedeným programům odpovídají jejich skutečnému umístění ve vašem systému. Pokud se některý program nalézá např. v adresáři /usr/local/bin a balíčkem je očekáván v /usr/bin, cestu opravte.

V souboru /eduRoam/www/etc/scaa.conf nastavte správné parametry pro spojení s vaším Radius serverem.

Nyní budete potřebovat svůj osobní certifikát, aby mohl být vytvořen certifikát serverový. Pokud osobní certifikát nevlastníte, požádejte o jeho vystavení svoji certifikační autoritu. Zároveň si obstarejte potvrzení o tom, že můžete certifikační autoritu žádat o serverový certifikát pro svůj firewall, nebo obecně pro jakýkoliv počítač ve Vaší doméně. Osobní certifikát zkopírujte do souboru /eduRoam/etc/ssl.crt/usercrt.pem a jeho tajný klíč do souboru /eduRoam/etc/ssl.key/userkey.pem. Tyto soubory jsou zde potřeba pouze dočasně a po dokončení instalace je možné (a doporučené) je odstranit.

Hlavním krokem celé instalace je spuštění skriptu /eduRoam/bin/eduRoam.install. Proveďte to nyní. Na počátku budete dotázáni na heslo, kterým je zajištěn Váš osobní tajný klíč, zadejte ho. Po vygenerování žádosti o serverový certifikát skript provede několik dalších kroků, o své činnosti Vás informuje v angličtině. Sledujte, zda nedošlo k nějaké chybě a pokud ano, odstraňte její příčinu.

Vezměte žádost o serverový certifikát a odešlete ji Vaší certifikační autoritě. Podepsanou žádost naleznete v souboru /eduRoam/etc/ssl.req/serverreq.smi. Po vydání certifikátu ho uložte do souboru /eduRoam/etc/ssl.crt/serversrt.pem a spusťte Apache příkazem httpd -f /eduRoam/etc/apache/httpd.conf.

Do konfigračního souboru BINDu vložte klíč vygenerovaný do souboru /eduRoam/etc/dhcpd.conf.head. Klíč pojmenujte DHCP_UPDATER a přiřaďte ho ke všem doménám (viz. dokumentace k serveru BIND). Restartujte BIND např. příkazem rndc restart.

Na vhodné místo startovacích skriptů vložte volání skriptu /eduRoam/bin/rc.eduRoam. Termín "vhodné místo" zavisí na použité distribuci Linuxu. Skript rc.local není v řadě případů špatnou volbou.

Do crontabulky vložte volání skriptu /eduRoam/bin/CRL-update. Skript stahuje seznam odvolání certifikátů a měl by se spustit alespoň jednou denně. Seznam odvolání bude mít smysl zejména v dalších verzích, kdy bude možná autorizace klientským certifikátem uloženým např. v čipové bekontaktní kartě.

Tím je instalace ukončena, doporučujeme provést restart systému a zkontrolovat, zda při spouštění rc.eduRoam nedochází k chybám.

Seznam adresářů a souborů v balíčku a jejich význam

Adresář /eduRoam/etc:

/apache/httpd.conf
Pevná část konfiguračního souboru Apache.
/apache/virtuals.conf
Část konfiguračního souboru Apache s údaji o konkrétním firewallu. Vytvoří instalační skript.
/ssl.crl/ca-bundle.pem
Seznam odvolaných certifikátů. Stahuje skript CRL-update z WWW stránky certifikační autority.
/ssl.crt/ca-bundle.pem
Řetězec certifikátů certifikační autority. Poprvé stáhne skript CRL-update z WWW stránky certifikační autority.
/ssl.crt/servercrt.pem
Serverový certifikát. Musí uložit správce firewallu.
/ssl.key/serverkey.pem
Tajný klíč k severovému certifikátu. Vytvoří instalační skript.
/ssl.req/serverreq.cfg
Konfigurační soubor k požadavku o serverový certifikát. Vytvoří instalační skript.
/ssl.req/serverreq.pem
Nepodepsaný požadavek o serverový certifikát. Vytvoří instalační skript.
/ssl.req/serverreq.smi
Podepsaný požadavek o serverový certifikát. Vytvoří instalační skript.
dhcpd.conf
Konfigurační soubor pro DHCP démon. Vytváří za běhu rekonfigurční skript.
dhcpd.conf.head
Začátek konfiguračního soubor pro DHCP démon. Vytváří instalační skript.
eduRoam.cfg
Konfigurační soubor balíčku eduroam-simple.
fwtab
Seznam filtrovacích pravidel pro vnitřní síť.
nattab
Seznam překladových pravidel pro vnitřní síť.

Adresář /eduRoam/bin:

CRL-update
Skript pro obnovování seznamu odvolaných certifikátů. Spouští periodicky Cron.
arping
Program pro testování aktivity stanic.
dumbidentd
Démon pro bezpečné obsloužení služby auth. Spouští InetD.
eduRoam.install
Instalační skript balíčku eduroam-simple.
in.recfg
InetD démon pro aktualizaci konfigurace po registraci nové stanice.
rc.eduRoam
Startovací skript služeb eduroam-simple.
reconfig
Skript pro aktualizaci konfigurace registrovaných stanic. Spouští se automaticky po registraci nové stanice a při startu systému. Je možné použít i k ruční aktualizaci.
rupdate
Démon pro nastavení cesty ke stanicím ve vnitřní síti. K nově připojené stanice přidá položku do směrovací tabulky jádra. Spouští se při startu systému.
sniffler
Démon pro expiraci neaktivních stanic a stanic, které jsou registrované déle než den. Spouští se při startu systému.

Adresář /eduRoam/lib:

radius.so
Knihovna - modul do Apache pro ověřování protokolem Radius.

Adresář /eduRoam/www:

/etc/scaa.conf
Konfigurační soubor registračního rozhraní Scaa.
img
Adresář s obrázky pro rozhraní Scaa
inc
Adresář s podpůrnými moduly pro rozhraní Scaa.
index.php
Hlavní indexový skript rozhraní Scaa.

Příloha

Balíček eduroam-simple eduroam-simple-1.0.tar.bz2