wiki:WikiStart

Version 41 (modified by walter, 11 years ago) ( diff )

--

eduroam 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 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 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 bijna, om de volgende rede. 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 direct het netwerk/internet gebruiken. Dit allemaal zonder dat gebruiker ook maar iets aan zijn of haar eigen apparaat en of instellingen hoeft te veranderen! Vergelijkbaar met mobiele telefoons die tijdens het telefoongesprek in een auto rit van stad A naar B diverse mobiele toegangspunten (Telefoon Cells) passeren, zonder dat de gebruiker merkt dat zijn verbinding overschakelt.

Dit eduroam systeem maakt het als onderwijsinstelling mogelijk om in een strikter wordend klimaat van beveiliging, geslotenheid en aansprakelijkheid toch verantwoordelijk een dienst dat open en toegankelijk is van karakter te bieden.

Kortom het begrip eduroam betekent voor "gebruikers" zoals studenten en medewerkers dat ze zonder poespas gebruik kunnen maken van het internet via het netwerk van hun eigen of gelieerde instelling. Het is voor hen niet meer dan de draadloze netwerknaam van de hotspot die ze aantreffen op hun laptop en of smartphone wanneer ze hiermee succesvol verbinden.

Betrokkenheid van Wireless Leiden?

De 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. 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 onafhankelijk en "open" netwerk van Wireless Leiden dat zich buiten deur huisvest. Dit maakt het exploiteren van eduroam draadloze dekking via het Wireless Leiden netwerk in publieke ruimte niet alleen eenvoudig, flexibel en betaalbaar maar kan dat zelfs 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 (sponserende) onderwijsinstelling als het netwerk van Wireless Leiden toe. Dit in tegenstelling tot de vaak beperkt inpandige exploitatie door onderwijsinstellingen van hun eigen geisoleerde fysieke en gesloten infrastructuur, 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.

NEW HOWTO

technische en organisatorische benodigdheden

Voor het aanbieden van de eduroam infrastructuur op het Wireless Leiden netwerk is gekozen voor twee verschillende type installaties met idem verschillende functionaliteit namelijk:

  1. "AccesPoints" meerdere (types) die als "eduroam" multiSSID hotspot zullen fungeren via OpenWRT.
  2. "Radius-Server/Proxy & gateway" een enkele centraal gepositioneerde server via FREEBSD.

De verbinding tussen deze twee typen installaties word via OpenVPN tunnels beveiligd en geencrypt opgezet waardoor het mogelijk onveilige karakter van het open Wireless Leiden netwerk 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/surfnet/surf-foundation identityprovider koppel server.
  2. ip whitelisting voor toegang tot die server.
  3. inlog/account/"USER"-gegevens voor gebruikers van een aan eduroam gelieerde onderwijsinstelling.
  4. certnode die het creeeren van certificaten en config bestanden voor "openvpn" faciliteert.
  5. build/test/flash-machines voor config en firmware (ssh scp sshpass telnet etc)
  6. internet?

Met deze middelen en een compleet voor zover mogelijk lineaire stap voor stap handleiding is een plug en play exploitatie van eduroam toegangspunten waar dan ook binnen het Wireless Leiden netwerk snel en eenvoudig te realiseren. Voor het opleveren van veel AP's (batches) met unieke instelligen zal er uiteindelijk een configuratie script volgen waarmee op basis van het MAC-adres van het AP een aantal unieke parameters meegegeven kunnen worden voor de configuratie: MultiSSIDname, hostname, kanaal, ipadres(bedraad/draadloos), etc... vergeet de unieke openvpn client certificaten niet, tevens zouden er per AP unieke client gegevens om met de radius-proxy/server te communiceren gemaakt kunnen worden.

Door het gebruik van het opensource software OpenWRT, FREEBSD en gerelateerde software projecten, is deze setup niet gelimiteerd aan een enkel merk en of type hardware. Een kleine aanpassing aan de configuratie bestanden zou een vereiste kunnen zijn voordat het op ander hardware platvorm werkt. Deze handleiding zal overigens alleen toegespitst zijn op Ubiquiti AP's zoals Bullet m2 HP/ Nano station/loco m2 en via-epia-m/alixboard als radiusproxy/server & gateway. Als uitgangssituatie om deze handleiding uit te voeren word ubuntu 12.04LTS AMD64 gebruikt!

