Registrieren  •  Login 
  
 
im Forum




Blog-Übersicht -> WPA2-Enterprise unter OpenWrt mit FreeRADIUS nutzen Dynamische VLANs mit FreeRADIUS und dem GS108Tv2 :: Kurz notiert: Hurricane Electric DNS und /56 Reverse-Zone
WPA2-Enterprise unter OpenWrt mit FreeRADIUS nutzen
Verfasst am: 19.06.2016, 06:00   Autor: killerbees19
WPA2-Enterprise
ACHTUNG: Dieser Beitrag wurde für FreeRADIUS v2.x geschrieben!

Für v3.x braucht es einige Anpassungen, die noch nicht enthalten sind.
Ob und wann dieser Beitrag überarbeitet wird, steht noch nicht fest… Sad

Im dritten und letzten Teil der kleinen Blogserie rund um das Thema IEEE 802.1X geht es endlich um drahtlose Netzwerke, besser bekannt als WLAN. Im ersten und zweiten Beitrag drehte sich alles um das kabelgebundene Netzwerk. Dieser Teil baut zumindestens auf dem FreeRADIUS Themenbereich aus dem ersten Blogpost auf, der unbedingt zuerst gelesen werden sollte! Etwas weiter unten sind dynamische VLANs auch hier ein Thema, der zweite Blogpost könnte auch dafür eine interessante Grundlektüre sein. Alle Beispiele wurden unter OpenWrt 15.05.1 auf einem WNDR3800 von Netgear getestet. Zu diesem Themenbereich gibt es zwar deutlich mehr brauchbare Anleitungen, trotzdem gehört es zu den vorherigen Themen dazu und vervollständigt den Einsatzbereich. Ich gehe davon aus, dass FreeRADIUS bereits einwandfrei läuft und jeder Leser mit EAP-TLS vertraut ist. Ich gehe zwar nochmals kurz auf den Verbindungsaufbau unter Linux und Windows ein, werde aber nicht mehr alles doppelt und dreifach erklären, was bereits früher ein Thema war. Alle gezeigten Konfigurationen sollten über SSH geändert werden. An einigen Stellen wird es auch für LuCI erklärt, alles ist damit aber noch nicht möglich. Die Screenshots von LuCI wurden mit luci-theme-openwrt erstellt, standardmäßig wird allerdings luci-theme-bootstrap installiert, das geringfügig anders aussieht.

Wie bereits im ersten Beitrag erwähnt: FreeRADIUS kann in der aktuell stabilen Version von OpenWrt wegen einem Kernelbug nicht verwendet werden! In den Snapshots oder der Vorgängerversion 15.05 klappt es angeblich einwandfrei. Das nur als kurze Randnotiz. Ich entschied mich deswegen für die Installation unter einem normalen Debian System. An der WLAN-Konfiguration ändert das nichts, die ist bis auf die IP-Adresse des RADIUS-Servers identisch.

Und wie auch schon zuvor: Ein Backup der OpenWrt Konfiguration ist Pflicht! Außerdem sollte man wissen, ob und wie der Failsafe-Modus beim eigenen Router funktioniert. Gerade bei den VLAN-Spielereien kann man sich sehr leicht aussperren. Und alle Änderungen sollten unbedingt über ein Netzwerkkabel durchgeführt werden! Es macht wenig Sinn über WLAN verbunden zu sein, wenn man genau diese Einstellungen ändert.



FreeRADIUS vorbereiten

Bei FreeRADIUS wird noch ein zusätzlicher Block für die IP-Adresse des Routers in der /etc/freeradius/clients.conf benötigt. Bei "secret" sollte wieder ein sicheres Passwort gewählt werden:

Code:
client 10.0.0.30 {
    secret = <...>
    require_message_authenticator = yes
    nastype = other
}



WLAN-Netzwerk umkonfigurieren

Zuerst muss das Paket wpad-mini deinstalliert und stattdessen die vollständige Version von wpad installiert werden. Denn nur diese bietet eine Unterstützung für EAP-TLS bei drahtlosen Netzwerken. Vorher sollte überprüft werden, ob noch genügend Speicherplatz verfügbar ist oder eventuell sogar Extroot benötigt wird. Anleitungen zu all diesen Themen gibt es im OpenWrt Wiki.

Code:
opkg update
opkg remove wpad-mini
opkg install wpad




Mein Router unterstützt mehrere WLAN-Netzwerke, ich kann somit einfach ein zusätzliches in der /etc/config/wireless hinzufügen. Wer diese Möglichkeit nicht hat, muss sein bestehendes Netzwerk anpassen:

