= eduroam toegang via Wireless Leiden = Het doel van dit project is het ontwikkelen en testen van een prototype accesspoint (en achterliggende infrastructuur) dat het mogelijk maakt: studenten (onderzoekers, docenten en overige medewerkers van een educatieve-instelling) "veilig" toegang tot het internet te bieden door naadloze integratie van [http://www.eduroam.org eduroam] op het "open" netwerk van Wireless Leiden. De betekenis van de eduroam roaming-infrastructuur laat zich in het hieronder volgende voorbeeld ophelderen! == Wat is eduroam? == Onderwijsinstelling 'X' wil al zijn studenten eenvoudig op hun "beveiligde en gesloten" draadloze netwerk aansluiten om hen toegang tot internet en printen te verschaffen. Dit draadloze netwerk dat met vele toegangspunten (AP=AccessPoints / Hotpots) door het hele complex dekkend is, word ''wel'' met ''een enkele generieke'' naam "X-netwerk" aangelegd, maar ''niet'' met ''een enkel generiek'' wachtwoord! De onderwijsinstelling heeft al zijn leden al geregistreerd in een personendatabase en heeft voor ieder herleidbaar persoon namelijk al een ''unieke'' accountnaam en wachtwoord aangemaakt. Door de authenticatie en autorisatie tot het "gesloten en beveiligde" draadloze netwerk via de inloggegevens uit de personendatabase te laten verlopen, weet ieder lid direct zijn eigen wachtwoord om direct toegang tot het draadloze netwerk te krijgen. Daarnaast weet de instelling een mogelijk wachtwoord lek te herleiden tot een uniek persoon. In de gebruikelijke situatie wanneer een student van onderwijsinstelling X vanuit de kantine het eigen beveiligde en gesloten draadloze netwerk "X-netwerk" op wil, dan configureert deze eenmalig zijn laptop (tablet en of telefoon) en gebruikt hiervoor de voor hem of haar al bekende unieke inloggegevens. Iedere volgende keer wanneer deze student binnen het eigen complex wil werken (of loopt) is zijn apparaat automatisch verbonden met hetzelfde draadloze "X-netwerk" (al dan niet via een andere toegangspunt vanuit collegezaal of bibliotheek). Dit verschijnsel waarbij het apparaat van de gebruiker, zonder dat hij of zij het opmerkt automatisch van toegangspunt naar toegangspunt verspringt, bereikbaar en bruikbaar blijft word "roaming" genoemd. Maar nu, onderwijsinstelling 'Y' heeft exact dezelfde infrastructuur als onderwijsinstelling X, maar Y merkt dat wanneer gastdocenten van X met hun laptop op bezoek komen zij niet (automatisch) bij Y het internet op kunnen. Tevens is het voor de onderwijsinstelling en de gebruikers omslachtig om iedereen opnieuw te registreren, een tijdelijk wachtwoord te geven en of hun apparaten te herconfigureren voor (tijdelijke) gebruik van het beveiligde en gesloten netwerk. Als oplossing draagt onderwijsinstelling Y [http://www.eduroam.org eduroam] aan. Hiervoor gaan beide onderwijsinstelling X en Y de naam van hun draadloze netwerk gelijkmaken aan de generieke naam "eduroam". Wanneer (gast)gebruikers van X bij onderwijs instelling Y op bezoek zijn gaan hun laptops, tablets of telefoons automatisch het gelijknamige netwerk van onderwijsinstelling Y op. Dit werkt helaas nog niet direct, maar wel bijna! Onderwijsinstelling Y heeft natuurlijk niet de personendatabase met inloggegevens van onderwijsinstelling X om gebruikers van X tegen te authenticeren, dus gebruikers van X op het netwerk bij Y krijgen alsnog de melding dat hun inloggegevens niet worden herkend omdat ze als X in de personendatabase van Y ontbreken, logisch toch! Wanneer onderwijsinstelling Y nu alleen de authenticatie "aanvragen" doorgestuurd via een "centrale server" op internet die op zijn beurt weer doorgekoppeld is aan de personendatabase van de eigen onderwijsinstelling (X in dit geval) en de autorisatie "goedkeuringen" via diezelfde route weer terug afleverd bij de instelling waar de gebruiker zich bevind, dan blijven de persoonsgegevens binnen de eigen onderwijsinstelling waar ze horen en kan de gebruiker na autorisatie bij de andere instelling toch het netwerk/internet gebruiken. Dit allemaal zonder ook maar iets aan zijn eigen apparaat te hoeven veranderen! Vergelijkbaar met mobiele telefoons die tijdens het telefoongesprek in een auto rit van stad A naar B diverse toegangspunten (Telefoon Cells) passeren, zonder dat de gebruiker het merkt dat zijn verbinding weg valt. Dit eduroam systeem zorgt er uiteindelijk voor dat je als onderwijsinstelling in een strikter wordend klimaat van beveiliging, geslotenheid en aansprakelijkheid toch een verantwoordelijk een dienst dat open, toegankelijk van karakter is kan bieden. == De betrokkenheid Wireless Leiden? == Wireless Leiden neemt momenteel niet als "identity provider" deel aan eduroam, maar faciliteerd louter het doorgeven van de vereiste authenticatie "aanvragen" en autorisatie "goedkeuringen" via een grotendeels intern ontwikkeld prototype infrastructuur. Als partieel serviceprovider koppelt Wireless Leiden eduroam gebruikers automatisch en beveiligd door aan de daarvoor aangewezen (onderwijs)netwerken. Een onderwijsinstelling vervult vaak meerdere rollen binnen het eduroam project inclusief internet-gateway, maar Wireless Leiden beperkt zich puur tot de ondersteunende koppeling en integratie van deze diensten. Het unieke aan dit project is niet het scheiden van de identity/service provider eigenschap, maar de integratie van de verdeelde diensten over het losstaand en "open" netwerk van Wireless Leiden. Dit maakt het exploiteren van eduroam draadloze toegangspunten via het Wireless Leiden netwerk in publieke ruimte niet alleen, eenvoudig, flexibel en betaalbaar maar doet dit zelfs tot op stadsniveau! De huidige implementatie is een win-win situatie voor betrokken partijen, door de huidige multi SSID techniek neemt zowel de dekking van het eduroam netwerk van een onderwijsinstelling als het Wireless Leiden netwerk toe. Dit in tegenstelling tot de vaak door onderwijsinstelling geisoleerde fysiek inpandige en gesloten infrastructuur exploitatie, die zich gemakkelijk door het graven/leggen van dure kabelverbindingen laat uitstellen of zelfs afstellen. *Ontwikkelaars van Wireless Leiden zelf kunnen de roaming eigenschap van deze infrastuctuur alleen gebruiken, testen en ontwikkelen wanneer ze beschikken over een geldig accountsnaam en wachtwoord dat geleverd is door een aan eduroam/surf foundation gelieerde identity provider. Als voorbeeld Universiteit Leiden of Hogeschool Leiden. Wel zou er voor hen via een interne identity provider van Wireless Leiden zelf een account gemaakt kunnen worden, maar omdat deze niet centraal gekoppeld is werkt dit niet wanneer ontwikkelaars van het Wireless Leiden eduroam netwerk naar het Universiteits eduroam overgaan. Het Universiteits eduroam netwerk kan namelijk via de centrale server niet bij de onbekende Wireless Leiden interne identity provider komen en zal deze mensen niet op zijn netwerk toelaten. Hiermee word direct duidelijk dat een wederzijdse samenwerking nodig is om het onbegrensde karakter eduroam(ing) te laten werken en beschermen! Een andere mogelijkheid zou het aanvragen van een test-account bij de surf foundation zijn. == HOWTO == === technische en organisatorische benodigdheden === Voor de realisatie voor de ondersteunende eduroam infrastructuur op het Wireless Leiden netwerk is gekozen voor twee verschillende type installaties met idem verschillende functionaliteit namelijk: 1. meerdere type "AccesPoints" die als "eduroam" accesspoints zullen fungeren met als basis OpenWRT. 2. een enkel centraal en vaste gepositioneerde "Radius Proxy & gateway" met als basis FREEBSD. De verbinding tussen deze twee typen installaties word via OpenVPN tunnels beveiligd en geencrypt opgezet waardoor het mogelijk onveilige karakter van het open WirelessLeiden vervalt. Naast deze hardware matige en software matige eisen zijn er nog vier andere organisatorische eisen nodig waaronder: 1. toegang/inlog-gegevens tot de centrale eduroam/surf foundation identityprovider koppel server. 2. ip whitelisting voor toegang tot die server. 3. inloggegevens/account van een aan eduroam gelieerde onderwijsinstelling om het netwerk op te kunnen! 4. certnode die het creeeren van openvpn certificaten en config bestand faciliteert. 5. buildmachines voor firmware 6. tot internet? Met deze middelen en een complete voor zover mogelijk lineaire stap voor stap handleiding die nu volgt is een plug en play exploitatie van eduroam toegangspunten waar dan ook (binnen het Wireless Leiden netwerk) snel en eenvoudig te realiseren. === setup eduroam AccessPoints === ==== achtergrond === Als complete outdoor accesspoints gebruiken we diverse Ubiquiti apparaten waaronder Bullets en NanoStations. Door het gebruik van het opensource software RouterOS [http://www.openwrt.org OpenWRT] en gerelateerde software projecten, is deze setup niet gelimiteerd aan een merk en of type hardware. Een kleine aanpassing aan de configuratie bestanden zou een vereiste kunnen zijn voordat het op andere hardware platvormen werkt. De handleiding zal overigens alleen gespitst zijn op de Ubiquity Bullet m2 HP. Met deze flexibele fundering is het doel om accesspoints die maar in enkele opzichten van elkaar kunnen verschillen zo gemakkelijk en snel mogelijk in grote hoeveelheden geautomatiseerd te kunnen configureren. Het verschil tussen de accesspoints komt deels uit hoek van beveiliging en deels uit de hoek van de toepassing. Als een enkel accesspoint gehackt is kan deze los van de andere accesspoint toegang tot de radius proxy ontzegt worden en zijn de andere accesspoints nog operationeel. Als toepassing is het handig dat het eduroam accesspoint op de burcht in Leiden als multi SSID "ap.burcht.wleiden.net" kan heten in zijn en de eduroam accesspoint bij de Hortus Botanicus "ap.hortusbotanicus.wleiden.net". Deze voorbeelden duiden erop dat er toch kleine specifieke wijzigingen tussen de accespoints vereist zijn. === setup Radius Proxy & gateway === Moet nog uitgezocht / getest worden, zie oud voorbeeld!!! Wel kan ik specifieke veranderingen van config nbestanden en opties/paramters toevoegen! === certnode sunfire uitzoeken === Heeft huub destijds uitgevoerd! = Oude handleiding = == A. Achtergrond informatie == De afgelopen jaren is een technische oplossing ontwikkeld, in samenwerking met de Hogeschool Leiden, om Eduroam mogelijk te maken over een open netwerk zoals dat van Wireless Leiden. - het afstudeerverslag van Richard (technisch is er een andere oplossing ontwikkeld, maar de algemene aanpak wordt hierin beschreven): http://svn.wirelessleiden.nl/svn/projects/802.1x/afstudeerproject_2008/afstudeerverslag.pdf - na het afstudeerverslag van Richard zijn enkele studenten bezig geweest een technische oplossing te ontwikkelen, onder andere met steun van Stichting NLnet: http://www.cugar.org, http://nlnet.nl/project/cugar/ en externe begeleiders - parallel is een wat andere oplossing ontwikkeld door Richard, als vrijwilliger van Wireless Leiden op basis van [http://www.ubiquity.com Ubiquity] hardware (bullet2HP). We willen nu een test doen met een prototype. Hiervoor is een openvpn-server geinstalleerd in het kantoor van Prof. Katzy, verbonden aan NodePlantsoen2, met een verbinding naar een authenticatieserver van Surfnet. De resultaten van dit project worden hier gerapporteerd. == B. Configureren van Bullet2HP als Eduroam accesspoint == De procedure is als volgt: - bouw een keer de OpenWRT-image - upload de image naar de Bullet2HP - upload individuele vpn info naar de bullet (dus niet openwrt opnieuw bouwen) === B.1 Opzetten van een host machine voor OpenWRT-images === De hostmachine is een PC met Ubuntu 11.10 waarbij de packages subversion, build-essential, flex, gettext, libz-dev, gawk, ncurses, libncurses5-dev en ncurses-term en tftp. 1. Checkout the files we need {{{ svn co svn://svn.openwrt.org/openwrt/branches/backfire eduroam svn co http://svn.wirelessleiden.nl/svn/code/eduroam-bullet/trunk/openwrt-package/post/ eduroam/package/post/ }}} 2. cd into the build directory {{{ cd eduroam }}} 3. update Feeds {{{ ./scripts/feeds update ./scripts/feeds install -a }}} 4. Copy build config {{{ cp package/post/config .config }}} 5. BUILD {{{ make }}} Volgende stappen nog niet getest 6. 1. If you have a fresh new Air OS install you can upload the following image to your bullet. You will get a message that this is not a ubnt image, you can ignore this message. Just in case be ready to use method 2 (recovery mode) with a ubnt image. bin/ar71xx/openwrt-ar71xx-ubnt-bullet-m-squashfs-factory.bin 2. You need a tftp client for this, tested on Ubuntu 10.10 1. First of all, power off the device 2. Set your laptop in the 192.168.1.0/24 range, not being 192.168.1.20 3. Connect the Bullet to your computer via a utp cable 4. Begin by pressing the reset button. Keep holding it, then power the unit on. Wait 8 seconds then release the button. Signal LEDs will be lit indicating that the device is ready for recovery. On your computer go to the location of the OpenWRT build for your platform 5. {{{ cd bin/ar71xx/ }}} 6. {{{ tftp 192.168.1.20 }}} 7. {{{ bin trace put openwrt-ar71xx-ubnt-bullet-m-squashfs-factory.bin quit }}} 8. Wait for a couple of minutes, your bullet will be reachable on 192.168.1.1 as openwrt 7. Default password: Edur0@m 8. Creating unique vpn info: 1. Make up a fancy name, in this manual it will be 'name' or 2. Login into a certnode (For wl:sunfire) 3. Execute from your own user: sudo eduroam-cert 4. Output will look like: sunfire% sudo eduroam-cert name NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/share/doc/openvpn/easy-rsa/2.0/keys Generating a 1024 bit RSA private key .....++++++ .....................++++++ writing new private key to 'name.key' ----- Using configuration from /usr/local/share/doc/openvpn/easy-rsa/2.0/openssl-0.9.8.cnf Check that the request matches the signature Signature ok The Subject's Distinguished Name is as follows countryName :PRINTABLE:'NL' stateOrProvinceName :PRINTABLE:'ZH' localityName :PRINTABLE:'Leiden' organizationName :PRINTABLE:'WL' organizationalUnitName:PRINTABLE:'Techniek' commonName :PRINTABLE:'name' name :PRINTABLE:'WL' emailAddress :IA5STRING:'noreply@wirelessleiden.nl' Certificate is to be certified until Feb 27 13:32:30 2022 GMT (3650 days) Write out database with 1 new entries Data Base Updated 5. in you home directory "on cert node sunfire itself" there will be a file called .tar, copy this file to a network reachable the bullet locally 6. untar it: {{{ tar -xf .tar }}} 7. In the current directory there will now be a folder called keys, cd in to it 8. execeute: {{{ sh upload }}} 9. Enter the root password twice, after which your bullet will reboot 10. You bullet can be connected to the network an will build a vpn connection according to the data in the tar file. Mind de default password and security flaws. To add: If something goes wrong I need the output of the following commands: {{{ ls -l /usr/sbin/ cat /var/log/openvpn.log ifconfig -a iwconfig }}} Terug flashen van de oorspronkelijke ubiquity firmware op dezelfde wijze als boven omschreven, m.b.v. tftp. Dit moet in 'recovery modus': tijdens het opstarten de reset knop ingedrukt houden; het ip-adres van de bullet2 is dan weer 192.168.1.20. == C. Opzetten van een Radius proxy == De Authenticatieserver is een Radiusserver. De gebruikersaccounts van een Eduroam-instelling zijn niet beschikbaar bij andere instellingen (dus ook niet bij Wireless Leiden). Om 802.1x/Eduroam op het Wireless Leiden netwerk te laten werken zijn geen gebruikersaccounts nodig, de authenticatieverzoeken kunnen doorgezet worden naar de Surfnet-Radiusserver (proxy). De Surfnet-Radiusserver stuurt het verzoek op zijn beurt door naar de Radiusserver van de deelnemende instelling waaraan de gebruiker verbonden is. De Radiusserver van deze deelnemende instelling bevat de gebruikersaccounts. De Accept of de Reject op het authenticatieverzoek wordt via het zelfde pad teruggestuurd, waarna de node toegang verschaft (of niet). Op basis van het afstudeerwerk van Richard is [http://http://freeradius.org/ Freeradius] voor de Radiusserver. Deze open-sourcesoftware voldoet aan de eisen en Freeradius is ook wat betreft beschikbare opties de meest aantrekkelijke open-source Radiusserver. Uitgangspunt: (embedded) pc met Freebsd 8.2, minimal install A. Installeer de volgende software (log in als root) fetch ports {{{ $ portsnap fetch extract }}} installeer subversion {{{ $ make -C /usr/ports/devel/subversion install clean BATCH=yes }}} installeer openvph {{{ $ make -C /usr/ports/security/openvpn-devel install clean BATCH=yes }}} checkout openvpn-wl {{{ svn co http://svn.wirelessleiden.nl/svn/code/eduroam-bullet/trunk/openvpn-wl/ /usr/local/etc/openvpn }}} installeer freeradius {{{ $ make -C /usr/ports/*/freeradius install clean BATCH=yes }}} vervang /usr/local/etc/raddb {{{ rm -R /usr/local/etc/raddb svn co http://svn.wirelessleiden.nl/svn/code/eduroam-bullet/trunk/radius-wl/ /usr/local/etc/raddb chown -R freeradius:freeradius /usr/local/etc/raddb }}} installeer isc-dhcp42-server {{{ $ make -C /usr/ports/*/isc-dhcp42-server install clean BATCH=yes }}} {{{ svn checkout http://svn.wirelessleiden.nl/svn/code/eduroam-bullet/trunk/files/ /usr/local/etc/ --depth empty cd /usr/local/etc/ rm dhcpd.conf svn up dhcpd.conf }}} B. Toevoegingen aan het configuratiebestand /etc/rc.conf {{{ # enable: Freeradius radiusd_enable="YES" # enable: openvpn en tap openvpn_enable="YES" openvpn_if="tap" ifconfig_tap0="192.168.4.1/24 up" # We want to route the traffic gateway_enable="YES" }}}