1 setup eduroam AccessPoints

1.1 hardware & software

Met deze flexibele fundering is het doel om accesspoints die maar in sumiere opzichten van elkaar te verschillen zo gemakkelijk en snel mogelijk in grote hoeveelheden geautomatiseerd te kunnen configureren. Het verschil tussen de accesspoints komt deels uit hoek van beveiliging, deels uit de hoek van locatie en natuurlijk de toepassing. Als een enkel accesspoint gehackt is kan deze los van de andere accesspoint toegang tot de radius proxy ontzegt worden (door zijn openvpn sleutel in te trekken) daardoor 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" heet en de eduroam accesspoint bij de Hortus Botanicus als multi-SSID "ap.hortusbotanicus.wleiden.net". Als toepassing kan het wenselijk zijn kleine / goedkopere AP's te monteren op plaatsen waar grote AP's met losse sector antennes niet mogelijk zijn en natuurlijk niet te vergeten de beschikbare wifi kanalen 1,6,11. Voor ieder AP zullen unieke openvpn certifacten gebruikt worden. Deze voorbeelden duiden erop dat er toch kleine specifieke wijzigingen tussen de AccessPoints configuratie bestanden wenselijk zijn.

In tegenstelling tot de oude handleiding(onderaan deze pagina) word momenteel gebruik gemaakt van een fixed OpenWRT releases waaronder Backfire 10.03.1 of zelfs Atitude Adjustment 12.0.9 final. Dit niet alleen omdat het bouwen van een custombuild onnodig is geworden omdat "openvpn" inmiddels als pakket direct gebruiksklaar en beschikbaar is voor de 10.03.1 / 12.09 releases. Maar vooral omdat compileren van een openwrt build omgeving en image erg veel tijd, moeite en veel variabelen introduceert in een al/nog experimentele infrastructuur. Met fixed releases kan in minder dan 5 minuten direct een werkend accesspoint prototype gerealiseerd worden en dat zelfs voor verschillende type accesspoints (mits daar openwrt images voor zijn)! Wel zou via custom gecompileerde releases het geheugen gebruik en processor belasting geoptimaliseerd kunnen worden door het weglaten van ongebruikte pakketten. Update, inmiddels is het ook al direct mogelijk om via AirOS software dat standaard al op Ubiquiti AP's aanwezig is een wpa2 enterprise met radius client functie maken (enkel openvpn ontbreekt)!

Het AccessPoint zal met multiSSID ingesteld worden en bridged al het internet verkeer van de beveiligde "eduroam" SSID naar een externe router en het verkeer van de open "ap.voorbeeld.wleiden.net" SSID via interne NAT/routing. TODO Deze laatste zou ook direct moeten bridgen naar de eth0/wan interface, maar daarvoor zijn momenteel de firewall regels te generiek??? en word deze extra bridge geblokkeerd door de br+ wildcard??? De eth0 interface met eigen ip word br-eth0 met eigen ip... hierdoor kan openvpn/rest de boel niet meer begrijpen? Wanneer dit lukt dan bridged deze bedraad het verkeer naar een Wireless Leiden node die een eigen Captive Portal en router/gateway draait hiermee kan de NAT/Routing en bijbehorende aanpassingen van het AP op de schop!

1.2a fixed OpenWRT release

The following shell commands will first locally download the OpenWRT "Backfire" image and its packages, than flash the image, configure its packages, backup original config files so you must use them as actual template config files for your own custom setup! TODO Instead of the Backfire 10.03.1 release, Attitude Adjustment 12.09 can be used, just change the download links according to your needs for release and hardware image!

### prepare a workfolder to setup all software and config files
mkdir ap-bullet
cd ap-bullet

## download openwrt bullet firmware image
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/openwrt-ar71xx-ubnt-bullet-m-squashfs-factory.bin

### openwrt bullet packages
mkdir packages

## download wpad since included wpad-mini does not support EAP!
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/wpad_20111103-2_ar71xx.ipk -P packages/

## download openvpn packages
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/openvpn_2.1.4-3_ar71xx.ipk -P packages/
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/kmod-tun_2.6.32.27-1_ar71xx.ipk -P packages/
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/libopenssl_0.9.8r-1_ar71xx.ipk -P packages/
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/zlib_1.2.3-5_ar71xx.ipk -P packages/
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/liblzo_2.04-1_ar71xx.ipk -P packages/