Code:
config wifi-iface
    option device 'radio0'
    option mode 'ap'
    option ssid 'OpenWrt'
    option network 'lan'
    option encryption 'wpa2+ccmp'
    option auth_server '10.0.0.10'
    option auth_secret '...'


Bei auth_server muss die IP-Adresse vom RADIUS-Server eingetragen werden. auth_secret wird mit dem vorher gewählten Passwort aus der FreeRADIUS-Konfiguration befüllt.



Danach sollte das neue WPA2-Enterprise Funknetzwerk einsatzbereit sein! Mit dem nachfolgenden Befehl wird die WLAN-Konfiguration erneut eingelesen und alles gestartet:

Code:
wifi




Prinzipiell unterscheidet sich der nachfolgende Verbindungsaufbau kaum vom Kabelnetzwerk.


WLAN-Einwahl unter Linux

Wie bereits im ersten Beitrag kommt auch hier wieder Xubuntu 15.10 zum Einsatz. Der NetworkManager übernimmt die ganze Arbeit. Einfach das Netzwerk auswählen, dann sollte ein Dialog für die erforderlichen Daten erscheinen:



Die unschönen Einschränkungen für Multiuser-Systeme gelten teilweise auch hier, wenn es sich um eingeschränkte Benutzeraccounts handelt. Andernfalls hilft es enorm, wenn die Option "Alle Benutzer dürfen dieses Netzwerk verwenden" nicht gesetzt wird! Dann hat jeder Benutzer die Möglichkeit, seine eigenen Zugangsdaten zu hinterlegen. Das dürfte wesentlich besser funktionieren, als man es vom Kabelnetzwerk gewöhnt ist.

Wie es ohne NetworkManager bzw. ohne GUI funktioniert, kann man sich im ersten Teil der Blogserie ansehen: wpasupplicant - das ist zwar für kabelgebundene Netzwerke, lässt sich aber leicht adaptieren!


WLAN-Einwahl unter Windows

Hierzu kommt wieder Windows 7 Professional zum Einsatz. Zuerst muss der benötigte Dienst aktiviert werden, wie im ersten Beitrag ausführlichst beschrieben. Das CA-Zertifikat sowie die PFX-Datei müssen ebenfalls importiert werden. Danach wird es erneut unnötig kompliziert. Ein simpler Klick auf Verbinden reicht leider nicht. Die Einrichtung beginnt unter Systemsteuerung » Netzwerk und Internet » Drahtlosnetzwerke verwalten mit einem Klick auf Hinzufügen:



Ein Netzwerkprofil manuell erstellen und die erforderlichen Daten eintragen, danach die Verbindungsdetails ändern:



Der Rest ist identisch zum kabelgebundenen Netzwerk:



Danach sollte die Verbindung automatisch hergestellt werden, falls nicht kurz die Liste der verfügbaren Netzwerke aufrufen und auf Verbinden klicken. Spätestens jetzt sollte das altbekannte Popup im Benachrichtigungsbereich auftauchen, das erneut angeklickt werden muss:



Danach das Zertifikat auswählen, der Benutzername sollte bereits korrekt vorausgefüllt sein:



Mit mehreren Benutzern gibt es erfreulicherweise keine Probleme beim WLAN. Jeder User kann seine eigenen Zugangsdaten zur Anmeldung auswählen, die EAP-TLS Konfiguration muss nur einmal vorgenommen werden. Es braucht zur reinen Verwendung nicht einmal einen Adminaccount. Selbst das Wechseln von Benutzern sorgt für keine Probleme, die WLAN-Verbindung wird nach jeder Anmeldung für den aktuellen User neu aufgebaut.


WLAN-Einwahl unter Android

Ein kleiner Bonus, weil der Mac mangels Testgeräten auch hier nicht behandelt wird. Getestet auf einem alten Tablet mit CyanogenMod 9. Zuerst müssen das CA-Zertifikat und die PFX-Datei auf die SD-Karte kopiert werden. Wichtig dabei ist, dass sie im Hauptordner liegen müssen! /sdcard/ca.crt ist gültig, /sdcard/subdir/ca.crt allerdings nicht. Danach können die Zertifikate unter Sicherheit importiert werden: Von SD-Karte installieren (Zertifikate von SD-Karte installieren)



Danach kann die Verbindung wie gewohnt hergestellt werden, indem das Netzwerk in der Liste angetippt wird:



Alles ausfüllen, wie bereits unter Linux oder Windows:



Jetzt sollte die Verbindung problemlos aufgebaut werden können.


Spür die Kraft!
Dynamische VLANs beim WLAN

