Router mit DD-WRT als RADIUS-Clients

Aus dem IServ-Wiki
Version vom 27. Februar 2017, 00:48 Uhr von Felix Jacobi (Diskussion | Beiträge) (→‎Surfen auf bestimmte Gruppen beschränken: : Veraltet, gibt jetzt ein Recht aus dem WLAN-Modul dafür)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Die Konfiguration von Windows-Clients für RADIUS ist nicht gerade einfach und selbsterklärend. Als Clients können auch WLAN-Router mit einer speziellen Firmware fungieren. Das Endgerät des Nutzers benötigt außer einem Browser nichts, um sich am WLAN anzumelden.

Grundprinzip

Das folgende Schema zeigt die Funktion und die beteiligten Komponenten:

Chillispot iserv.png

Ein Client, der nur über einen Browser verfügen muss (Handy, Tablet, Notebook...) verbindet sich über WLAN mit einem Router. Er erhält eine IP-Adresse, jedoch werden alle Anfragen an eine bestimmte Loginseite auf denm IServ weitergeleitet. Es können zunächst keine anderen Seiten geöffnet werden. Auf der Loginseite (iserv_hotspot.php) gibt der Benutzer nun seine Zugangsdaten über HTTPS ein. Diese werden durch das RADIUS-Modul auf dem IServ gegen dessen Benutzerdatenbank /etc/shadow geprüft. Wenn das erfolgreich ist, gibt der Router das Internet für den Client frei, indem er die Client-IP jetzt komplett routet. Damit die Lösung richtig bequem wird, sind aber noch einige Entwicklungsarbeiten am WLAN-Modul notwendig, die zumindest die hier noch beschriebene IServ-Konfiguration zu automatisieren vermögen.

Warnung

Die hier vorgestellte Konfiguration ist - wenn sie läuft - sehr attraktiv für Nutzer, jedoch nicht trivial und schon gar nicht ausschließlich über die IServ-Oberfläche vornehmbar. Sie hat den Vorteil, dass sie nur einmal zentral vorgenommen werden muss und die Clients gar nicht mehr eingerichtet werden müssen. Sie setzt aber Grundkentnisse auf der Konsole und "Mut zum Root" voraus.

Konfiguration

Als erstes muss das WLAN-Modul installiert sein.

Welche Daten werden benötigt?

Für die Konfiguration der einzelnen Bestandteile benötigt man folgende Variablen:

Angabe Funktion Quelle
<secret> Absicherung der Kommunikation zwischen Client und RADIUS Vom RADIUS-Modul bei Installation abgefragt
<uam_secret> Absicherung der Kommunikation zwischen Webserver und ChilliSpot frei wählbar
<radius_ip> IP des Freeradius-Servers typischerweise IP des internen Netzdevices von IServ (192.168.0.1 bzw. 10.0.0.1)
<login_url> URL der ChilliSpot-Loginseite auf dem IServ <url_zu>/hotspot.php
<nas_id> Name des Hotspots (notwendig) frei wählbar
<dns_ip> IP des Gateways ins Internet (meist IServ-IP) vgl. IServ-IP (192.168.0.1 bzw. 10.0.0.1)


hotspot.php

Die in dem Archiv hotspot.zip enthaltene php-Datei ist für den Gebrauch von DD-WRT nötig. Sie wird erst einmal konfiguriert. Dabei öffnet man diese mit einem Text-Editor. Nun muss man die Variablen wie folgt anpassen:

Variable Funktion Quelle
$uamsecret Absicherung der Kommunikation zwischen Webserver und ChilliSpot <uam_secret>
$ChilliSpot Angezeigter Name im Loginscript Bsp.: WLAN der (Schulname)

Weiter muss nun die hotspot.php auf die hochladen. Dafür muss auch php für die Website aktiviert sein, wenn es noch nicht aktiviert ist, kann man es nach der Anleitung PHP für die Homepage freischalten aktivieren.


Konfiguration auf dem IServ

Freeradius

Das WLAN-Modul verwendet zurzeit eine Konfiguration, die notwendig ist, um Passworte zu verarbeiten, die ein Windows-Client direkt verschlüsselt. Folgerichtig werden diese gegen Samba auf IServ geprüft. Im Testing-Zweig ist eine Freeradius-Konfiguration vorhanden, die per unix-Modul auch gegen /etc/passwd prüft. Derzeitig wird das WLAN-Modul mit dd-wrt reibungslos an dem Gymnasium Neue Oberschule aus Braunschweig und auch am Clemens-August-Gymnasium in Cloppenburg eingesetzt.

Konfiguration des Routers

Geeignete Hardware

