Hallo,
den Radius auf der Opnsense habe ich nach einer Woche testen in die Ecke geschmissen, weil er einfach nicht mit meinen UnifiAP’s und der AD zusammenarbeiten will. Ich habe daher kurzerhand einen Radius auf dem lmn7-server installiert und eingerichtet. Genauso gut kann man den Radius auf eine eigene Maschine (z.B. den Unificontroller) auslagern. Die folgende Anleitung muss dann nur noch darum ergänzt werden, dass diese Maschine zuerst in die Domäne aufgenommen werden muss. Ich habe für mein Setup keine Sicherheitsbedenken, den Radius direkt auf dem Server zu betreiben, da die Anfragen nur aus einem einzelnen internen Subnetz kommen und ich nur von dort Radiusanfragen zulasse.
1. Freeradius installieren und aktivieren:
#apt install freeradius
#systemctl enable freeradius.service
2. ntlm_auth in samba erlauben:
Einfügen von: ntlm auth = yes
in die /etc/samba/smb.conf.
Danach samba-ad-dc neu starten:
#systemctl restart samba-ad-dc.service
3. Radius konfigurieren:
-
Freeradius Zugriff auf winbind geben:
#usermod -a -G winbindd_priv freerad #chown root:winbindd_priv /var/lib/samba/winbindd_privileged/
-
Einfügen von
ntlm_auth
ganz am Anfang unter authenticate unter /etc/freeradius/3.0/sites-enabled in die Dateien default und inner-tunnel:authenticate { ntlm_auth #
-
Ändern der Datei unter /etc/freeradius/3.0/mods-enabled/mschap wie folgt:
Einfügen der Zeilen:
mschap { use_mppe = yes with_ntdomain_hack = yes #
Anpassen der ntlm_auth weiter unten; zuerst das Kommentarzeichen # entfernen, dann die Zeile folgendermaßen anpassen:
ntlm_auth = "/usr/bin/ntlm_auth --request-nt-key --domain=DOMÄNE --require-membership-of=DOMÄNE\wifi --username=%{%{Stripped-User-Name}:-%{%{User-Name}:-None}} --challenge=%{%{mschap:Challenge}:-00} --nt-response=%{%{mschap:NT-Response}:-00}"
Dabei muss DOMÄNE durch den eigenen Domänennamen ersetzt werden. Der Teil –require-membership-of=… lässt nur Mitglieder der Gruppe wifi zu. So funktioniert die Wlansteuerung über die WebUI.
-
Ändern der Datei unter /etc/freeradius/3.0/mods-enabled/ntlm_auth; zuerst das Kommentarzeichen # entfernen, dann die Zeile folgendermaßen anpassen:
exec ntlm_auth { wait = yes program = "/usr/bin/ntlm_auth --request-nt-key --domain=DOMÄNE --require-membership-of=DOMÄNE\wifi --username=%{mschap:User-Name} --password=%{User-Password}" }
Dabei muss DOMÄNE durch den eigenen Domänennamen ersetzt werden.
-
Einfügen der folgenden Zeile in die /etc/freeradius/3.0/users ganz oben:
DEFAULT Auth-Type = ntlm_auth
-
Freeradius neustarten:
#systemctl restart freeradius.service
WICHTIGE Bemerkung:
Das Defaultverhalten der lmn7 ist, dass ein neu angelegter User immer in der Gruppe wifi ist, d.h. auch alle Schüler dürfen erstmal ins Wlan! Die Steuerung der Gruppenzugehörigkeit geht auf der Konsole über:
#sophomorix-managementgroup --nowifi/--wifi user1,user2,...
Es wäre also extrem umständlich, alle Schüler einzeln aus der Gruppe zu schmeißen. Man kann das aber recht schnell erledigen. Alle User des Systems auflisten und in eine Datei schreiben:
#samba-tool user list > user
Jetzt entfernt man alle User aus der Liste, die immer ins Wlan dürfen sollen. Danach baut man die Liste zu einer Kommazeile um mit:
#less user | tr '\n' ',' > usermitkomma
Jetzt kann man das an den o.g. sophomorixbefehl übergeben:
#sophomorix-managementgroup --nowifi $(less usermitkomma)
Das kann man natürlich auch alles in ein Script packen.
4. Firewallregeln anpassen:
-
Auf dem Server unter /etc/linuxmuster/allowed_ports den Radiusport 1812 eintragen:
udp domain,netbios-ns,netbios-dgm,9000:9100,1812
Danach Server neustarten.
-
Auf der Opnsense:
Hier muss je nach eigenen Voraussetzungen dafür gesorgt werden, dass die AP’s aus dem Wlan-Netz den Server auf dem Port 1812 udp erreichen können. Bei mir sieht die Regel z.B. so aus:
Jetzt sollte die Authetifizierung per WPA2-Enterprise funktionieren, sofern der Testuser in der Gruppe wifi ist. Ein Zertifikat ist nicht nötig.
Sollte das nicht funktionieren hält man den Freeradiusdienst an und startet ihn im Debugmodus.
# service freeradius stop
# service freeradius debug
Jetzt sieht man alle Vorgänge während man sich versucht mit einem Device zu verbinden.
VG
Dominik