Inzwischen lassen sich viele WLAN-Access-Points von einer einfachen Benutzer-Authentifizierung auf eine Authentifizierung mit Hilfe eines RADIUS-Servers umstellen (WPA-Enterprise oder WPA-EAP oder 802.1X).
Durch Anbindung des Radius-Servers an LDAP hat nun jeder Benutzer sein eigenes Passwort - das der paedML - um sich am WLAN anzumelden. Ein schulweites bekanntes WLAN-PSK-Kennwort ist dann nicht mehr notwendig.
Problematik: Man sollte vorher auf dem Client (z.B. WinXP) ein Zertifikat importieren, mit dem der Passwort-Dialog dann gesichert ablaufen kann. Ebenso muss auf dem Client ein Drahtlosnetzwerk-Profil erstellt werden.
Problematik: WinXP speichert eine Authentifizierung des Erstbenutzers so ab, dass alle Benutzer danach diese Authentifizierung weiterverwenden, auch nach einem Reboot. Nur ein neues „Sync und Start“ würde diese Authentifzierung entfernen. Bein Windows 7 besteht diese Problematik nicht, da man dort die Löschung einstellen kann. Genaueres siehe → Registry-Keys von EAPOL
Links:
In diesem Artikel wird der Access-Point in das grüne Netz integriert. Somit hat dann jeder authentifizierte User mit seinen Notebook vollen Zugang zum grünen Netz, was ggf. ein Sicherheitsrisiko darstellen kann.
U.U. sind nicht alle unten aufgeführten Schritte notwendig.
Die Integration ins blaue Netz siehe → radius-accesspoint-blau
Der AP muss auf WPA2 Enterprise oder 802.1X umgestellt werden. Weiterhin muss man die IP der paedML eintragen (meist 10.16.1.1), den Port (1812) und das „Shared Secret“ mit dem der AP sich beim Server authentifiziert. Auch sollte man dem AP eine feste IP geben, im folgenden wird die IP 10.16.1.10 mit Subnet-Mask 255.240.0.0 , Gateway 10.16.1.254 verwendet und schließlich den AP in die Hostlist der paedML (… import_workstations) aufnehmen.
Das Standard-Paket freeradius 2.0.8 in der paedML 5.0 hat leider keine openSSL-Unterstützung. Deshalb muss man die Version aus den Backports installieren (aktuell am 24.10.2011 war 2.1.10).
Zur Installation auf der paedML 5.x sind folgende Schritte notwendig:
In /etc/apt/sources.list.d
eine neu Datei lenny-backports.list
anlegen mit dem Inhalt:
dep http://backports.debian.org/debian-backports lenny-backports main contrib non-free
Dann als root:
# aptitude update # aptitude -t lenny-backports install freeradius freeradius-ldap freeradius-utils
Nach erfolgreicher Installation zur Sicherheit die Backportquelle wieder deaktivieren.
Die Haupt-Konfigurationsdatei ist „radiusd.conf
“ - jedoch sind viele Konfigurationen in „/modules/*
“ oder „/sites-available/default
“ ausgelagert.
Problem: Je nach Vorgeschichte der paedml 5.0.3 sind die Konfigurationsdateien von freeradius nicht identisch. Dies liegt daran, dass eine alte freeradius-Installation vorhanden war und alte Konfigurationsdateien in /etc/freeradius lagen. Anpassungen siehe → problemkonfiguration-freeradius.
Nun in der Datei /etc/freeradius/users
bei folgender Zeile zu Testzwecken den Kommentar entfernen:
steve Cleartext-Password := "testing"
Test des RADIUS-Servers als root:
# /etc/init.d/freeradius restart # radtest steve testing 127.0.0.1:1812 10 testing123
sollte folgende Ausgabe erzeugen:
rad_recv: Access-Accept Packet from ...
Dabei ist in der Datei /etc/freeradius/clients.conf
das Secret „testing123“ für localhost schon vordefiniert.
Test von EAP am Radius-Server.
# radtest -t eap-md5 steve testing localhost 10 testing123
In der Datei /etc/freeradius/clients.conf
einen Eintrag für den AP hinzufügen:
client ap01 { ipaddr = 10.16.1.10 secret = muster123 }
In der Datei /etc/freeradius/eap.conf
setzen (Parameter mschapv2 meist schon gesetzt):
eap { ... default_eap_type = peap ... } ... peap { ... default_eap_type = mschapv2 ... }
Erklärung siehe: PEAP. Statt „peap“ funktioniert auch der Parameter „ttls“.
In der Datei /etc/freeradius/modules/pap
setzen:
pap { auto_header = yes }
Achtung: Falls es diese Option in der Datei radiusd.conf auch gibt, dann dort setzen. Siehe → problemkonfiguration-freeradius.
In der Datei /etc/freeradius/radiusd.conf
kann das Logging von Authentifizierungs-Anfragen eingeschaltet werden (dann restart des Dienstes). Die Log-Datei ist: /var/log/freeradius/radius.log
.
log { ... auth = yes ... }
Alternativ: In der Datei /etc/freeradius/sites-available/default
kann zusätzlich das Logging per IP von Anfragen eingeschaltet werden. Die Logdatei ist dann z.B.: /var/log/freeradius/radacct/127.0.0.1/auth-detail20111030.log
.
authorize { ... auth_log ... }
Weitere Konfigurationsmöglichkeiten von freeradius siehe: freeradius und CopSpot
In der Datei /etc/freeradius/modules/ldap
den eigenen LDAP-Server mit basedn eintragen (Daten anpassen!!). Das Password zur Identity findet man in /etc/ldap/slapd.conf
unter rootpw.
... server = "localhost" identity = "cn=admin,dc=musterschule,dc=local" password = xyz basedn = "ou=accounts,dc=musterschule,dc=local" filter = "(uid=%u)" ...
Da diese Datei ein Passwort enthält sollte man die Zugriffsrechte einschränken:
# chown root:freerad /etc/freeradius/modules/ldap # chmod 640 /etc/freeradius/modules/ldap
In der Datei /etc/freeradius/sites-available/default
die LDAP-Authentifizierung aktivieren, d.h. bei den jeweiligen Zeilen zu LDAP das Kommentarzeichen entfernen:
... authorize { ... ldap ... } authenticate { ... Auth-Type LDAP { ldap } ... }
Ebenso in der Datei /etc/freeradius/sites-available/inner-tunnel
die LDAP-Authentifizierung aktivieren:
... authorize { ... ldap ... }
Test mit dem LDAP-User „zell“ und seinem Passwort „muster“:
# /etc/init.d/freeradius restart # radtest zell muster localhost 10 testing123
sollte folgende Ausgabe erzeugen:
rad_recv: Access-Accept Packet from ...
Eine „radtest -t eap-md5 …“ funktioniert nicht mit LDAP-Usern, da LDAP in der paedML kein MD5-Passwort oder Cleartext-Passwort hat.
Zunächst blockiert die Firewall alle Zugriffe auf den Radius-Server.
Die Radius-Ports (1812 bis 1814 - UDP), die für das grüne Netz freigegeben sein sollen, müssen in der Datei /etc/linuxmuster/base_ports
eingetragen werden. Ein Eintrag in der Datei allowed_ports
genügte leider nicht - wahrscheinlich wegen einer dem Server unbekannten MAC beim Zugriff.
udp 67:69, ... ,1812:1814
Dann die Firewall neu starten mit:
# /etc/init.d/linuxmuster-base restart
Es wird nun ein Stamm/root-Certifikat (ca.der
, ca.pem
) und ein Server-Certifikat (server.pem
) erstellt.
Dazu die Vorlagen nach /root kopieren:
# cp -r /usr/share/doc/freeradius/examples/certs /root
Jetzt die beiden Konfigurationsdateien /root/certs/ca.cnf
und /root/certs/server.cnf
identisch editieren (den eigenen Daten anpassen). Unter dem Namen „CA-linuxmuster“ findet man das root-Zertifikat später am Windows-Client wieder.
... default_days = 3650 ... [reg] input_password = whatever output_password = whatever ... [certificate_authority] contryName = DE StateOrProvinceName = Deutschland localityName = Karlsruhe organisationName = CA-linuxmuster emailAddress = administrator@linuxmuster.local commonName = CA-linuxmuster ...
Die Passwörter „whatever“ befinden sich ebenfalls in der Datei /etc/freeradius/eap.conf
und müssen natürlich überall übereinstimmen (Veränderung sinnvoll).
Die Zertifikate durch das make-Script erstellen:
# cd /root/certs # make all
Die Zertifikate nach /etc/freeradius/certs
kopieren und den Radius-Server neustarten:
# cp /root/certs/ca.* /etc/freeradius/certs # cp /root/certs/server.* /etc/freeradius/certs # /etc/init.d/freeradius restart
Das root-Zertifikat /etc/freeradius/certs/ca.der
auf USB-Stick speichern um es zum Windows-Client zu übertragen.
Die Konfiguration der Windows-Clients am besten nachlesen in:
http://www.heise.de/netze/artikel/WLAN-sichern-mit-Radius-1075339.html
Ggf. muss ein WPA2-update installiert werden: http://support.microsoft.com/kb/893357
ca.der
- Datei. Dies kann jeder Benutzer selbst durchführen.Nur wenn der Client mit seiner WLAN-MAC in die Hostlist am Server aufgenommen ist, hat er danach vollen Netzzugriff auf das grüne Netzwerk.
Variation 1: Der Zertifikatsimport kann ausgelassen werden, dann muss bei den „Eigenschaften für geschütztes EAP“ die Zertifikatsprüfung komplett abgeschaltet werden. Dies stellt aber ein Sicherheitsproblem dar. Ein falscher Access-Point kann nun ohne die Zertifikatsprüfung die Passwörter der Nutzer ausspähen → Phishing.
Variation 2: Bei TU-Darmstadt findet man eine Anbindung mit Hilfe eines Zusatzprogrammes „SecureW2“ beschrieben. Dort erhält man auch die alte kostenlose Version von SecureW2
Datei: /etc/freeradius/user
. Auch den Testuser „steve“ wieder deaktivieren.
# chown root:freerad /etc/freeradius/user # chmod 640 /etc/freeradius/user
Datei: /etc/freeradius/radiusd.conf
# chown root:freerad /etc/freeradius/radiusd.conf # chmod 640 /etc/freeradius/radiusd.conf
Datei: /etc/freeradius/eap.conf
. Auch neues Zertifikat mit neuem Passwort erstellen.
# chown root:freerad /etc/freeradius/eap.conf # chmod 640 /etc/freeradius/eap.conf
Datei: /etc/freeradius/clients.conf
. Auch alle „secrets“ ändern.
# chown root:freerad /etc/freeradius/clients.conf # chmod 640 /etc/freeradius/clients.conf
Datei: /etc/freeradius/modules/ldap
# chown root:freerad /etc/freeradius/modules/ldap # chmod 640 /etc/freeradius/modules/ldap
Der Freeradius-Server gibt unter /var/log/freeradius
sehr wenig Infos über sich heraus.
Zur Fehlersuche ist es sinnvoll den normalen Dienst zu stoppen und dann in einer extra-Konsole den Dienst im debug-Modus zu starten:
# /etc/init.d/freeradius stop # /usr/sbin/freeradius -X
Zum Abschalten der kompletten Firewall folgenden Befehl eingeben (Achtung: Sicherheitsproblematik beachten - nur zu Testzwecken, danach am besten Server neu booten):
# iptables --flush
Firewall-Regeln für die Radius-Ports anzeigen:
# iptables -L -n | grep 181
Firewall neu initialisieren:
# /etc/init.d/linuxmuster-base start
Mit dem Tool radsniff
werden die Pakete der Radius-Kommunikation angezeigt. Wenn die Radius-Anfragen vom Server selbst kommen (z.B. bei radtest) muss der Schalter „-i lo“ angegeben werden. Ggf. das „secret“ anpassen.
# radsniff -x -s testing123 # radsniff -i lo -x -s testing123
Informationen zu einem User ausgeben:
# sophomorix-user -u zell # smbldap-usershow zell
Das Paket freeradius-utils
enthält den Befehl radtest
mit dem von der Konsole freeradius abgefragt werden kann. Dieser Befehl kann aber keine EAP-TLS oder EAP-PEAP Abfragen machen.
# radtest steve testing 127.0.0.1:1812 10 testing123 # radtest zell muster localhost:1812 10 testing123 # radtest -t eap-md5 steve testing 127.0.0.1:1812 testing123
Für EAP-TLS oder EAP-PEAP muss ein zusätzliches Script „rad_eap_test
“ installiert werden. Ebenso benötigt man das Programm „eapol_test
“. Beide Programme findet man unter: http://wiki.eduroam.cz/rad_eap_test/. Dort findet man auch ein vor-kompiliertes eapol_test
.
Kopieren Sie beide Programme nach /root/bin
.
Zum Auflisten aller Parameter von rad_eap_test
das Script ohne Parameter aufrufen.
Nun kann man von der Konsole Testanfragen an den Radiusserver absetzen. (Im Script rad_eap_test ist der Pfad von eapol_test hardkodiert!) Auf Groß/Kleinschreibung der Parameter achten. Die Scripte müssen ausführbar sein.
# cd /root # bin/rad_eap_test -H 127.0.0.1 -P 1812 -S testing123 -u steve -p testing -m IEEE8021X -e PEAP # bin/rad_eap_test -H 127.0.0.1 -P 1812 -S testing123 -u zell -p muster -m IEEE8021X -e TTLS