Auf dem Router muss eine spezielle Firmware (DD-WRT) installiert werden. Diese enthält bereits den ChilliSpot-Dienst mit einem Web-Interface zur Konfiguration. Welche Router in Frage kommen, kann auf der Internetseite des DD-WRT-Projektes recherchiert werden: Webseite von DD-WRT. Dort sucht man in der Router-Database nach kompatiblen Geräten - das sind erstaunlich viele alte und neuere Router. Bei jedem Modell befindet sich eine Anleitung, wie die neue Firmware installiert werden kann und welche Firmwaredatei sich eignet.

Empfehlenswerte Router:

  • Linksys WRT54GL (lange Zeit das Standardmodell für jede Art von OpenSource-Firmware, mit 50€ derzeitig in einer guten Preisklasse und erfolgreich an der Neuen Oberschule in Braunschweig getestet)
  • TP-Link TL-WR1043ND (viel Leistung für kleines Geld, z.B. WLAN nach N-Standard, Gbit-Switch, USB-Port - das macht ihm für rund 50 Euro kaum einer nach, erfolgreich seit über einem Jahr am Clemens-August-Gymnasium Cloppenburg im Betrieb)
  • Netgear WNDR4000, derzeit 80-90 Euro (grundsolider Dualbandrouter, sehr interessant für 5ghz-fähige Geräte wie iPads und erfolgreich im Betrieb in dieser Konfiguration am Medienzentrum Cloppenburg)

Einstellungen am Router

Integration in das IServ-Netz

Der Router muss zunächst in die Rechnerverwaltung von IServ eingetragen werden. Dazu ist die MAC-Adresse oft an den Routern zu finden, der Internetzugriff freigegeben und als Auswahl für Steuerbar "Nein" gesetzt werden.

Adminoberfläche freigeben

Webzugriff aktivieren

Damit wir den Router auch über seinen WAN-Port erreichen können, muss zusätzlich sein Admin-Interface freigegeben werden. Dies kann unter Administration -> Management einstellen. Dd-wrt-administration.png

Nun kann man unter Web-GUI-Management den Fernzugriff aktivieren. Nun kann man den Port und wahlweise die HTTPS-Nutzung aktivieren. Ich rate als Port den Port 80, wenn man HTTPS-Deaktiviert hat, und Port 443, wenn man HTTPS aktiviert hat. Es kann aber jeder andere Port genutzt werden. Nun ist die Oberfläche bei euch im Intranet unter der IP, die ihr ihm zugeordnet im IServ habt, erreichbar. Und eine kleine Anmerkung, wenn ihr wollt, könnt ihr auch etwas weiter unten die Sprache und das Design der Weboberfläche ändern.

Grundlegende Einstellungen

Einstellungen in dd-wrt

Die Grundlegenden Einstellungen sind unter Setup->Basis-Setup einstellen. Dd-wrt-network.png

Als erstes ist es hilfreich den Verbindungstyp auf dynamische IP einzustellen. Weiter kann man unter Routername, den Namen angeben, der auch im IServ eingetragen wurde, dieser erscheint dann auch als Tabtitel. Nun muss unter Lokale-IP-Adresse anstatt 192.168.1.1 ein andere IP, die nicht vom IServ genutzt wird, gewählt werden, als Beispiel 192.168.2.1 . Zudem darf der Router nach innen nicht als DHCP-Server auftreten - das macht ja schließlich der IServ selbst. Die meisten IServs nutzen mittlerweile das 10.0.0.0/8er Netz. Das sollte prüfen und die IP an die jeweiligen Gegenbenheiten anpassen. Diese Einstellung findet man unter Setup -> Basis-Setup. Dort muss man die Einstellung DHCP-Server von Einschalten auf Ausschalten gewechselt werden.

Konfiguration der WLAN-Schnittstelle

Konfiguration des WLANs

Die WLAN-Schnittstelle kann man unter WLAN -> Basis-Einstellungen konfigurieren. Dd-wrt-wlan.png

In den Einstellungen muss unter WLAN-Modus nun AP, in Netzwerk-Modus gemischt und unter Netzwerkname der Name des WLANs anzugeben, als WLAN-Kanal ist am besten bei zwei nebeneinander liegenden Router der gleiche Kanal zu wählen, SSID-Broadcast muss aktiviert sein und Network Konfiguration muss auf Bridged gestellt werden.

Konfiguration von Chillispot

Die Konfiguration von Chillispot findet man unter Services->Hotspot in der Kategorie Chillispot Dd-wrt-chillispot.png

Zunächst muss Chillispot eingeschaltet werden, danach kann man die Felder wie Folgt ausfüllen:

