HUPnet - Helsinki University Public Network

Viljo Viitanen <Viljo.Viitanen@helsinki.fi>
Helsingin yliopisto, tietotekniikkaosasto

3. tammikuuta 2005

Huomautus: tämä on käännös alkuperäisestä englanninkielisestä ohjeesta, ja saattaa paikoin olla hieman epämääräinen. Tämä suomenkielinen versio ei myöskään välttämättä ole täysin ajan tasalla. Katso tällöin englanninkielistä ohjetta tai kysy yllekirjoittaneelta.

Varsinainen englanninkielinen Hupnet-sivu

Johdanto

Hupnet (Helsinki University Public Network) on vapaa WWW-pohjaista käyttäjäntunnistusta käyttävä verkon pääsynvalvontaohjelmisto (network access controller, NAC) NAT-reitittimelle. Ohjelmisto pohjautuu Debian Linuxiin sekä kerneliin 2.4. Ohjelmisto koostuu pääasiassa kahdesta Perlillä tehdystä osasta: roottina pyörivästä demonista sisään- ja uloskirjautumis-CGI-ohjelmista jotka lähettävät komentoja demonille. Palvelimella pitää myös olla DHCP- sekä DNS-ohjelmistot.

Hupnet on tarkoitettu langattomille verkoille (WLAN) mutta sitä voidaan käyttää myös parikaapeliverkossa. Mitä tahansa www-käyttäjätunnistusta voidaan käyttää, erityisesti Shibbolethia, mutta myös muita, kuten PubCookieta, LDAPpia sekä RADIUSta. Yksinkertaisinta on käyttää Apachen "htpasswd"-salasanoja, joka on hyödyllista Hupnet-ohjelmiston testaamiseen ennen kuin on ottanut käyttöön jonkun oikean käyttäjätunnistustuksen.

Hupnet-reitittimen loppukäyttäjien tietokoneilla ei vaadita mitään erityisohjelmistoja.

Tässä ohjeessa oletetaan, että lukija osaa verkkoteknologiaa jonkin verran. Ainakin seuraavat käsitteet pitää olla tuttuja: reittimet/palomuurit, yksityiset osoitteet/julkiset osoitteet internetissä, NAT, WWW, DHCP, DNS sekä SSL. Lisäksi tässä ohjeessa ei opasteta Debian-käyttöjärjestelmän ylläpitoa eikä asennusta. Debianin lisäksi muitakin Linux-käyttöjärjestelmiä voi käyttää, mutta asennusohjeet, tiedostot sekä esimerkit ovat Debianille.

Toiminta

Kaikki yhteydet sisäverkosta internetiin on kielletty, paitsi portin 80 yhdeytet ohjataan läpinäkyvästi paikalliselle www-palvelimelle, josta annetaan vastaukseksi kirjautumissivu. Kun asiakas kirjautuu sisään Hupnettiin, yhteydet asiakkaan ip-osoitteesta internetiin sallitaan ja portin 80 ohjaus poistetaan sekä käyttäjän MAC-osoite (ethernet) asetetaan kiinteäksi, jottei ip-osoitteen triviaali varastaminen onnistu (ohjeen kirjoittaja on tietoinen, että MAC-osoitteiden väärentäminen on tavallaan triviaalia, mutta se vaatii erityistä osaamista, yrittämistä sekä erikoistyökaluja ja/tai verkkokorttiajureita). Kun kirjautuminen vanhenee tai käyttäjä kirjautuu ulos, tehdään päinvastoin: MAC-osoite vapautetaan, portti 80 ohjataan paikalliselle www-palvelimelle sekä internet-yhteydet kielletään.

Kun käytetään Shibbolethia (tai muuta kirjautumistapaa jossa asiakkaan pitää saada yhteys internetiin) pitää sallia pääsy Shibbolethin WAYF-palvelimelle ja origin-palvelimille (sekä mahdollisille erillisille kirjautumispalvelimille, jota originit käyttävät) myös kirjautumatta.

Kirjautumisskriptin "login ok"-sivulla on javascriptillä tehty laskuri, joka antaa varoitukset ponnahdusikkunassa kun 5 ja 1 minuuttia yhteysaikaa on jäljellä. Se myös tarkistaa, onko käyttäjällä ponnahdusikkunaestintä käytössä.

Hupnetin asennus

Asennus koostuu seuraavista osista: - Rauta
- Käyttöjärjestelmä
- Sisäverkko
- DHCP-palvelin
- DNS-palvelin
- WWW-palvelin
- Hupnet-ohjelmisto

Käyttöjärjestelmän asennus

Tässä ohjeessa ei opasteta miten Debian Linux-käyttöjärjestelmä asennetaan, ja tässä oletetaan, että käytät Debian Woodyä (3.0) joka oli "stable" tämän ohjeen kirjoittamisen hetkellä. 2.4 -kerneli tarvitaan, ja jos käännät kernelin itse, sinun pitää itse ottaa selville mitkä kaikki modulet tarvitaan. Palvelimesta pitää myös pystyä lähettämään sähköpostia mail-komennolla (kirjautumis-cgi-ohjelma käyttää sitä). Tarkkaa aikaa (ntp) tarvitaan, jos käytät Shibbolethia.