# download optional packages
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/nano_2.2.6-1_ar71xx.ipk -P packages/
wget http://downloads.openwrt.org/backfire/10.03.1/ar71xx/packages/libncurses_5.7-2_ar71xx.ipk -P packages/

### flash firmware
# put Ubiquiti device in tftp recover mode
# unplug/poweroff the device
# power on "while keeping the reset button pressed" for atleast 8/15 sec!
# when blinking red/green the reset button can be released
# the device is now in tftp mode
# todo get in tftp without reset button... but via triggering mtd?

## use / install tftpclient utility to flash the openwrt image
tftp 192.168.1.20
	binary
        trace
        put openwrt-ar71xx-ubnt-bullet-m-squashfs-factory.bin
        quit

## use telnet to setup a password for the ssh session 
telnet 192.168.1.1
        passwd #type a new password
        exit

## use scp to upload all packages for install
scp -r packages root@192.168.1.20:/tmp/

## use ssh to uninstall wpad and install other packages
ssh root@192.168.1.20 "opkg remove wpad-mini;install /tmp/packages/*.ipk;exit"

## use scp to backup current config files to local pc for use as template
mkdir backup
scp -r root@192.168.1.20:/etc backup/

For deploying huge quantity (batch(es)) of AP's the following settings are general but some may differ among AccesPoints like: multiSSID,ipadress(wired/wireless),wifichannel,band(a/bg),hostname,etc. In the following config files those parts that makes the uniqueness will be coloured so its easier to identify and customize. Use the files from the backup you just made as a template, since the example config files which will follow after this paragraph are hardware-type/image specific! That means that my config files are specific for the Ubiquiti bullet2m hp, and for instance will not work on linksys broadcom based AP hardware(because wifi interfaces are configured using different names and parameters)! So only copy/paste change the needed parts, that differ with your templates!

## create folder structure for customized config files!
mkdir -p customize/etc/config
mkdir -p customize/etc/init.d
mkdir -p customize/sbin
mkdir -p customize/usr/sbin

#/etc/config/dhcp

config dnsmasq
	option domainneeded	1
	option boguspriv	1
	option filterwin2k	0  # enable for dial on demand
	option localise_queries	1
	option rebind_protection 1  # disable if upstream must serve RFC1918 addresses
	option rebind_localhost 1  # enable for RBL checking and similar services
	#list rebind_domain example.lan  # whitelist RFC1918 responses for domains
	option local	'/lan/'
	option domain	'lan'
	option expandhosts	1
	option nonegcache	0
	option authoritative	1
	option readethers	1
	option leasefile	'/tmp/dhcp.leases'
	option resolvfile	'/tmp/resolv.conf.auto'
	#list server		'/mycompany.local/1.2.3.4'
	#option nonwildcard	1
	#list interface		br-lan
	#list notinterface	lo
	#list bogusnxdomain     '64.94.110.11'

config dhcp lan
	option interface	lan
	option start 	100
	option limit	150
	option leasetime	12h

config dhcp wan
	option interface	wan
	option ignore	1

config dhcp wlgst
        option interface        wlgst
        option start	5
	option limit	252
	option leasetime	1h

#/etc/config/firewall

config defaults
	option syn_flood	1
	option input		ACCEPT
	option output		ACCEPT 
	option forward		REJECT
# Uncomment this line to disable ipv6 rules
#	option disable_ipv6	1

config zone
	option name		lan
	option network		'lan'
	option input		ACCEPT 
	option output		ACCEPT 
	option forward		REJECT

config zone
	option name		wan
	option network		'eth0'
	option input		REJECT
	option output		ACCEPT 
	option forward		REJECT
	option masq		1 
	option mtu_fix		1

# Allow multiple ssid accespoint
config zone
	option name		wlgst
	option input		REJECT
	option forward		REJECT
	option output		ACCEPT

# Changing wan > eth0 made all these rules active!
# Therefor no ssh access anymore from wan and lans is not available
# Allow SSH
config rule
        option src              wan
        option proto            tcp
        option dest_port        ssh
        option target           ACCEPT

config forwarding
        option src              lan
        option dest             wan

# Allow wlgst to internet wan/eth0?
config	forwarding
	option src	wlgst
	option dest	wan

