Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:benutzerrechner:wlan:radius-accesspoint]] 

WLAN mit RADIUS-Authentifizierung im Access-Point - grünes Netz

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

(A) Konfiguration des WLAN-Access-Points

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.

screenshot-ap-radius2.jpg

(B) Installation von freeradius

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:

  1. neue Paketquelle mit lenny-Backports eintragen
  2. 3 Pakete (feeradius, freeradius-ldap, freeradius-utils) daraus installieren

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.

(C1) Konfiguration von freeradius

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.

(C2) Konfiguration der freeradius log-Dateien

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

(C3) Konfiguration von freeradius-ldap

In LDAP sind die Passwörter der User als sha-hash, als LMPassword-hash und als NTPassword-hash abgelegt. Nicht jedoch im Klartext oder als MD5. Deshalb funktioniert eine md5-Abfrage nicht

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.

(D) Firewall der paedML konfigurieren

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

(E) Zertifikate erstellen

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.

(F) Konfiguration eines WinXP-Clients

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

  1. Das Stamm/root-Zertifikat am Windows-Client importieren: Doppelklick auf die ca.der - Datei. Dies kann jeder Benutzer selbst durchführen.
  2. Ein neues Drahtlosnetzwerk-Profil manuell erstellen:
    • Drahtlosnetzwerke → Erweiterte Einstellungen ändern → Bevorzugte Netzwerke → hinzufügen
    • Netzwerkauthentifizierung: WPA2
    • Datenverschlüsselung: AES
    • Authentifizierung → EAP-Typ: geschütztes EAP (PEAP)
    • Als Computer authetifizieren …: NEIN
    • Als Gast authentifizieren …: NEIN
    • → Eigenschaften → Serverzerfikat überprüfen: JA
    • → Eigenschaften → vertrauenswürdige Stammz. → linuxmuster: JA
    • → Eigenschaften → Authentifizierungsmethode → konfigurieren → Autom. eig. Windowsanmeldenamen …: NEIN
  3. Nun auf den erscheinenden Zertifikat-Balloon-Hinweis klicken und zum Verbinden mit den Radius-Username „steve“ dessen Passwort eingeben (siehe Datei /etc/freeradius/users).
    Diese Passwort wird dann aber von Windows XP dauerhaft im Profil gespeichert!
    Lösung dazu:Registry Keys von EAPOL
    Bei Windows 7 lässt sich die Speicherung abschalten.

screenshot-winxp.jpg

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.

Diese Aussage gilt aber nur, falls lmn auch DHCP macht. Es findet nach dieser Anleitung und Anhand der RADIUS-Konfiguration von lmn keinerlei RADIUS-Prüfung der MAC-Adresse statt! Ein Zugriff mit einer passenden festen IP und gültigen Zugangsdaten ist also trotzdem möglich!

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

(G) Sicherheits-Einstellungen

Mehrere Dateien der freeradius-Konfiguration enthalten Passwörter und sollten deshalb zugriffsbeschränkt sein. Ebenso sollten die Standard-Passwörter in produktiven Systemen durch sichere Passwörter ersetzt werden. Bei meiner Standard-Installation waren die folgenden Dateien leider global lesbar!

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

(H) Debug - Möglichkeiten

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

(J) Konsolenbefehle zur Clientsimulation

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
 [[anwenderwiki:benutzerrechner:wlan:radius-accesspoint]] anwenderwiki/benutzerrechner/wlan/radius-accesspoint.txt · Zuletzt geändert: 2018/05/22 18:04 von kaikoenig