Das gehört zur Kategorie von Dingen, die ich selbst nicht für möglich gehalten hätte, aber es funktioniert tatsächlich seit dem Chaos Calmer Release! Very Happy

Es gibt dazu eine sehr ausführliche Anleitung im OpenWrt Wiki, die bereits alles erklärt: 802.1x Dynamic VLANs on an OpenWRT Router

Trotzdem wird es in diesem Blogpost noch einmal ausführlich behandelt. Es geht dabei darum, dass man mit einem einzigen WLAN-Netzwerk (einer SSID) mehrere getrennte Bereiche abbildet und somit nicht mehrere Funknetzwerke mit unterschiedlichen Zugangsdaten konfiguriert werden müssen. Aktuell besteht der größte Nachteil darin, dass die Netzwerknamen mit der VLAN-ID enden müssen. Wer also bereits verschiedene VLANs nutzt und die Netzwerke z.B. home, guest und server genannt hat, muss diese umbenennen! Dabei müssen auch die Firewallzonen angepasst werden. Um mir das zu ersparen habe ich bei meinem Test auf bestehende VLANs verzichtet und einfach drei neue erfunden: 2001, 2002 und 2003 mit den Netzwerknamen vlan2001, vlan2002 und vlan2003 sowie den dazu passenden Subnetzen 192.168.201.1/24, 192.168.202.1/24 und 192.168.203.1/24. Nachfolgend ein kurzer Überblick, welche Konfigurationen dafür notwendig waren. Die VLANs müssen dafür als Tagged am CPU-Port anliegen, welcher das ist und wie VLANs fürs das eigene Routermodell richtig konfiguriert werden, sollte dem OpenWrt Wiki entnommen werden. Die gezeigte Beispielkonfiguration kann nicht blind übernommen werden!

Der interne Switch sowie die Netze werden über die Datei /etc/config/network konfiguriert:

Code:
config switch_vlan
    option device 'switch0'
    option ports '5t'
    option vlan '2001'

config switch_vlan
    option device 'switch0'
    option vlan '2002'
    option ports '5t'

config switch_vlan
    option device 'switch0'
    option vlan '2003'
    option ports '5t'

config interface 'vlan2001'
    option type 'bridge'
    option proto 'static'
    option ifname 'eth0.2001'
    option ipaddr '192.168.201.1'
    option netmask '255.255.255.0'

config interface 'vlan2002'
    option type 'bridge'
    option proto 'static'
    option ifname 'eth0.2002'
    option ipaddr '192.168.202.1'
    option netmask '255.255.255.0'

config interface 'vlan2003'
    option type 'bridge'
    option proto 'static'
    option ifname 'eth0.2003'
    option ipaddr '192.168.203.1'
    option netmask '255.255.255.0'




Die neuen Firewallzonen werden wie gewohnt über die Datei /etc/config/firewall konfiguriert:

Code:
config zone
    option name 'vlan'
    option input 'ACCEPT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option network 'vlan2001'

config zone
    option name 'vlan'
    option input 'ACCEPT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option network 'vlan2002'

config zone
    option name 'vlan'
    option input 'ACCEPT'
    option forward 'REJECT'
    option output 'ACCEPT'
    option network 'vlan2003'

config forwarding
    option dest 'wan'
    option src 'vlan2001'

config forwarding
    option dest 'wan'
    option src 'vlan2002'

config forwarding
    option dest 'wan'
    option src 'vlan2003'


Falls die Zone der Internetanbindung nicht wan heißt, müssen die Einträge entsprechend angepasst werden.



Jetzt wird noch ein DHCP-Server für jede Schnittstelle eingerichtet. Dafür ist die Datei /etc/config/dhcp zuständig:

Code:
config dhcp 'vlan2001'
    option start '100'
    option leasetime '12h'
    option limit '150'
    option interface 'vlan2001'

config dhcp 'vlan2002'
    option start '100'
    option leasetime '12h'
    option limit '150'
    option interface 'vlan2002'

config dhcp 'vlan2003'
    option start '100'
    option leasetime '12h'
    option limit '150'
    option interface 'vlan2003'




Der letzte Schritt erfordert eine kleine Anpassung der Datei /etc/config/wireless.



Code:
config wifi-iface
    option device 'radio0'
    option mode 'ap'
    option ssid 'OpenWrt'
    option network 'lan'
    option encryption 'wpa2+ccmp'
    option auth_server '10.0.0.10'
    option auth_secret '...'

    option dynamic_vlan '1'
    option vlan_naming '0'
    option vlan_tagged_interface 'eth0'
    option vlan_bridge 'br-vlan'


