WPA Enterprise

Aus Freifunk Franken

Experiment: Zugang zum FFF-Netz via WPA(2) Enterprise

Diese Seite beschreibt für jemanden, der weiß was er tut, wie man einen FFF-Router mit einer zusätzlichen ESSID ausstattet, über die Nutzer die Luftschnittstelle verschlüsseln können. Mit beliebigen Benutzername-Passwort-Kombinationen kann sich jeder am Netz anmelden. Dabei wird 802.1X (aka WPA Enterprise) eingesetzt

Motivation

  • Spaß
  • Das normale offene Freifunk W-LAN kann sehr einfach belauscht werden. Zumindest gegen die sehr einfachen passiven Angriffe kann ein verschlüsseltes W-LAN helfen.
  • Ein normales mit WPA(2) PSK verschlüsseltes Netz kann man wohl auch passiv abhören, wenn man den Schlüssel kennt und den 4-Way Handshake mitsnifft.
  • Ziel ist kein "sichereres Freifunk", sondern mehr das Erschweren der leichtesten Angriffe und das Vermeiden von "versehentlichem Mitschneiden" wie es ja z.B. bei der Benutzung von Kismet passieren kann.
  • Diskussionsgrundlage über Sinn und Unsinn der Lösung / Proof-of-Concept

System

Jeder Router bekommt ein "neues W-Lan" (hier: secure.franken.freifunk.net). Der Radius Server läuft derzeit zentral auf einer VM und ist von den Routern per IPv6 erreichbar.

Denkbar ist auch den RADIUS Server auf den Routern mit laufen zu lassen.

Radius Server

Einrichtung wie hier beschrieben: http://www.heise.de/netze/artikel/WLAN-und-LAN-sichern-mit-IEEE-802-1X-und-Radius-979513.html

Das Einloggen mit beliebigen Benutzername-Passwort-Kombinationen erledigt die letzte Zeile in der Datei "/etc/freeradius/users":


"guest"		Cleartext-Password := "guest"

"gast"		Cleartext-Password := "gast"

"fff"		Cleartext-Password := "fff"

"freifunk"	Cleartext-Password := "freifunk"
 

DEFAULT   FreeRADIUS-Proxied-To == 127.0.0.1, Auth-Type := Accept

Die anderen Einträge darüber sind für Leute, die MSCHAPV2 verwenden. MSCHAPV2 funktioniert nicht mit beliebigen Passwörtern, da der Radius Server hier das Passwort kennen muss.

Der Radius-Server muss außerdem von den Routern aus erreichbar sein. Dies ist möglich, wenn der Server an einem Client Port eines Routers (in der selben Hood?) hängt. Der Server ist dann über IPv6 erreichbar.

Ich habe dazu folgenden Block in "/etc/freeradius/clients.conf":

client fdff::/16 {
	secret 		= radius
	shortname	= ipv6-fff
}

Hinweis: Link-Lokale IPv6-Adressen scheinen nicht zu funktionieren, da der hostapd in seiner Konfiguration für den Radius Server keine Scopes verarbeitet.


Firmware

Folgende Änderungen habe ich in der Firmware gemacht:

  • wpad-mini durch hostapd ersetzt (der abgespeckte wpad-mini kann kein WPA Enterprise)
  • Neue W-LAN ESSID hinzugefügt

Die Änderungen sieht man z.B. hier: https://github.com/ahanak/firmware/commits/20160506-wpa-enterprise

(Nur zum Test. Änderungen wurden nur mit TL-WR841N V9 getestet und können überhaupt nur mit Community "franken" und dem BSP board_ar71xx funktionieren.)

Anmeldung im Netzwerk

Unter Android und z.B. Ubuntu (Network Manager) gibt man einfach irgendwas für den Benutzernamen und PW ein und klickt auf verbinden.

Empfohlene Einstellungen (allgemein):

  • Methode: Tunneled TLS (TTLS), PEAP geht genauso
  • Anonyme Identität -egal-
  • Benutzername: -egal-
  • Passwort: -egal-
  • Zertifikat: Keins (man kann natürlich auch das Zertifikat des Radius Servers einbinden)

Unter Windows ist es recht kompliziert. Ich habe es nur so hinbekommen:

  • Zertifikat importieren
  • Als Benutzername z.B. "freifunk" und als Passwort auch "freifunk" - Windows verwendet MSCHAPV2, damit gehen nicht beliebige Passwörter.