# Allow wlgst  -> Router 
# Client DNS queries ordinate from dynamic UDP ports (>1023) 
config 	rule 
	option src 		wlgst 
	option dest_port 	53 
	option proto 		tcpudp 
	option target 		ACCEPT

# Allow DHCP Guest -> Router 
# DHCP communication uses UDP ports 67-68 
config 	rule 
	option src	wlgst 
	option src_port 67-68 
	option dest_port	67-68 
	option proto	udp 
	option target 	ACCEPT

# We need to accept udp packets on port 68,
# see https://dev.openwrt.org/ticket/4108
config rule
	option name		Allow-DHCP-Renew
	option src		wan
	option proto		udp
	option dest_port	68
	option target		ACCEPT
	option family		ipv4

# Allow IPv4 ping
config rule
	option name		Allow-Ping
	option src		wan
	option proto		icmp
	option icmp_type	echo-request
	option family		ipv4
	option target		ACCEPT

# Allow DHCPv6 replies
# see https://dev.openwrt.org/ticket/10381
config rule
	option name		Allow-DHCPv6
	option src		wan
	option proto		udp
	option src_ip		fe80::/10
	option src_port		547
	option dest_ip		fe80::/10
	option dest_port	546
	option family		ipv6
	option target		ACCEPT

# Allow essential incoming IPv6 ICMP traffic
config rule
	option name		Allow-ICMPv6-Input
	option src		wan
	option proto	icmp
	list icmp_type		echo-request
	list icmp_type		destination-unreachable
	list icmp_type		packet-too-big
	list icmp_type		time-exceeded
	list icmp_type		bad-header
	list icmp_type		unknown-header-type
	list icmp_type		router-solicitation
	list icmp_type		neighbour-solicitation
	option limit		1000/sec
	option family		ipv6
	option target		ACCEPT

# Allow essential forwarded IPv6 ICMP traffic
config rule                                   
	option name		Allow-ICMPv6-Forward
	option src		wan
	option dest		*
	option proto		icmp
	list icmp_type		echo-request
	list icmp_type		destination-unreachable
	list icmp_type		packet-too-big
	list icmp_type		time-exceeded
	list icmp_type		bad-header
	list icmp_type		unknown-header-type
	option limit		1000/sec
	option family		ipv6
	option target		ACCEPT

# include a file with users custom iptables rules
config include
	option path /etc/firewall.user

#/etc/config/network

# Copyright (C) 2006 OpenWrt.org

config interface loopback
	option ifname	lo
	option proto	static
	option ipaddr	127.0.0.1
	option netmask	255.0.0.0

config interface eth0
	option ifname	eth0
#	option type 	bridge
	option proto	static
	option ipaddr	172.16.6.13
	option netmask 	255.255.255.248
	option gateway	172.16.6.9
	option dns	172.16.6.9	
	
config interface lan
	option ifname 	wlan0
	option type 	bridge

config interface wlgst
#	option ifname	wlgst
#	option type	bridge
	option proto	static
	option ipaddr	192.168.5.1
	option netmask	255.255.255.0

#/etc/config/system

config  system
	option  hostname  eduroam-bullet
	option  timezone  CET-1CEST,M3.5.0,M10.5.0/3

config  timeserver ntp
	list server     0.openwrt.pool.ntp.org
	list server     1.openwrt.pool.ntp.org
	list server     2.openwrt.pool.ntp.org
	list server     3.openwrt.pool.ntp.org

#/etc/config/wireless

config wifi-device  radio0
	option type     mac80211
	option channel  5
	option macaddr	MACADDRESS
	option hwmode	11g
	option htmode	HT20
	list ht_capab	SHORT-GI-40
	list ht_capab	TX-STBC
	list ht_capab	RX-STBC1
	list ht_capab	DSSS_CCK-40

config wifi-iface
	option device   radio0
	option network	lan
	option bridge	br-lan
	option mode	ap
	option ssid	eduroam
	option encryption wpa2
        option server   192.168.4.1
        option key	somesecret

config wifi-iface
        option device   radio0
        option network  wlgst
        option mode     ap
        option ssid     ap.haaswijk.wleiden.test
        option encryption none

#/etc/init.d/openvpn

#!/bin/sh /etc/rc.common

CONFIG=/etc/openvpn/client.conf
ACTION=$1
START=99

f_start() {
  /usr/sbin/iopenvpn --config ${CONFIG} --daemon &
  echo ${START}
}

