Changes between Version 46 and Version 47 of WikiStart


Ignore:
Timestamp:
May 6, 2013, 11:58:15 AM (13 years ago)
Author:
walter
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • WikiStart

    v46 v47  
    11= eduroam via Wireless Leiden =
    2 
    32Het 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!
    43
    54== Wat is eduroam? ==
    6 
    75Onderwijsinstelling '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.
    86
     
    1917
    2018== Betrokkenheid van Wireless Leiden? ==
    21 
    22 TODO geschiedenis toevoegen?
     19TODO korte geschiedenis nog toevoegen!
    2320
    2421De betekenis en werkwijze van eduroam voor dit Wireless Leiden project is vanuit een "aanbieders" perspectief. Daarbij zal voornamelijk de onderliggende technische werking van de infrastructuur om eduroam accesspoints (voor gebruikers) te realiseren ter sprake komen. 
     
    148145}}}
    149146
    150 #/etc/config/dhcp
     147#example code#/etc/config/dhcp
    151148{{{
    152149config dnsmasq
     
    190187}}}
    191188
    192 #/etc/config/firewall
     189#example code#/etc/config/firewall
    193190{{{
    194191config defaults
     
    327324}}}
    328325
    329 #/etc/config/network
     326#example code#/etc/config/network
    330327{{{
    331328# Copyright (C) 2006 OpenWrt.org
     
    362359}}}
    363360
    364 #/etc/config/system
     361#example code#/etc/config/system
    365362{{{
    366363config  system
     
    375372}}}
    376373
    377 #/etc/config/wireless
     374#example code#/etc/config/wireless
    378375{{{
    379376config wifi-device  radio0 #! names and config parameters are different for wifi architectures, ar71xx,brcm47xx,x86,etc <---
     
    409406}}}
    410407
    411 #/etc/init.d/openvpn
     408#example code#/etc/init.d/openvpn
    412409{{{
    413410#!/bin/sh /etc/rc.common
     
    427424}}}
    428425
    429 #/etc/init.d/sysntpd
     426#example code#/etc/init.d/sysntpd
    430427{{{
    431428#!/bin/sh /etc/rc.common
     
    463460}}}
    464461
    465 #/etc/firewall.user
     462#example code#/etc/firewall.user
    466463{{{
    467464# This file is interpreted as shell script.
     
    483480}}}
    484481
    485 #/etc/inittab
     482#example code#/etc/inittab
    486483{{{
    487484::sysinit:/etc/init.d/rcS S boot
     
    492489}}}
    493490
    494 #/etc/rc.local
     491#example code#/etc/rc.local
    495492{{{
    496493# Put your custom commands here that should be executed once
     
    512509
    513510
    514 #/sbin/wifi-update #test create yourself
     511#example code#/sbin/wifi-update
    515512{{{
    516513#!/bin/sh
     
    521518}}}
    522519
    523 #/usr/sbin/iopenvpn #create yourself
     520#example code#/usr/sbin/iopenvpn
    524521{{{
    525522#!/bin/sh
     
    539536}}}
    540537
    541 Setup openvpn key/certificates/config for the AP, Skip to section 3 of this howto, when you have a *.tar file with keys&config comeback ;-)
     538Setup openvpn key/certificates/config for the AP, skip to section 3.2 of this howto. When you have a *.tar file with keys&config for your individual unique AP comeback and continue.
    542539
    543540{{{
     
    558555chmod +x /etc/openvpn/up.sh
    559556/etc/init.d/openvpn enable
    560 
    561 
    562557
    563558## activate wifi to add MACadress to /etc/config/wireless file
     
    589584TODO Inmiddels is er een op debian 6 wheezy gebasseerde release nagebouwd, deze werkte tijdelijk en moet nog uitgeschreven worden.
    590585download netiso mini.iso dd usb stick
    591 #tasksel > ssh server + normal tools?
     586#tasksel > ssh server + base tools?
    592587#postinstall
    593588apt-get update
     
    596591Voornamelijk de config van raddb helemaal ombouwen omdat alle parameters voor FREEBSD zijn! dan nog een iptable edit doen en dan deed die het???
    597592
    598 === 3 certnode ===
    599 Voor het functioneren van openvpn waaronder beveiligen en herkennen van server en unieke clients word easy-rsa gebruikt. Het idee is om op een vertrouwde permanente machine "certnode" een permanente opzet te maken waar een openvpn server certificate voor de radius-server/proxy word aangemaakt, dat weer de basis zal vormen voor client certificaten voor de verschillende accesspoints. Het eerste gebeurt eenmalig en zal lokaal op de certnode bewaart moeten blijven, het tweede gebeurt per op te leveren unieke AP waar er meerdere van zullen zijn. Het server certificaat + openvpn settings zal eenmalig van de certnode op de radius-server/proxy geplaatst worden. De unieke client certificaten worden "per AP" eenmalig op de certnode aangemaakt en vervolgens eenmalig per uniek AP geflashed! Hierdoor zijn de AP's individueel te volgen en te beheren om toegang tot the radius-server/proxy te ontzeggen.
    600 
    601 Kan inloggen via public ssh key op sunny/sunfire.wleiden.net kan daarinderdaad het script starten maar vervolgens kan deze niks vinden. Lijkt erop dat de oude server certificaten niet aanwezig zijn en er kunnen dan geen afgeleide client certifcaten gemaakt worden tevens missen er config bestanden, dus alles moet opnieuw? Hoe maak ik dit lokaal na?
    602 Namaken: https://help.ubuntu.com/community/OpenVPN
    603 Een easyrsa "server" certificate aanmaken, in de handleiding i.p.v. "admin" group die ontbreekt "sudo" kiezen. Tevens locatie van het cn bestand fixen met symlink!
    604 Daarna kan je easyrsa "client" certificate aanmaken, enige opmerking daar is dat je KEY_CN=client voor het commando plaatst anders database error. Nu in de oude trend kun je het eduroam-cert script aanpassen en benodigde (geupdate)config bestanden in map key's plaatsen en daarin een map met packages aanmaken. Wanneer je dan het script draait maakt die inderdaad een tar bestand met alle instellingen.
    605 TODO Verzin leuke manier om dit in een batch workflow voor veel AP's clients in te passen... denken we vanuit dit concept met tar bestand of moeten we iets maken dat meteen meedere parameters zoals multiSSID ip-adres hostname wifichannel etc meeneemt op basis van MAC adres? Nog uitzoeken welk deel er naar de server moet 4 bestanden ca dh1024 server.crt/key?
    606 
    607 #/etc/openvpn/easy-rsa/keys/client.conf
     593=== 3 setup certnode ===
     594Voor het functioneren van openvpn waaronder beveiligen en herkennen van server en unieke clients word easy-rsa gebruikt. Het idee is om op een vertrouwde permanente machine "certnode" eenmalig een blijvende opzet te maken met een openvpn "server" certificate voor de "radius-server/proxy", waarvan weer afgeleide client certificaten voor de verschillende accesspoints gemaakt kan worden. Het eerste gebeurt eenmalig en zal lokaal op de certnode bewaart moeten blijven. Het tweede gebeurt iedere keer wanneer er een "eduroam" AP bij komt aan het WirelessLeiden netwerk. Het generieke server certificaat + openvpn settings zal eenmalig van de certnode op de radius-server/proxy geplaatst moeten worden. De unieke client certificaten en config moeten voor ieder nieuwe/extra "eduroam" AP apart op de certnode aangemaakt worden en eenmalig per uniek AP geconfigureerd! Hierdoor zijn de eduroam AP's individueel te volgen en te beheren om toegang tot the radius-server/proxy te ontzeggen.
     595
     596==== 3.1 install openvpn easy-rsa ====
     597Op een ubuntu 12.04LTS installatie of livecd moet je het easy-rsa pakket dat met "openvpn" komt installeren. Opmerking, houd er rekening mee dat wanneer dit op een livecd gedraait word natuurlijk het permanente karakter verloren gaat! De inhoud van de /etc/openvpn map moet dan natuurlijk bewaard worden anders zal er per livecd sessie, opnieuw server certificaten gegenereerd moeten worden waardoor de afgeleide client certificaten en key's met de server certifcaten uit eerdere/oudere livecd sessie natuurlijk incompatible zijn! TODO Wellicht komt er een aanpassing van dit script zodat die direct voor verschillende users op sunfire zelf functioneert!
     598
     599Setup openvpn easy-rsa certnode
     600{{{
     601## install openvpn in ubuntu 12.04
     602sudo apt-get install openvpn
     603
     604## copy easy-rsa files for use
     605sudo mkdir -p /etc/openvpn/easy-rsa/keys/packages
     606sudo cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0/* /etc/openvpn/easy-rsa/
     607
     608## setup openvpn easy-rsa "server"
     609# edit the end of the vars file to reflect the example code
     610sudo nano /etc/openvpn/easy-rsa/vars
     611}}}
     612
     613#example code#/etc/openvpn/easy-rsa/vars
     614{{{
     615export KEY_COUNTRY="NL"
     616export KEY_PROVINCE="ZH"
     617export KEY_CITY="Leiden"
     618export KEY_ORG="Stichting Wireless Leiden"
     619export KEY_EMAIL="$me@wirelessleiden.nl"
     620}}}
     621
     622Continue setup
     623{{{
     624## continue setup openvpn easy-rsa "server"
     625cd /etc/openvpn/easy-rsa/
     626sudo chown -R root:sudo
     627sudo chmod g+w . #include the dot "."
     628source ./vars
     629./clean-all
     630./build-dh
     631sudo ln -s openssl-1.0.0.cnf openssl.cnf
     632./pkitool --initca
     633./pkitool --server $servername/eduradprox
     634
     635## create and copy server keys for usage
     636cd keys
     637openvpn --genkey --secret ta.key #tls key goed genoeg???
     638sudo cp eduradprox.crt eduradprox.key ca.crt dh1024.pem ta.key ../../ #kopieer ze natuurlijk naar de radius-server/proxy die instap 2 gemaakt is!
     639
     640## setup script for easy client certificate/key genereting individuel AP's
     641sudo touch /usr/local/bin/eduroam-openvpn-client-cert
     642}}}
     643
     644#example code#/usr/local/bin/eduroam-client-openvpn-cert
     645{{{
     646#!/bin/sh
     647# put me in /usr/local/bin
     648# use me as sudo me apname
     649
     650FROMBASE=./keys
     651TOBASE=./keys/packages
     652COMMON=$1
     653TAR=$TOBASE/$COMMON.tar
     654USER=$SUDO_USER
     655CLIENT=client
     656
     657if [ ! $1 ]; then
     658  echo "no name for AP  given"
     659  exit 1
     660fi
     661
     662if [ ! -f $TAR ]; then
     663
     664  cd /etc/openvpn/easy-rsa
     665
     666  . ./vars
     667  KEY_CN=$COMMON ./pkitool $COMMON
     668
     669  mv $FROMBASE/$COMMON.key $FROMBASE/$CLIENT.key
     670  mv $FROMBASE/$COMMON.crt $FROMBASE/$CLIENT.crt
     671
     672  tar -cf $TAR \
     673  $FROMBASE/ca.crt \
     674  $FROMBASE/$CLIENT.key \
     675  $FROMBASE/$CLIENT.crt \
     676  $FROMBASE/client.conf \
     677  $FROMBASE/up.sh
     678
     679  cp $TAR /home/$USER/$COMMON.tar
     680  chown $USER /home/$USER/$COMMON.tar
     681 
     682else
     683
     684  echo "$TAR was already created"
     685  exit 1
     686
     687fi
     688}}}
     689
     690Continue setup
     691{{{
     692## flag executable
     693sudo chmod +x /usr/local/bin/eduroam-client-openvpn-cert
     694
     695## fix /etc/openvpn/easy-rsa-/keys/packages permissions?
     696
     697## setup openvpn client config see example
     698sudo touch /etc/openvpn/easy-rsa/keys/client.conf
     699}}}
     700
     701#example code#/etc/openvpn/easy-rsa/keys/client.conf
    608702{{{
    609703client
    610704dev tap0
    611 proto tcp #! for flappering/instable routing on W.L. use TCP instead of udp <---
     705proto tcp #! for flappering/instable routing on W.L. use tcp instead of udp <---
    612706remote 172.17.169.67 53 #! location of openvpn server(radius-server/proxy & gateway) on the WireLessLeiden network! <---
    613707resolv-retry infinite
     
    621715up /etc/openvpn/up.sh
    622716script-security 2
    623 keepalive 10 180 #! these settings keep the tunnel alive on the W.L. network<---
    624 }}}
    625 
    626 # /usr/local/bin/eduroam-client-openvpn-cert
    627 {{{
    628 #!/bin/sh
    629 
    630 # put me in /usr/local/bin
    631 
    632 FROMBASE=./keys
    633 TOBASE=./keys/packages
    634 COMMON=$1
    635 TAR=$TOBASE/$COMMON.tar
    636 USER=$SUDO_USER
    637 CLIENT=client
    638 
    639 if [ ! $1 ]; then
    640   echo "no common name given"
    641   exit 1
    642 fi
    643 
    644 if [ ! -f $TAR ]; then
    645 
    646   cd /etc/openvpn/easy-rsa
    647 
    648   . ./vars
    649   KEY_CN=$COMMON ./pkitool $COMMON
    650 
    651   mv $FROMBASE/$COMMON.key $FROMBASE/$CLIENT.key
    652   mv $FROMBASE/$COMMON.crt $FROMBASE/$CLIENT.crt
    653 
    654   tar -cf $TAR \
    655   $FROMBASE/ca.crt \
    656   $FROMBASE/$CLIENT.key \
    657   $FROMBASE/$CLIENT.crt \
    658   $FROMBASE/client.conf \
    659   $FROMBASE/up.sh
    660 
    661   cp $TAR /home/$USER/$COMMON.tar
    662   chown $USER /home/$USER/$COMMON.tar
    663  
    664 else
    665 
    666   echo "$TAR was already created"
    667   exit 1
    668 
    669 fi
    670 }}}
    671 
     717keepalive 10 180 #! these settings keep the tunnel alive on the W.L. network <---
     718}}}
     719
     720==== 3.2 certnode client ====
     721The permanent and single setup instance for the openvpn "certnode" is done! When adding new/extra "eduroam" AP's to the network, generate a *.tar with unique set of keys/config for each AP with the following command, it ends up in the ~/ user home folder!
     722{{{
     723## replace $unique-ap-name with the name of your AP
     724sudo /usr/local/bin/eduroam-client-openvpn-cert $unique-ap-name
     725}}}
    672726
    673727= Old HOWTO =
     
    894948TODO:
    895949
     950
     951sunfire FIXEN?
     952Kan inloggen via public ssh key op sunny/sunfire.wleiden.net kan daarinderdaad het script starten maar vervolgens kan deze niks vinden. Lijkt erop dat de oude server certificaten niet aanwezig zijn en er kunnen dan geen afgeleide client certifcaten gemaakt worden tevens missen er config bestanden, dus alles moet opnieuw? Hoe maak ik dit lokaal na?
     953Namaken: https://help.ubuntu.com/community/OpenVPN
     954
     955Daarna kan je easyrsa "client" certificate aanmaken, enige opmerking daar is dat je KEY_CN=client voor het commando plaatst anders database error. Nu in de oude trend kun je het eduroam-cert script aanpassen en benodigde (geupdate)config bestanden in map key's plaatsen en daarin een map met packages aanmaken. Wanneer je dan het script draait maakt die inderdaad een tar bestand met alle instellingen.
     956TODO Verzin leuke manier om dit in een batch workflow voor veel AP's clients in te passen... denken we vanuit dit concept met tar bestand of moeten we iets maken dat meteen meedere parameters zoals multiSSID ip-adres hostname wifichannel etc meeneemt op basis van MAC adres? Nog uitzoeken welk deel er naar de server moet 4 bestanden ca dh1024 server.crt/key?
     957
     958geen down script?
     959
    896960Veiligheid aspect, radius authenticatie over zelf tunnels als de clients...
    897961