Benutzer-Werkzeuge

Webseiten-Werkzeuge


 [[anwenderwiki:server_lmn7:freeradius:start]] 

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
anwenderwiki:server_lmn7:freeradius:start [2021/01/05 14:02] – [Firewallregeln anpassen] cweiklanwenderwiki:server_lmn7:freeradius:start [2021/01/05 14:13] (aktuell) – [Netzwerkzugriff über FreeRADIUS] cweikl
Zeile 1: Zeile 1:
 +{{tag> }}
 +
 +====== Netzwerkzugriff über FreeRADIUS ======
 +
 +RADIUS (Remote Authentification Dial-In User Service) ist ein Client-Server Protokoll, das zur Authentifizierung, Autorisierung und für das Accounting (Triple A) von Benutzern in einem Netzwerk dient.
 +
 +Der RADIUS-Server dient als zentraler Authentifizierungsserver, an den sich verschiedene IT-Dienste für die Authentifizierung wenden können. RADIUS bietet sich an, um in großen Netzen sicherzustellen, dass ausschließlich berechtigte Nutzer Zugriff haben. Der Zugriff kann zudem auch auf bestimmte Endgeräte beschränkt werden. Um die Authentifizierungsdaten zu übertragen, wird oftmals das Protokoll EAP (Extensible Authentification Protocol) genutzt.
 +
 +Viele Geräte und Anwendungen, wie z.B. Access Points, Captive Portals oder Wireless Controller bieten neben einer einfachen Benutzerauthentifizierung auch eine Überprüfung mit Hilfe eines RADIUS-Servers an (WPA-Enterprise, 802.1X). Werden die Geräte so konfiguriert, dass diese zur Authentifizierung den RADIUS-Server nutzen, so kann sichergestellt werden, dass nur berechtigte Benutzer Zugriff auf z.B. das WLAN haben.
 +
 +In linuxmuster.net v7 ist der offizielle Weg und supportete Weg diesen entweder direkt auf der OPNSense als Plugin zu betreiben oder als Docker-Container auf dem optionalen Docker-Host. Beides funktioniert noch im Januar 2021 noch nicht zuverlässig oder ist noch nicht fertig entwickelt.
 +
 +Die nachstehende Anleitung dient daher lediglich als * W O R K A R O U N D*, um mit wenig Aufwand den FreeRADIUS - Dienst auf dem lmn - Server zu installieren und an die v7 anzupassen.
 +
 +Dies ist kein offiziell unterstützer Weg !
 +
 +===== Zugehörigkeit zur Gruppe wifi ===== 
 +
 +Der Zugriff soll über die Schulkonsole gesteuert werden. Dafür werden Benutzer einer speziellen Gruppe wifi hinzugefügt oder daraus entfernt.
 +
 +<note important>Das Standardverhalten der linuxmuster.net ist, dass ein neu angelegter Benutzer immer in der Gruppe wifi ist, d.h. auch alle Schüler dürfen zunächst in das WLAN, sobald ein WLAN-Zugriff auf Basis dieser Gruppe wifi erstellt wurde.</note>
 +
 +**Zugehörigkeit zur Gruppe wifi einmalig festlegen**
 +
 +Die Steuerung der Gruppenzugehörigkeit kann auf der Konsole auf dem lmn-Server wie folgt gesetzt werden. Wenn man z.B. nur die Gruppe der Lehrer und der Schüler der Oberstufenklassen „k1“ und „k2“ für WLAN-Zugang konfigurieren will, erstellt man eine Vorlage und setzt die wifi-Gruppe dann wie folgt:
 +
 +<code>
 +server ~ # cat << EOF > /etc/linuxmuster/sophomorix/default-school/wifi.teachers_and_oberstufe.conf
 +MEMBER_ROLE=teacher,globaladministrator
 +MEMBER_CLASS=teachers,k1,k2
 +EOF
 +</code>
 +<code>
 +server ~ # sophomorix-managementgroup --set-wifi teachers_and_oberstufe
 +</code>
 +
 +Um noch weitere einzelne Schüler hinzuzunehmen oder zu entfernen, nutzt man danach die Funktion --wifi bzw. --nowifi mit von Komma getrennten Benutzernamen.
 +
 +<code>
 +server ~ # sophomorix-managementgroup --nowifi lempel,fauli
 +server ~ # sophomorix-managementgroup --wifi schlaubi,torti
 +</code>
 +
 +
 +===== Freeradius installieren und aktivieren =====
 +
 +<code>
 +# apt install freeradius
 +# systemctl enable freeradius.service
 +</code>
 +
 +===== ntlm_auth in samba erlauben =====
 +
 +In der Datei ///etc/samba/smb.conf// ist folgende Zeile einzufügen:
 +
 +<code>
 +[global]
 +
 +...
 +ntlm auth = mschapv2-and-ntlmv2-only
 +</code>
 +
 +Danach muss der samba-ad-dc Dienst neu gestartet werden:
 +
 +<code>
 +
 +# systemctl restart samba-ad-dc.service
 +</code>
 +
 +===== Radius konfigurieren =====
 +
 +Dem Freeradius-Dient muss Zugriff auf winbind gegeben werden:
 +
 +<code>
 +
 +# usermod -a -G winbindd_priv freerad
 +# chown root:winbindd_priv /var/lib/samba/winbindd_privileged/
 +
 +</code>
 +
 +In dem Verzeichnis ///etc/freeradius/3.0/sites-enabled// in die Dateien //default// und //inner-tunnel// ganz am Anfang unter //authenticate ist ntlm_auth// einzufügen.
 +
 +<code>
 +authenticate {
 +   ntlm_auth
 +   # ab hier geht es weiter
 +</code>
 +
 +Die Datei ///etc/freeradius/3.0/mods-enabled/mschap// sind im Abschnitt mschap zwei Einträge zu ergänzen:
 +
 +<code>
 +mschap {
 +        use_mppe = yes
 +        with_ntdomain_hack = yes
 +        # hier geht es weiter
 +</code>
 +
 +Anpassen des Abschnitts //ntlm_auth// weiter unten. Zuerst das Kommentarzeichen # entfernen, dann die Zeile folgendermaßen anpassen:
 +
 +<code>
 +# eine Zeile
 +ntlm_auth = "/usr/bin/ntlm_auth --allow-mschapv2 --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}"
 +
 +</code>
 +
 +Dabei muss DOMÄNE durch den eigenen Domänennamen (Samba-Domäne) ersetzt werden. Die Option –require-membership-of=… lässt nur Mitglieder der Gruppe wifi zu. So funktioniert die WLAN-Steuerung über die WebUI.
 +
 +Danach ist die Datei ///etc/freeradius/3.0/mods-enabled/ntlm_auth// noch anzupassen. Zuerst ist das Kommentarzeichen # zu entfernen. Danach ist die Zeile wie folgt anzupassen:
 +
 +<code>
 +exec ntlm_auth {
 +  wait = yes
 +     # eine Zeile
 +     program = "/usr/bin/ntlm_auth --allow-mschapv2 --request-nt-key --domain=DOMÄNE --require-membership-of=DOMÄNE\wifi --username=%{mschap:User-Name} --password=%{User-Password}"
 +}
 +</code>
 +
 +Dabei muss DOMÄNE durch den eigenen Domänennamen (Samba-Domäne) ersetzt werden.
 +
 +In der Datei ///etc/freeradius/3.0/users// ist ganz oben nachstehende Zeile einzufügen.
 +
 +<code>
 +DEFAULT     Auth-Type = ntlm_auth
 +</code>
 +
 +Nun ist der Freeradius-Dienst neuzustarten:
 +<code>
 +# systemctl restart freeradius.service
 +</code>
 +
 +<note important>
 +Das Defaultverhalten der lmn7 ist, dass ein neu angelegter User immer in der Gruppe wifi ist, d.h. auch alle Schüler dürfen zunächst in das WLAN.</note>
 +
 +Die Steuerung der Gruppenzugehörigkeit kann auf der Konsole wie folgt gesetzt werden:
 +
 +<code>
 +# sophomorix-managementgroup --nowifi/--wifi user1,user2,...
 +</code>
 +
 +Um alle Schüler aus der Gruppe wifi zu nehmen, läßt man sich alle User des Systems auflisten und schreibt diese in eine Datei. Dies kann wie folgt erledigt werden:
 +
 +<code>
 +# samba-tool user list > user.txt
 +</code>
 +
 +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:
 +
 +<code>
 +#less user |  tr '\n' ',' > usermitkomma.txt
 +</code>
 +
 +Die Datei kann jetzt an den o.g. Sophomorix-Befehl übergeben werden:
 +
 +<code>
 +# sophomorix-managementgroup --nowifi $(less usermitkomma.txt)
 +</code>
 +
 +===== Firewallregeln anpassen =====
 +
 +Auf dem lmn-Server ist in der Datei ///etc/linuxmuster/allowed_ports// der Radiusport 1812 einzutragen:
 +
 +<code>
 +udp domain,netbios-ns,netbios-dgm,9000:9100,1812
 +</code>
 +
 +Danach ist der lmn-Server neu zu starten.
 +
 +Auf der Firewall OPNsense® muss je nach eigenen Voraussetzungen dafür gesorgt werden, dass die AP’s aus dem Wlan-Netz den Server auf dem Port 1812 via udp erreichen können. Es ist darauf zu achten, dass die IP des Servers den eigenen Netzvorgaben entspricht (also z.B. 10.0.0.1/16 oder /24 oder 10.16.1.1/16 oder /24)
 +
 +Die Regel auf der OPNsense® hierzu könnten, wie nachstehend abgebildet, eingetragen werden.
 +
 +
 +{{ :anwenderwiki:server_lmn7:freeradius:10-fw-opnsense-rule-for-radius.png?800 | OPNSense-Regeln}}
 +
 +Jetzt sollte die Authentifizierung per WPA2-Enterprise funktionieren, sofern der Testuser in der Gruppe wifi ist. Ein Zertifikat ist nicht erforderlich.
 +
 +Sollte das nicht funktionieren, hält man den Freeradius-Dienst an und startet ihn im Debugmodus.
 +
 +<code>
 +# service freeradius stop
 +# service freeradius debug
 +</code>
 +
 +Jetzt sieht man alle Vorgänge während man versucht, sich mit einem Device zu verbinden.
 +
 +====== APs im Freeradius eintragen ======
 +
 +Die APs müssen im Freeradius noch in der Datei ///etc/freeradius/3.0/clients.conf// eingetragen werden. Dies erfolgt wie in nachstehendem Schema dargestellt:
 +
 +<code>
 +client server {
 +ipaddr = 10.0.0.1
 +secret = GeHeim
 +}
 +
 +client opnsense {
 +ipaddr = 10.0.0.254
 +secret = GeHeim
 +}
 +
 +client unifi {
 +ipaddr = 10.0.0.10
 +secret = GeHeim
 +}
 +
 +</code>
 +
 +Um den APs feste IPs zuzuweisen, sollten diese auf dem lmn-Server in der Datei ///etc/linuxmuster/sophomorix/default-school/devices.csv// eingetragen sein.
 +
 +Je nachdem, ob in jedem (Sub)-netz die APs angeschlossen werden, ist die zuvor dargestellte Firewall-Regel anzupassen. Der Radius-Port in der OPNsense® müsste dann z.B. von Subnetz A (blau) zu Subnetz B (grün Servernetz) geöffnet werden, damit alle APs Zugriff auf den Radius-Dienst erhalten.
 +
  
 [[anwenderwiki:server_lmn7:freeradius:start]]