case $ACTION in
  *)    f_start ;;
esac

#/etc/init.d/sysntpd

#!/bin/sh /etc/rc.common
# Copyright (C) 2011 OpenWrt.org

START=98

BIN=/usr/sbin/ntpd
PID=/var/run/sysntpd.pid

GATEWAY=$(netstat -rn | awk '/(0.0.0.0.*G)/ { print $2 }')
MAINSER="172.16.4.46"

peers="$GATEWAY"

start() {
	[ -x $BIN ] || exit 0

	if [ -n "$peers" ]; then
		local peer
		local args="-n"
		for peer in $peers; do
			append args "-p $peer"
		done

		start-stop-daemon -x $BIN -m -p $PID -b -S -- $args
	fi
}

stop() {
	service_kill ${BIN##*/} $PID
	rm -f $PID
}

#/etc/firewall.user

# This file is interpreted as shell script.
# Put your custom iptables rules here, they will
# be executed with each firewall (re-)start.


iptables -I INPUT -i tap+ -j ACCEPT
iptables -I FORWARD -i tap+ -j ACCEPT
iptables -I OUTPUT -o tap+ -j ACCEPT
iptables -I FORWARD -o tap+ -j ACCEPT

iptables -I INPUT -i br+ -j ACCEPT
iptables -I FORWARD -i br+ -j ACCEPT
iptables -I OUTPUT -o br+ -j ACCEPT
iptables -I FORWARD -o br+ -j ACCEPT

iptables -t nat -A POSTROUTING -o br-lan -j MASQUERADE

#/etc/inittab

::sysinit:/etc/init.d/rcS S boot
::shutdown:/etc/init.d/rcS K stop
#tts/0::askfirst:/bin/ash --login
#ttyS0::askfirst:/bin/ash --login
#tty1::askfirst:/bin/ash --login

#/etc/rc.local

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.
if [ -L "/dev/random" ];
then
        echo 'Random-Link already OK'
else
        echo 'Random-Link not existing, creating,...'
        rm -f /dev/random 2> /dev/null
        ln -s /dev/urandom /dev/random
fi
/bin/sleep 5
/usr/sbin/ntpd -q -p pool.ntp.wleiden.net
exit 0

The following files need to be created but are common on all ap's that are used for this setup.

#/sbin/wifi-update

#!/bin/sh

MAC=$(/sbin/wifi detect | /usr/bin/awk '/macaddr/ { print $3 }')

/bin/sed -i "s/MACADDRESS/$MAC/g" /etc/config/wireless

#/usr/sbin/iopenvpn

#!/bin/sh

pid() {
  echo $(ps | awk '/\/usr\/sbin\/openvpn/ { print $5 }')
}
 
while [ true ]; do
  if [ -z "$(pid)" ]; then
    ifconfig eth0 | grep -q inet\  || udhcpc
    /etc/init.d/sysntpd start > /dev/null
    /usr/sbin/openvpn $@
  fi
  sleep 10
done

##TODO openvpn key/certificates # upload openvpn config and keys (keys.tar) # run this script from local pc shell sh upload

## install config files to correct location # only network and system may be specific scp -r customize/ root@192.168.1.100:/

## use ssh to configure final settings ssh root@192.168.1.20

## openvpn specific config chmod +x /etc/openvpn/up.sh /etc/init.d/openvpn enable

## activate wifi to add macadress to config file /sbin/wifi stop #/sbin/wifi start #/bin/sleep 5 /sbin/wifi detect /bin/sleep 10 chmod +x /sbin/wifi-update /sbin/wifi-update #/bin/sleep 5 # check / correct following in chmod+x /etc /sbin /usr/sbin reboot;exit

}}}

1.2b "quick&dirty" Ubiquiti AirOS

De huidige 5.5.4 Ubiquiti AirOS software maakt het mogelijk het AP direct als radius "client" te laten fungeren. Dit is handig voor snel testen of uitrollen van inpandige afgeschermde infrastructuur waarbij het encrypten van het radius en internet verkeer via openvpn niet nodig is! Het is zo eenvoudig dat je enkel na het resetten van het apparaat, hem als normaal AP configureert(vergeet AirMax niet uit te zetten!) dan geef je bij Wireless security geen WPA2-"PSK" maar "EAP" op. Direct verschijnt er een optie om een Authenticating radius server/proxy op te geven met IP:PORT:secret wanneer deze ingevuld worden is er direct al een werkend wpa2 enterprise AP oftwel eduroam! Verdere setup met NAT/Bridging/VLAN is wel aan te beleven maar moet nog uitgezocht worden.

