1. Beschreibung
Warum WPA2 Enterprise?
WPA2 Enterprise ermöglicht es jedem Benutzer eigene Zugangsdaten verwenden zu lassen, falls ein Benutzer keinen Zugriff mehr auf das WLAN Netzwerk haben soll, muss nur dessen Account deaktiviert werden. Bei einem Passphrase geschütztem WPA Netzwerk wäre hier der Austausch der Passphrase notwendig, welche man dann an alle bestehenden Nutzer erneut verteilen muss.
Warum EAP-PEAP?
EAP-PEAP ist dass EAP Verfahren,welches von den meisten Betriebsystemen direkt unterstützt wird. Allerdings ist die Auswahl der Passwort-Backends auf jene beschränkt, die die Passwörter im Klartext oder als NT-Hash speichern.
Eine Übersicht, welches EAP-Verfahren mit welcher Art der Passwortspeicherung funktioniert findet ihr hier:
Protocol and Password Compatibility
EAP-PEAP ist wie auch zum Beispiel EAP-TTLS ein sogenanntes 2 Phasen Verfahren, hierbei wird in der ersten Phase ein TLS-Tunnel zwischen dem WLAN Client und dem FreeRADIUS-Server aufgebaut.
In der zweiten Phase wird das Passwort MS-CHAPV2 verschlüsselt übertragen.
2. Konfiguration des FreeRADIUS Servers
Installation der Software
Auf dem Server werden die folgenden Pakete installiert:
apt-get install freeradius freeradius-ldap freeradius-utils
SSL Zertifikate erzeugen
Während der Installation werden zumindest unter Ubuntu und Debian sogenannte selbst signierte SnakeOil Zertifikate angelegt.
Diese SnakeOil Zertifikate eignen sich zum testen des Aufbaus, sollten aber vor der Inbetriebnahme durch Kaufzertifikate oder zumindest durch die Zertifikate einer eigenen CA ausgetauscht werden.
AccessPoints als Clients des FreeRADIUS-Server einrichten
Die AccessPoints werden in der Datei /etc/freeradius/clients.conf eingerichtet:
client {
secret = Passwort
shortname = Symbolischer Name
}
Den FreeRADIUS-Server auf EAP-PEAP konfigurieren
Die zu verwendende Verschlüsselungsmethode wird in der Datei /etc/freeradius/eap.conf eingerichtet:
Zuerst muss der Standard EAP-Typ eingestellt werden:
default_eap_type = peap
Für die TLS Konfiguration müssen das Server Zertifikat, der Private Key, die Diffie-Hellman Parameter und /dev/urandom als Zufallszahlengenerator angegeben werden:
tls {
private_key_file = /etc/freeradius/certs/radius-key.pem
certificate_file = /etc/freeradius/certs/radius-cert.pem
dh_file = /etc/freeradius/certs/dh.pem
random_file = /dev/urandom
cipher_list = "DEFAULT"
}
Die Diffie-Hellmann Parameter können mit diesem Befehl erzeugt werden:
openssl dhparam 2048 > /etc/freeradius/certs/dh.pem
Die EAP-PEAP Konfiguration sollte folgendes aussehen haben:
peap {
default_eap_type = mschapv2
virtual_server = "inner-tunnel"
}
Der Parameter virtual_server lädt die entsprechende Konfiguration für die Phase 2.
Verbindung zum OpenLDAP Server einrichten
Um den FreeRADIUS-Server an den LDAP Server anzubinden müssen die Verbindungsparameter und die entsprechenden LDAP-Filter in die Datei modules/ldap eingetragen werden:
ldap {
server = ldap.example.org
port = 636 # Oder 389 falls der LDAP-Server keine SSL gesicherten Verbindungen anbietet.
binddn = "cn=manager,dc=example,dc=org"
password = manager-password
basedn = "dc=example,dc=org"
filter = "(&(objectClass=posixAccount)(uid=%{%{Stripped-User-Name}:-%{User-Name}}))"
groupmembership_filter = "(&(objectClass=posixGroup)(memberUid=%{User-Name}))"
groupmembership_attribute = "cn=Gruppe,ou=Groups,dc=example,dc=org"
ldap_connections_number=5
dictionary_mapping = ${confdir}/ldap.attrmap
}
Typischerweise ist es nur einem administrativen Benutzer gestattet auf die NT-Hashes zuzugreifen, daher sollten die beiden Werte binddn und password angegeben werden.
Die LDAP Filter in diesem Beispiel müssen nicht unbedingt auf jedem LDAP Setup funktionieren, diese muss man dann an dass jeweiliges Schema anpassen.
Abschließend muß die Umsetzung zwischen den RADIUS und den LDAP Attributen in der Datei /etc/freeradius/ldap.attrmap konfiguriert werden.
Es sollten alle eventuell vorhandenen Attribute gelöscht werden, sodass die Datei die folgenden fünf Zeilen enthält:
checkItem $GENERIC$ radiusCheckItem
replyItem $GENERIC$ radiusReplyItem
checkItem LM-Password sambaLmPassword
checkItem NT-Password sambaNtPassword
checkItem SMB-Account-CTRL-Text acctFlags
3. Konfiguration der AccessPoints
Mittlerweile unterstützen die gängisten AccessPoints und WLAN-Router das RADIUS-Protokoll, hierbei sind immer folgende Angaben zu machen:
- IP-Adresse des RADIUS-Servers
- Der RADIUS-Server Port: 1812
- Das Shared Secret aus der clients.conf
Nun sollte man ein funktionsfähiges WPA2 Enterprise Setup besitzen, falls es zu Problemen kommt kann man den FreeRADIUS in einem ziemlich gesprächigem Modus starten:
freeradius -vv
RADIUS und EAP als Protokolle und FreeRADIUS als Software sind recht komplexe Themengebiete, also nicht gleich aufgeben falls etwas nicht klappt.