Ingeno Solutions AG
Birmensdorferstrasse 125
8003 Zürich
T044 406 12 12
info@ingeno.ch
www.ingeno.ch

RADIUS einrichten auf einem Mavericks Server

Mac OS X Server verwendet FreeRADIUS für die serverbasierte Authentifizierung von WiFi-Benutzern (Firmenweiter WPA/WPA2). In Mavericks Server gibt es kein GUI um RADIUS zu konfigurieren, aber der Dienst wird automatisch verwaltet, wenn für das WLAN Apple Airport Basisstationen verwendet werden. Wenn in Mavericks die Server App geöffnet wird, erscheinen diese Basisstationen in der Seitenleiste und können für die Verwendung von RADIUS aktiviert werden.
Anders sieht das aus, wenn Accesspoints anderer Hersteller wie z.B. Aerohive verwendet werden sollen. Dann muss RADIUS von Hand eingerichtet werden. Hier das Vorgehen:

Bei allen folgenden Befehlen wird davon ausgegangen, dass diese mit root-Rechten ausgeführt werden:

sudo -s

Zuerst wird die Gruppe com.apple.access_radius erstellt, um die Nutzung des RADIUS Dienstes zu ermöglichen (SACL). Benutzer, die sich via RADIUS authentifizieren können sollen, müssen dann dieser Gruppe hinzugefügt werden (via Server App, Workgroup Manager oder dsedit).

dseditgroup -q -o create -u <admin_user> -n . com.apple.access_radius

Um später dem RADIUS-Log brauchbare Informationen in Bezug auf Login-Versuche entnehmen zu können, muss die Konfiguration entsprechend angepasst werden. Hinweis: Die Konfigurationsdatei radiusd.conf befindet sich in /Library/Server/radius/raddb/.

radiusconfig -setconfig auth yes
radiusconfig -setconfig auth_badpass yes
radiusconfig -setconfig auth_goodpass yes

Jetzt können die WLAN-Accesspoints (AP) definiert werden, über die RADIUS-Authentifizierung erlaubt werden soll. Die APs müssen dafür statische IP-Adressen und eine eindeutige Kennung haben, vorzugsweise einen FQDN, welcher für die Identifikation der APs verwendet wird. Ein AP wird wie folgt dem RADIUS Server hinzugefügt:

radiusconfig -addclient <ip_address>  <nas_type>

ip_address bezeichnet die statische Adresse des APs, identifier den FQDN und nas_type den Typ des Network Access Servers (hier AP), in der Regel ist das other. Die möglichen NAS-Typen können in der Datei /Library/Server/radius/raddb/clients.conf nachgeschlagen werden.

Nach Eingabe des obigen Befehls wird nach dem Shared Secret gefragt, welches der Verschlüsselung der Kommunikation zwischen NAS und RADIUS Server mit md5 dient. Dieses Shared Secret wird später zusammen mit IP-Adresse und Port des RADIUS Servers für die Konfiguration der APs benötigt. Nach Eingabe des Shared Secrets wird die Aufnahme des Clients wie folgt bestätigt:

<ip_address> added to the nas list

Nun benötigt der RADIUS Server noch ein SSL-Zertifikat. Wenn der RADIUS Server zum ersten Mal gestartet wird, erstellt er zwar ein selbst-signiertes Zertifikat, um überhaupt die verschlüsselte Datenübertragung gewährleisten zu können, aber aus Sicherheits- und Komfortgründen sollte ein “echtes”, von einer bekannten Certificate Authority (CA) signiertes Zertifikat verwendet werden. Steht das Zertifikat im p12-Format zur Verfügung (z.B. certificate.p12), wird es wie folgt mit openssl für die Verwendung in RADIUS bereitgestellt:

openssl pkcs12 -in /Pfad/zu/certificate.p12 -out /Library/Server/radius/raddb/certs/server.key -nodes -nocerts
openssl pkcs12 -in /Pfad/zu/certificate.p12 -out /Library/Server/radius/raddb/certs/server.crt -nodes -nokeys

Beide Male wird das Kennwort abgefragt, welches bei der Erstellung des .p12-Zertifikats hinterlegt wurde.
Zum Schluss muss RADIUS noch so konfiguriert werden, dass es die bereitgestellten Zertifikate verwendet.

radiusconfig -installcerts /Library/Server/radius/raddb/certs/server.key /Library/Server/radius/raddb/certs/server.crt

Um sicherzustellen, dass der RADIUS Server einwandfrei läuft, wird er nun im Debug Modus gestartet.

radiusd -X

Wenn der RADIUS Server erfolgreich gestartet wurde, erscheint als letzte Zeile:

Ready to process requests

Der Prozess kann nun mit Ctrl-C beendet werden. Damit der RADIUS Dienst bei jedem Systemstart mitgestartet wird, wird er für launchd konfiguriert.

radiusconfig -start

Dadurch wird die Datei org.freeradius.radiusd.plist, welche in /Applications/Server.app/Contents/ServerRoot/System/Library/LaunchDaemons/org.freeradius.radiusd.plist liegt, launchd hinzugefügt.

Um die Kommunikation mit dem RADIUS Server zu testen, kann folgender Befehl auf dem Server selbst ausgeführt werden:

echo "User-Name=,User-Password=,Framed-Protocol=PPP " | radclient -x -r 1 -t 2 localhost:1812 auth testing123

Dabei werden die Authentzifizierungsdetails (username und password eines existierenden OD-Benutzers) an den radclient übergeben. Das Standardkennwort (Shared Secret) ist testing123 und soll in der Datei /Library/Server/radius/raddb/clients.conf geändert werden, sobald der Server produktiv genutzt wird. Bei erfolgreichem Test wird folgendes ausgegeben:

Sending Access-Request of id 220 to 127.0.0.1 port 1812
 User-Name = ""
 User-Password = ""
 Framed-Protocol = PPP
rad_recv: Access-Accept packet from host 127.0.0.1 port 1812, id=220, length=32
 Framed-Protocol = PPP
 Framed-Compression = Van-Jacobson-TCP-IP

Zum Abschluss werden die Zugriffsrechte auf die RADIUS Log-Datei noch so angepasst, dass sie in der Konsole angezeigt werden kann:

chmod -R 755 /var/log/radius

Fertig :-)



Verfasst am 26. Januar 2014 | um 15:51 Uhr | durch Andreas Oettli