Nur die letzten vier Zeilen sind neu, der Rest wurde ganz am Anfang bereits gezeigt und erklärt.

vlan_bridge enthält den Netzwerknamen der vorher angelegten Schnittstellen. Er wird automatisch durch die VLAN-ID ergänzt. Aus br-vlan wird dadurch z.B. br-vlan2001!

vlan_tagged_interface ist die grundlegende Schnittstelle des internen Switches. Das kann sich von Gerät zu Gerät unterscheiden! Ein Blick ins OpenWrt Wiki sollte zeigen, wie sie beim eigenen Router heißt.

Für FreeRADIUS muss eventuell noch die VLAN-ID in der Datei /etc/freeradius/users korrigiert werden:

Code:
"test-1" Auth-Type := "EAP"
    Tunnel-Type = VLAN,
    Tunnel-Medium-Type = IEEE-802,
    Tunnel-Private-Group-Id = "2001"


Danach ist es einfacher, wenn der Router neu gestartet wird. Theoretisch sollte jetzt alles funktionieren. Der WLAN-Login über EAP-TLS sollte wie vorhin ohne Probleme klappen. Ob man sich im richtigen VLAN befindet, merkt man an der vergebenen IP-Adresse und über logread:

Zitat:
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 IEEE 802.11: authenticated
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 IEEE 802.11: associated (aid 1)
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 RADIUS: VLAN ID 2001
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 RADIUS: starting accounting session XXXXXXXX-00000001
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 IEEE 802.1X: authenticated - EAP type: 13 (TLS)
daemon.info hostapd: wlan0-3: STA 00:11:22:33:44:55 WPA: pairwise key handshake completed (RSN)


Falls der RADIUS-Server keine VLAN-ID mitsendet, wird das eingetragene Standardnetzwerk verwendet, bei meinem Beispielcode wäre das lan.


Abschließende Worte

Eine Sache muss unbedingt noch beachtet werden: EAP-TLS ist auf eine korrekte Uhrzeit bei den Clients angewiesen! Egal ob über LAN oder WLAN, stimmt die Uhrzeit nicht, wird die Authentifizierung scheitern. Gerade bei Embedded-Geräten ohne RTC, die sich die aktuelle Zeit aus dem Netzwerk holen, kann das zu einem echten Problem werden. Selbst mein Tablet ist so ein Kandidat, da es die Uhrzeit nicht mehr über mehrere Tage hinweg hält.

Unabhängig davon ist die vorgestellte Lösung äußerst nett. Ein einziger LAN-Port oder ein WLAN-Funknetzwerk reichen aus, um Clients in das passende VLAN zu stecken. Aber auch ohne diesem Wunsch bietet die Authentifizierung mehr Schutz, da Ethernetports nicht mehr für jeden offen stehen und WLAN-Zugangsdaten nicht mehr für dutzende User gleich sind. Wer noch mehr aus dem Setup herausholen möchte, kann sich den Accounting-Servermodus von FreeRADIUS ansehen. Da schlägt das Herz bei einigen gleich noch höher… Wink

WPA2-Enterprise ist bei den Betriebssystemen viel besser umgesetzt, bei Kabelnetzwerken gibt es deutlich mehr Probleme, sobald mehrere Benutzer den gleichen Computer nutzen. Dafür kann Linux seine Stärken ohne GUI so richtig ausspielen und die Anmeldung für den ganzen Computer ausführen, wo Windows offenbar etwas hinterherhinkt. Die Verwendung von EAP-TLS am Switch sollte man daher von Fall zu Fall abwägen, bei WLAN kann ich den Einsatz hingegen nach aktuellem Stand bedenkenlos empfehlen!

Ich hoffe, dass alle drei Beiträge informativ waren, falls ich ein wichtiges Thema ausgelassen habe, bitte in den Kommentaren melden. Das gilt natürlich auch für Verbesserungsvorschläge oder Probleme, wofür das Forum ebenfalls zur Verfügung steht.

Dieser Beitrag wurde insgesamt 1 mal geändert. Zuletzt am 19.06.2018, 14:51.


Autor Nachricht
Für diesen Beitrag können zur Zeit keine neuen Kommentare verfasst werden.

Kontaktiere den Autor des Beitrages, falls du Fragen dazu hast.


 

Verwendete Zeitzone: CET (Europe/Berlin)
Aktuelles Datum & Uhrzeit: 11.12.2024, 00:27
Nach oben
Valid HTML 4.01 Transitional
Valid CSS!

Hosted by netcup
 
 
[ happytec.at | blog.happytec.at | forum.happytec.at | esports.happytec.at ]