Sisäverkko

Konfiguroi sisäverkko lisäämällä seuraava /etc/network/interfaces -tiedostoon:
iface eth1 inet static
        address 10.0.0.1
        netmask 255.0.0.0

Ja nosta verkkoliittymä pystyyn (ifup eth1). (Ulkoverkon pitäisi olla kunnossa Debian-asennuksen jäljiltä.)

DHCP- ja DNS-palvelimet

Asenna paketit: apt-get install dhcpd bind

Laita dhcp-palvelin kuuntelemaan vain sisäverkkoa. Editoi tiedostoon /etc/default/dhcp rivi:

INTERFACES="eth1"

ja laita konfiguraatiotiedostoon /etc/dhcpf.conf oikeanlaiset asetukset: asiakkaille annettavat ip-osoitteet (mikä tahansa alue 10.0.0.2:sta lähtien), nimipalvelin ja reititin (molemmat 10.0.0.1) ja käynnistä palvelin uudestaan (/etc/init.d/dhcp restart). Esimerkkikonfiguraatiotiedosto on mukana (example-dhcpd.conf).

Konfiguroi bind välimuisti-nimipalvelimeksi (caching name server) ja kuuntelemaan vain sisäverkkoa (konfiguraatiotiedoston direktiivi listen-on). Lisäksi tarvitaan myös "authoritative" kohta reitittimesi dns-nimelle (paitsi jos käytät vain ip-osoitetta, joka ei ole suositeltavaa!) ja käynnistä nimipalvelin uudestaan (/etc/init.d/bind restart). Esimerkkikonfiguraatiotiedostot ovat mukana (hakemisto example-bind).

WWW-palvelin

WWW-palvelin on Apache mod_ssl:llä. Jos aiot käyttää Shibbolethia, et voi käyttää Debianin standardia Apache-pakettia (lisätietoa tämän ohjeen Shibboleth-osuudessa), mutta testitarkoituksiin se sopii (apt-get install apache libapache-mod-ssl). Esimerkki-httpd.conf mod_ssl -direktiiveillä on mukana (tiedosto example-httpd.conf). Testisertifikaatin voi tehdä komennolla "/usr/sbin/mod-ssl-makecert".

Tässä vaiheessa sinun pitäisi voida kytkeä tietokone palvelimeen sisäverkon kautta ja saada ip-osoite, pystyä tekemään dns-kyselyitä sekä saada www-palvelimelta Debianin oletuskotisivu "Welcome to Your New Home in Cyberspace".

Hupnet-ohjelmisto

Aluksi asenna iptables -paketti (apt-get install iptables). Paketin ehdottamaa init.d -skriptiä ei tarvita, Hupnetissa on mukana oma palomuuriskriptinsä.

Asenna hupnet-ohjelmisto purkamalla tiedosto hupnet-files.tar juurihakemistoon (/) (huom: tämä ylikirjoittaa Debianin oletuskotisivun). Siinä on seuraavat tiedostot:

etc/init.d/firewall-hupnet
etc/init.d/hupnet
etc/default/firewall-hupnet
usr/local/hupnet/masq-queue-handler
usr/lib/cgi-bin/login.cgi
usr/lib/cgi-bin/logout.cgi
var/www/index.html
var/www/example-htpasswd
var/www/hupnet-stylesheet.css

Vähintään sinun pitää muuttaa esimerkkisähköpostiosoitteet tiedostoista var/www/index.html, usr/lib/cgi-bin/login.cgi and usr/lib/cgi-bin/logout.cgi ja kirjautumissivun osoite palvelimellesi tiedostosta var/www/index.html. Jos käytät muita ip-osoitteita (verkko 10.0.0.0/8, palvelin 10.0.0.1) tai verkkoliittymiä (ulkoverkko: eth0, sisäverkko: eth1), firewall-hupnet -tiedostoa pitää muuttaa niiden mukaan.

Muuta tiedostoon /etc/init.d/klogd rivi

KLOGD="-c 1"

ja käynnistä klogd uudestaan (/etc/init.d/klogd restart), muutoin konsolille tulvii liikenneloki. Voit myös harkita syslog.confin muuttamista siten, että kern.info ei mene niin moneen paikkaan säästääksesi levytilaa sekä pitääkseni systeemit lokit siistimpinä.

Lisää rc.d -linkit hupnet sekä firewall-hupnet komennoilla:

update-rc.d firewall-hupnet defaults 50
update-rc.d hupnet defaults 50

Käynnistä tämän jälkeen palomuuri ja hupnet (/etc/init.d/firewall-hupnet start; /etc/init.d/hupnet start). Hupnetin oletuspalomuuri on hyvin tiukka, kaikki yhteydet palvelimelle on kielletty paitsi www-palvelin sisäverkosta sekä ssh ulkoverkosta.