Einstellungen von Chillispot
Eingabefeld Funktion Quelle
Entferne WLAN von der LAN-Bridge Wenn diese Funktion deaktiviert ist, werden die LAN-Anschlüsse nicht mit der Sicherung über den RADIUS-Server gesichert und laufen normal über IServ Wie man möchte, ich persönlich empfehle, es zu aktivieren.
Primärer und Sekundärer RADIUS-Server Die IP unter der der RADIUS-Server sowie wenn vorhanden ein Ersatz, erreichbar ist Beide Felder, wenn nur ein Server(IServ) <radius_ip>
DNS-IP IP, unter der der DNS-Server erreichbar ist <dns_ip>
Remote-Network Legt fest, aus welchem IP-Bereich die IPs für die Clients genutzt werden soll standardmäßig 192.168.182.0/24
Umleitungs-URL URL unter der die hotspot.php erreichbar ist, Achtung mit https:// <login_url>
Shared Key Absicherung der Kommunikation zwischen Client und RADIUS <secret>
DHCP-Interface Legt fest, über welches Interface Chillispot arbeitet Meist WLAN oder eth1, jedenfalls das WLAN-Interface
RADIUS NAS ID Name des Hotspots (notwendig) <nas_id>
UAM Secret Absicherung der Kommunikation zwischen Webserver und ChilliSpot <uam_secret>
UAM Any DNS Legt fest ob der Nutzer einen selbst definierten DNS-Server benutzen darf aus Sicherheitsgründen 0
UAM Allowed Hier können Domains eingetragen werden, die auch ohne Anmeldung zugänglich sein sollen Wichtig ist die Domain mit IServ(deineschule.de), weitere Webadressen frei wählbar (ohne https:// oder www. und durch Kommata getrennt)
MACauth legt fest ob die Authentifizierung der Nutzer über deren MAC-Adresse Ist an dieser Stelle nicht gewollt, also deaktiviert lassen

Accesspoints zentral konfigurieren

Hostschlüssel auf den Accesspoint kopieren

fehlt noch

Verschiedene Skripten zur Steuerung

Eine Textdatei "accesspoints.txt" entält die IPs aller Accesspoints. Sie kann z.B. so aussehen:

datei
10.200.0.30
10.200.0.31
[...]

Das zentrale Skript "walkthrough_ap.sh" prüft, ob der jeweilige Accesspoint online ist und führt dann auf dem Accesspoint ein weiteres Skript aus, welches einfach als Parameter übergeben wird:

datei
#!/bin/bash

# Als Parameter muss der Pfad zu einem Script übergeben 
# werden, das dann auf dem Accesspoint ausgeführt wird.
# Vor der Ausführung wird rudimentär geprüft, ob der
# Accesspoint erreichbar ist. 
# accesspoints.txt enthält eine Liste der IPs aller Accesspoints. 
# Natürlich muss der Accesspoint per Key-Auth erreichbar sein

for i in $(cat accesspoints.txt); do

    IP=$(echo $i)

    if ping -c 1 -w 1 $IP > /dev/null; then
          (
		ssh root@$IP < $1
          )
    fi

done

Anwendung:

root
./walkthrough_ap.sh /pfad/zu/accesspoint_script.sh

WLAN-Passwort zentral setzen

Das folgende Skript setzt ein wpa2-Passwort auf dem Accesspoint (nur für Atheros Chipsätze, bei Broadcom muss das Device "athX" angepasst werden):

datei
#!/bin/bash

nvram set ath0_wpa_psk="wlan_passwort"
nvram commit
reboot

WLAN ausschalten

Das folgende Skript schaltet das WLAN aus (nur für Atheros Chipsätze, bei Broadcom muss das Device athX angepasst werden):

datei
#!/bin/bash

ifconfig ath0 down
iwconfig ath0 txpower off

WLAN einschalten (reboot)

Das folgende Skript schaltet das WLAN durch einen harten Reboot wieder ein:

datei
#!/bin/bash
reboot

Beliebige Operationen auf dem Accesspoint

Alle Optionen im nvram des DD-WRT-Routers lassen sich mit diesem Verfahren ändern:

root
nvram set options_name="wert"
nvram commit
reboot

z.B. Macfilter aktivieren, VLANs konfigurieren, zusätzliche WLAN-Devices erstellen, eine Grundkonfiguration setzen - der Fantasie sind hier kaum Grenzen gesetzt.

Reaktionen von Schülern

Gymnasium Neue Oberschule Braunschweig

Die Schüler reagieren bei mir am Gymnasium Neue Oberschule in Braunschweig sehr positiv. Das System ist einfach erklärt und benötigt keine großen Einstellungen, wie vorher, wo bei jedem Router einzeln das Passwort abgespeichert werden musste. Außerdem haben wir mit dem neuen System unser gesamtes Schulgebäude einheitlich abgedeckt. Bei Rückfragen stehe ich gerne Bereit, schreibt im Supportforum oder eine Mail an robin.burek@support.iserv.eu.