2 setup RadiusServer/Proxy & gateway

Moet nog uitgezocht / getest worden, zie oud voorbeeld!!! Wel kan ik specifieke veranderingen van config bestanden en opties/parameters toevoegen aan de huidige setup! zoals openvpn server settings /usr/local/etc/rc.d opstart bestanden en parameters etc.

2.1 Install FreeBSD 8.3 and services

TODO voltooid, oude handleiding geupdate maar zeer gebrekkig en functioneerd nog niet waarschijn firewall rules...

2.2 Install debian 6 wheezy and services

TODO Inmiddels is er een op debian 6 wheezy gebasseerde release nagebouwd, deze werkte tijdelijk en moet nog uitgeschreven worden.

certnode sunfire uitzoeken

ping sunny.wleiden.net / 172.16.4.46 Heeft huub destijds uitgevoerd! Waar en hoe dat plaatsvind is nog onduidelijk

Old HOWTO

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.

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

  1. A. 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 B (recovery mode) with a ubnt image. bin/ar71xx/openwrt-ar71xx-ubnt-bullet-m-squashfs-factory.bin

  1. 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.
    5. On your computer go to the location of the OpenWRT build for your platform
      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
  1. Default password: Edur0@m
  1. Creating unique vpn info:
  1. Make up a fancy name, in this manual it will be 'name' or <name>
  2. Login into a certnode (For wl:sunfire)
  3. Execute from your own user: sudo eduroam-cert <name>
  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
    
  1. in you home directory "on cert node sunfire itself" there will be a file called <name>.tar, copy this file to a network reachable the bullet locally
  2. untar it:
    tar -xf <name>.tar
    
  3. In the current directory there will now be a folder called keys, cd in to it
  4. execeute:
    sh upload <local ip of bullet>
    
  5. Enter the root password twice, after which your bullet will reboot
  1. 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 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.3(i386), minimal install

  1. Installeer de volgende software, niet alleen "portsnap" maar ook "make" heeft een werkende internetverbinding nodig!!! (log in als root)

fetch ports

 $ portsnap fetch extract

installeer subversion

 $ make -C /usr/ports/devel/subversion install clean BATCH=yes

installeer openvpn

 $ make -C /usr/ports/security/openvpn-devel install clean BATCH=yes

installeer freeradius

 $ make -C /usr/ports/net/freeradius2 install clean BATCH=yes

installeer isc-dhcp42-server

 $ make -C /usr/ports/*/isc-dhcp42-server install clean BATCH=yes

Installed programms/binaries need to be defined as global? svn command not found /usr/local/bin/svn #does exist!!!

checkout openvpn-wl

mkdir /usr/local/etc/openvpn #folder niet aanwezig
/usr/local/bin/svn co http://svn.wirelessleiden.nl/svn/code/eduroam-bullet/trunk/openvpn-wl/ 
/usr/local/etc/openvpn

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 

###edit only three files under /usr/local/etc/freeradius: users, eap.conf, and clients.conf

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
  1. 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"

# not described but exist in svn config

# Nodig voor bridges
cloned_interfaces="bridge0"

#gateway related
pf_enable="YES" #??? Firewall rules
dhcpd_enable="YES" #??? DHCP server 
ntpd_enable="YES" #??? Network Time for certificate validity

TODO:

TODO TFTP without 15sec pen reset

default AIROS reboot into tftp mode parameter 5.5.4 mtd cat /proc/mtd

In dhcp mode achter een nat router werkt sysntpd niet meer, #/etc/config/network dhcp + peerdns /etc/config/dhcp disable rebinding de bovenste /etc/rc.local sleep 5 ntpd -q -p pool.ntp.wleiden.net

Proxy openvpn multi clients with same key duplicate-cn #in de server aanzetten werkt! uitzoeken radiusd paramter client to client ping???

nanostation 5ghz openwrt dif image /etc/config/wireless 11na channel 32-140 systemname dhcp

wlan channels voor 5ghz ?

Attachments (1)

Download all attachments as: .zip

Note: See TracWiki for help on using the wiki.