Hupnet kaappaa kaikki www-pyynnöt (portti 80) asiakkailta, jotka eivät ole kirjautuneet ja ohjaa pyynnöt porttiin 8001 hupnet-palvelimella. Jos et käytä esimerkki-httpd.confia, konfiguroi Apacheen porttiin 8001 virtuaalipalvelin, josta tulee uudelleenohjaus (redirect) palvelimesi hupnet-serverin etusivulle kaikkiin pyyntöihin.

Esimerkkikonfiguraatiotiedostossa kirjautumisskripti on suojattu Apachen 'basic authentication' -mekanismilla. Käyttäjätunnus ja salasana on "example" ilman lainausmerkkejä.

Kun sinulla on toimiva hupnet-palvelin pystyssä esimerkkikirjautumisella, seuraava askel on konfiguroida Shibboleth tai jokin muu oikea kirjautumistapa sekä hankkia oikea SSL-sertifikaatti palvelimellesi. Voit myös muuttaa etusivun ja sisään- sekä uloskirjautumissivujen ulkoasua hupnet-stylesheet.css -tiedostoa muokkaamalla. On myös suositeltavaa, ettet kutsu oman organisaatiosi julkista verkkoa Hupnetiksi. Jos alat käyttää Hupnettia, yllekirjoittanut kuulisi mielellään kokemuksistasi!

Shibbolethin asennus

Katso SWITCHin (The Swiss Education & Research Network) ohjeita osoitteessa http://www.switch.ch/aai/docs/shibboleth/SWITCH/1.1/target/install-target-1.1-debian.html asentaakseni Shibboleth-targetin helpohkosti Debianille.

Debianin Apache-paketti ei toimi, koska Shibboleth-modulet vaativat, että Apache on käännetty pthread-kirjaston kanssa. SWITCHillä on tarjolla korvaava Apache-paketti.

Erityistä muistettavaa kun käyttää Shibbolethia Hupnetissä: Shibboleth-federaatiosi WAYF- ja origin-palvelimille sekä originien mahdollisille kirjautumispalvelimille pitää sallia pääsy ilman kirjautumista. Esimerkki tästä on firewall-hupnet -tiedostossa kommenteissa.

Kun shibboleth toimii muuten, suojaa Hupnetin sisäänkirjautumisskripti (login.cgi) Shibboleth-käyttäjätunnistuksella. Apachen konfiguraatio tähän on kommentoituna esimerkki-httpd.conf -tiedostossa.

Muut käyttäjätunnistustavat

Käyttääksesi muita käyttäjätunnistustapoja, asenna ja konfiguroi haluamasi tapa Apacheen ja käytä sitä suojataksesi sisäänkirjautumisskripti. Katso esimerkiksi http://www.muquit.com/muquit/software/mod_auth_ldap/mod_auth_ldap.html for LDAPille ja http://www.freeradius.org/mod_auth_radius/ RADIUS-protokollalle. Muista, että jotkut kirjautumistavat voivat vaatia palomuurisääntöjen muokkaamista.

Voit myös lisätä sovellustason käyttäjäntunnistuksen kirjautumisskriptiin ja poistaa Apachen käyttäjätunnistuksen. Tämä vaatii CGI-ohjelmointikokemusta Perlillä.

Loppukäyttäjille tarkoitetut ohjeet

Varsinaisia loppukäyttäjille tarkoitettuja ohjeita ei ole tarjolla, ja sinun pitäisi kirjoittaa itse ohjeesi omalle organisaatiollesi. Suositeltu lähtökohta ohjeille on:

1. Hanki ip-osoite automaattisesti (käytä DHCP:tä)
2. Poista mahdolliset WWW-proxy-asetukset
3. Ota yhteys verkkoon (WLAN-verkkonimi/ethernet-parikaapeli)
4. Käynnistä www-selain ja mene mille tahansa www-sivulle

Taustaa

Hupnet kehitettiin Helsingin yliopiston tietotekniikkaosastolla loppuvuodesta 2000, ja on ollut tuotantokäytössä vuodesta 2001. Ensimmäinen versio oli Linux-kernelille 2.2 ja se käytti sovellustasolla tehtyä RADIUS-käyttäjätunnistusta, eikä Apachen käyttäjätunnistusta.

Kun Suomen yliopistoissa alettiin pilotoida Shibboleth-tekniikkaa vuonna 2004, keksimme Helsingin yliopistolla, että Shibbolethia voisi käyttää myös Hupnetissä, jolloin toisten yliopistojen edustajat voivat vierailla yliopiston verkossa omilla tunnuksillaan. Nykyinen Hupnet-paketti on CSC:n pilottiprojektin tulos, jossa tarkoituksena oli tehdä julkaisu Shibboleth-kykyisestä Hupnetistä.