Univention Bugzilla – Bug 24062
Radius oder Coffecake Integration
Last modified: 2018-12-20 23:10:09 CET
An Schulen wird oft ein Standard W-Lan Scenario eingesetzt, das verlangt, dass sich W-Lan Nutzer zur Nachverfolgung Authentifizieren. Entsprechend sollten wir entweder Radius oder eine Login Lösung integrieren. Wobei sowohl bei UCD als auch Windows SSO wünschenswert ist.
Ticket 2011100610001841
Das Paket ucs-school-radius-802.1x stellt die freeradius-Konfiguration und -Integration für 802.1X-Setups bereit. Bei der Installation werden die URC-Variablen (freeradius/conf/*) korrekt gesetzt, und eine univention-firewall-Ausnahme hinzugefügt. Es muss noch die /etc/freeradius/clients.conf bearbeitet werden: Hier müssen die Authenticatoren (typischerweise W-LAN-Access-Points) eingetragen werden und ein Geheimnis (secrect) vergeben werden mit dem sich der Authenticator am RADIUS-Server authentisiert. Es fehlt noch die Implementation der Entscheidung welche Benutzer sich anmelden dürfen (siehe Bug #25780)
(In reply to comment #2) > Es muss noch die /etc/freeradius/clients.conf bearbeitet werden: > Hier müssen die Authenticatoren (typischerweise W-LAN-Access-Points) > eingetragen werden und ein Geheimnis (secrect) vergeben werden mit dem sich der > Authenticator am RADIUS-Server authentisiert. Einträge in der clients.conf sehen wie folgt aus (siehe auch clients.conf.example) client 172.16.17.18 { secret = DasGeheimeGeheimnis shortname = AP123 } (In reply to comment #2) > Bei der Installation werden die URC-Variablen (freeradius/conf/*) korrekt > gesetzt, und eine univention-firewall-Ausnahme hinzugefügt. Wenn freeradius/conf/auth-type/mschap true oder yes ist, wird die freeradius-Option eap→eap_type = peap gesetzt (ansonsten = md5) Wenn freeradius/conf/private/key/secret/file den Pfad zu einer Datei enthält, wird die freeradius-Option eap→tls→password_key_password auf die erste Zeile der Datei gesetzt. (ansonsten nicht gesetzt) Der Inhalt von freeradius/conf/private/key/file wird als freeradius-Option eap→tls→private_key_file gesetzt. Der Inhalt von freeradius/conf/certificate/file wird als freeradius-Option eap→tls→certificate_file gesetzt. Der Inhalt von freeradius/conf/ca/file wird als freeradius-Option eap→tls→CA_file gesetzt. Wenn freeradius/conf/auth-type/mschap true oder yes ist, wird der freeradius-Options-Abschnitt eap→ttls deaktiviert und die freeradius-Options-Abschnitte eap→peap authenticate→Auth-Type CHAP authenticate→Auth-Type MS-CHAP server inner-tunnel→authenticate→Auth-Type CHAP server inner-tunnel→authenticate→Auth-Type MS-CHAP mit eap→peap→default_eap_type = mschapv2 authenticate→Auth-Type CHAP→chap authenticate→Auth-Type MS-CHAP→mschap server inner-tunnel→authenticate→Auth-Type CHAP→chap server inner-tunnel→authenticate→Auth-Type MS-CHAP→mschap aktiviert. Zusätzlich werden die freeradius-Optionen authorize→chap authorize→mschap server inner-tunnel→authorize→chap server inner-tunnel→authorize→mschap aktiviert. (ansonsten deaktiviert) Außerdem wird das LDAP-Attribut-Mapping LM-Password → sambaLMPassword NT-Password → sambaNTPassword gesetzt. (ansonsten LM-Password → lmPassword NT-Password → ntPassword LM-Password → sambaLmPassword NT-Password → sambaNtPassword ) Zusätzlich wird die freeradius-Option mschap→authtype = MS-CHAP gesetzt. (ansonsten nicht gesetzt) Außerdem wird die freeradius-Option ldap→filter = "(uid=%{mschap:User-Name:-%{User-Name}})" gesetzt. (ansonsten ldap→filter = "(uid=%{Stripped-User-Name:-%{User-Name}}) ) Der Inhalt von freeradius/conf/log/strippednames wird als freeradius-Option log→stripped_names gesetzt. (ansonsten yes) Der Inhalt von freeradius/conf/log/auth wird als freeradius-Option log→auth gesetzt. (ansonsten yes) Der Inhalt von freeradius/conf/log/auth/badpass wird als freeradius-Option log→auth_badpass gesetzt. (ansonsten yes) Der Inhalt von freeradius/conf/log/auth/goodpas wird als freeradius-Option log→auth_goodpass gesetzt. (ansonsten no) Der Inhalt von freeradius/conf/servers/start wird als freeradius-Option thread pool→start_servers gesetzt. (ansonsten 5) Der Inhalt von freeradius/conf/servers/max wird als freeradius-Option log→max_servers gesetzt. (ansonsten 32) Der Inhalt von freeradius/conf/servers/spare/min wird als freeradius-Option log→min_spare_servers gesetzt. (ansonsten 3) Der Inhalt von freeradius/conf/servers/spare/max wird als freeradius-Option log→max_spare_servers gesetzt. (ansonsten 10) Der Inhalt von freeradius/conf/servers/maxrequests wird, wenn gesetzt, als freeradius-Option log→max_servers_per_server gesetzt. (ansonsten 0) Der Inhalt von freeradius/conf/realm wird, wenn gesetzt, als freeradius-Option in die Abschnitte authorize preacct server inner-tunnel→authorize übernommen. (ansonsten "suffix") Der Inhalt von freeradius/conf/users wird, wenn gesetzt, als freeradius-Option in die Abschnitte authorize preacct server inner-tunnel→authorize übernommen. (ansonsten "files") Der Inhalt von freeradius/conf/auth-type/mschap/mppe wird, wenn gesetzt, als freeradius-Option mschap→use_mppe gesetzt. (ansonsten "yes") Der Inhalt von freeradius/conf/auth-type/mschap/requireencryption wird, wenn gesetzt, als freeradius-Option mschap→require_encryption gesetzt. (ansonsten "yes") Der Inhalt von freeradius/conf/auth-type/mschap/strongencryption wird, wenn gesetzt, als freeradius-Option mschap→require_strong gesetzt. (ansonsten "yes") Der Inhalt von freeradius/conf/auth-type/mschap/ntdomainhack wird, wenn gesetzt, als freeradius-Option mschap→with_ntdomain_hack gesetzt. (ansonsten "yes") Der Inhalt von freeradius/conf/starttls wird, wenn gesetzt, als freeradius-Option ldap→tls→start_tls gesetzt. (ansonsten "no") Der Inhalt der /etc/machine.secret wird als freeradius-Option ldap→password gesetzt. Der Inhalt von ldap/base wird als freeradius-Option ldap→basedn gesetzt. Der Inhalt von ldap/server/name wird als freeradius-Option ldap→server gesetzt. Der Inhalt von ldap/hostdn wird als freeradius-Option ldap→identity gesetzt. Die Bedeutung der einzelnen freeradius-Optionen ist in den Kommentaren der Konfigurationsdateien unter /etc/freeradius dokumentiert.
Hinweiß für die QA: Dokumentation für die Einrichtung von WindowsXP-Clients findet sich an Bug #25940
ucs-school-radius-802.1x (1.0.1-1) unstable; urgency=low * support MAC filtering (Bug #24062) Es wird jetzt auch die MAC-Adresse (Calling-Station-Id) an das Authentisierungsprogramm übergeben, um MAC-Filterung zu unterstützen.
Konfigurations-Option "Automatisch eignen Windows-Anmeldenamen und Kennwort (und Domäne, falls vorhanden) verwenden" der WLAN-Verbindung wird im folgenden als AutoWinAn bezeichnet. Konfigurations-Option "Als Computer authentifizieren, wenn Computerinformationen verfügbar sind" der WLAN-Verbindung wird im folgenden als AutoComp bezeichnet. Automatische Anmeldung bei angemeldeten Benutzer AutoWinAn deaktiviert: Nutzt automatisch die zuletzt verwendeten Benutzername:Passwort, sofern vorhanden. Jedoch wird diese Information für jeden Benutzer einzeln in der Registry gespeichert: HKEY_CURRENT_USER\Software\Microsoft\EAPOL\UserEapInfo AutoWinAn aktiviert: Nutzt automatisch den aktuellen Benutzername:Passwort der bei der Anmeldung eingeben wurde. Automatische Anmeldung beim Login-Bildschirm (für gejointe Windows-Clients) Wenn AutoComp aktiv ist, versucht Windows sich beim Loginbildschirm automatisch als "host/${COMPUTER}" mit dem Computerpasswort anzumelden. Nach der Anmeldung eines Benutzers wird nach 180s die Verbindung neu authentifiziert; Hier müssen entweder manuell Benutzername:Passwort angegeben werden, oder, wenn AutoWinAn aktiv ist, wird direkt neu verbunden, Dienstausfall <1s. Das Zertifikat der Zertifizierungsstelle muss unter Vertrauenswürdige Stammzertifizierungsstellen → Lokaler Computer importiert sein, damit es auch bei der Anmeldung und für alle Benutzer zur Verfügung steht. Es ist sinnvoll für Rechner in der Domäne die Option "Keine Benutzeraufforderung zur Autorisierung neuer Server oder vertrauenswürdiger Zertifizierungsstellen" zu aktivieren, um Benutzer nicht dazu zu verleiten MitM-Angriffen zuzustimmen.
ucs-school-radius-802.1x (1.0.2-1) unstable; urgency=low * allow access according to proxy settings (Bug #24062) Beispiel der UCRV: proxy/filter/setting/bla/priority: 90 proxy/filter/setting/bla/wlan: false proxy/filter/setting/blubb/priority: 100 proxy/filter/setting/blubb/wlan: true proxy/filter/usergroup/Gruppe: fritz,hans,beide proxy/filter/usergroup/GruppeB: lisa,gretchen,beide proxy/filter/groupdefault/Gruppe: bla proxy/filter/groupdefault/GruppeB: blubb Die Priority wird mit 0 angenommen, wenn sie nicht angegeben ist. Höhere Priority überschreibt. In obigem Beispiel darf Benutzer "beide" auf das WLAN zugreifen.
The following packages have unmet dependencies: ucs-school-radius-802.1x : Depends: freeradius-utils but it is not installable
(In reply to comment #8) > The following packages have unmet dependencies: > ucs-school-radius-802.1x : Depends: freeradius-utils but it is not installable freeradius-utils befindet sich noch unter unmaintained. Nach der Installation via "univention-install ucs-school-radius-802.1x" liegen in /etc/freeradius/ mehrere .dpkg-new-Dateien, die vom freeradius-Server ebenfalls eingelesen werden und dadurch die Config stören/unbrauchbar machen. Werden die Dateien verschoben, sehen die Ausgaben schon passender aus. Z.B. wird nicht versucht, ldap.your.domain:389 zu erreichen. Als LDAP-Server-Port soll 7389 konfiguriert werden. Derzeit wird immer 389 genutzt.
(In reply to comment #9) > Als LDAP-Server-Port soll 7389 konfiguriert werden. Derzeit wird immer 389 > genutzt. Das sorgt dafür, dass das PEAP/EAP auf Samba4-Systemen nicht funktioniert. Es sollte der Wert der UCR-Variable ldap/server/port verwendet werden. In /etc/freeradius/modules/ldap muss port = @%@ldap/server/port@%@ gesetzt werden.
(In reply to comment #10) > (In reply to comment #9) > > Als LDAP-Server-Port soll 7389 konfiguriert werden. Derzeit wird immer 389 > > genutzt. > > Das sorgt dafür, dass das PEAP/EAP auf Samba4-Systemen nicht funktioniert. > Es sollte der Wert der UCR-Variable ldap/server/port verwendet werden. > > In /etc/freeradius/modules/ldap muss > port = @%@ldap/server/port@%@ > gesetzt werden. ucs-school-radius-802.1x (1.0.3-1)
Erster Testdurchlauf, bei dem folgende Punkte manuell gefixt wurden: - Port für LDAP-Server - *.dpkg-* Dateien entfernt Folgende Schritte wurden dann durchgeführt: → Accesspoint konfigurieren → 802.1x aktivieren → Radius-Server-Adresse == IP-Adresse des SchulDCs → Radius-Port == 1812 → Shared Key setzen → SSL-Root-CA vom Schul-DC beziehen und sicher zum Client transferieren # wget http://10.200.18.35/ucs-root-ca.crt → Zertifikat via USB auf Windowsclient einspielen → Freeradius-Integration für UCS@school auf Schul-DC installieren # univention-install ucs-school-radius-802.1x → Eintrag hinzufügen (10.200.18.5 == Accesspoint; secret == shared key (siehe oben)): # vim /etc/freeradius/clients.conf ==> client 10.200.18.5 { ==> secret = univention123 ==> shortname = MyFirstAccesspoint ==> } # /etc/init.d/freeradius restart → Ausgabe in /var/log/freeradius/radius.log, wenn Login erfolgreich: Fri May 25 15:01:26 2012 : Auth: Login OK: [anton2] (from client MyFirstAccesspoint port 0 via TLS tunnel) Fri May 25 15:01:26 2012 : Auth: Login OK: [anton2] (from client MyFirstAccesspoint port 0 cli A4-D1-D2-3A-EA-28) → Ausgabe in /var/log/freeradius/radius.log, wenn Login wg. WLAN-Gruppeneinstellung oder falschem Passwort abgelehnt: Fri May 25 15:02:52 2012 : Auth: Login incorrect (mschap: External script says Logon failure (0xc000006d)): [anton2/<via Auth-Type = EAP>] (from client MyFirstAccesspoint port 0 via TLS tunnel) Fri May 25 15:02:52 2012 : Auth: Login incorrect: [anton2/<via Auth-Type = EAP>] (from client MyFirstAccesspoint port 0 cli A4-D1-D2-3A-EA-28) → Authentifizierung funktioniert nur mit gültigen Passwort → Authentifizierung funktioniert nur, wenn Internetregel mit höchster Priorität den Zugriff erlaubt; Internetregeln mit niedrigerer Priorität und WLAN-Erlaubnis lassen Login nicht zu, wenn höherwertige Internetregel dies verweigert → Ändern der Priorität einer Internetregel hat sofortige Auswirkungen auf WLAN-Anmeldung → Ändern des WLAN-Zugriffs einer Internetregel hat sofortige Auswirkungen auf WLAN-Anmeldung → Authentifizierung scheint nicht anfällig für LDAP-Wildcards im Benutzernamen zu sein → Authentifizierung mit iPad erfolgreich → Authentifizierung mit Win7 erfolgreich Offen: → Windows XP SP3
(In reply to comment #9) > Nach der Installation via "univention-install ucs-school-radius-802.1x" liegen > in /etc/freeradius/ mehrere .dpkg-new-Dateien, die vom freeradius-Server > ebenfalls eingelesen werden und dadurch die Config stören/unbrauchbar machen. Dafür wurde ein Patch übernommen: freeradius (2.1.10+dfsg-2.71.201205251514)
(In reply to comment #9) > (In reply to comment #8) > > The following packages have unmet dependencies: > > ucs-school-radius-802.1x : Depends: freeradius-utils but it is not installable > > freeradius-utils befindet sich noch unter unmaintained. Es wurde für UCS@school nach maintained aufgenommen. (Siehe auch Bug #27295)
(In reply to comment #10) > (In reply to comment #9) > > Als LDAP-Server-Port soll 7389 konfiguriert werden. Derzeit wird immer 389 > > genutzt. > > Das sorgt dafür, dass das PEAP/EAP auf Samba4-Systemen nicht funktioniert. > Es sollte der Wert der UCR-Variable ldap/server/port verwendet werden. > > In /etc/freeradius/modules/ldap muss > port = @%@ldap/server/port@%@ > gesetzt werden. ldap/server/port ist nicht zwangsläufig gesetzt. Beim Auslesen der UCR-Variable sollte auf 7389 als Fallback zurückgegriffen werden. → REOPEN Erneuter Test in Master-Slave-Setup: → Authentifizierung funktioniert nur mit gültigen Passwort → Authentifizierung funktioniert nur, wenn Internetregel mit höchster Priorität den Zugriff erlaubt Internetregeln mit niedrigerer Priorität und WLAN-Erlaubnis lassen Login nicht zu, wenn höherwertige Internetregel dies verweigert → Ändern der Priorität einer Internetregel hat sofortige Auswirkungen auf WLAN-Anmeldung → Ändern des WLAN-Zugriffs einer Internetregel hat sofortige Auswirkungen auf WLAN-Anmeldung → Authentifizierung scheint nicht anfällig für LDAP-Wildcards im Benutzernamen zu sein → Authentifizierung mit iPad erfolgreich → Authentifizierung mit Win7 erfolgreich → Authentifizierung mit WinXP SP3 plus weitere Updates erfolgreich → Authentifizierung mit Android erfolgreich (In reply to comment #13) > (In reply to comment #9) > > Nach der Installation via "univention-install ucs-school-radius-802.1x" > > liegen in /etc/freeradius/ mehrere .dpkg-new-Dateien, die vom freeradius- > > Server ebenfalls eingelesen werden und dadurch die Config stören/ > > unbrauchbar machen. > Dafür wurde ein Patch übernommen: freeradius (2.1.10+dfsg-2.71.201205251514) → "freeradius -X -f" zeigte beim Starten keine .dpkg-new-Dateien mehr an → Patch ist enthalten, allerdings testet dieser nur auf ".dpkg-new"-Dateien. Gelegentlich haben wir dort auch .dpkg-dist-Dateien herumliegen, die ebenfalls ignoriert werden sollten → REOPEN (In reply to comment #14) > (In reply to comment #9) > > (In reply to comment #8) > > > The following packages have unmet dependencies: > > > ucs-school-radius-802.1x : Depends: freeradius-utils but it is not installable > > > > freeradius-utils befindet sich noch unter unmaintained. > Es wurde für UCS@school nach maintained aufgenommen. (Siehe auch Bug #27295) sschwardt@omar:~$ find /var/univention/buildsystem2/test_mirror/ftp/3.0/maintained/component/ucsschool -iname freeradius-utils*.deb /var/univention/buildsystem2/test_mirror/ftp/3.0/maintained/component/ucsschool/amd64/freeradius-utils_2.1.10+dfsg-2.71.201205251514_amd64.deb /var/univention/buildsystem2/test_mirror/ftp/3.0/maintained/component/ucsschool/i386/freeradius-utils_2.1.10+dfsg-2.71.201205251514_i386.deb
(In reply to comment #15) > (In reply to comment #10) > > (In reply to comment #9) > > > Als LDAP-Server-Port soll 7389 konfiguriert werden. Derzeit wird immer 389 > > > genutzt. > > > > Das sorgt dafür, dass das PEAP/EAP auf Samba4-Systemen nicht funktioniert. > > Es sollte der Wert der UCR-Variable ldap/server/port verwendet werden. > > > > In /etc/freeradius/modules/ldap muss > > port = @%@ldap/server/port@%@ > > gesetzt werden. > > ldap/server/port ist nicht zwangsläufig gesetzt. Beim Auslesen der UCR-Variable > sollte auf 7389 als Fallback zurückgegriffen werden. → REOPEN Korrigiert: ucs-school-radius-802.1x (1.0.4-1)
> (In reply to comment #13) > > (In reply to comment #9) > > > Nach der Installation via "univention-install ucs-school-radius-802.1x" > > > liegen in /etc/freeradius/ mehrere .dpkg-new-Dateien, die vom freeradius- > > > Server ebenfalls eingelesen werden und dadurch die Config stören/ > > > unbrauchbar machen. > > Dafür wurde ein Patch übernommen: freeradius (2.1.10+dfsg-2.71.201205251514) > > → "freeradius -X -f" zeigte beim Starten keine .dpkg-new-Dateien mehr an > → Patch ist enthalten, allerdings testet dieser nur auf ".dpkg-new"-Dateien. > Gelegentlich haben wir dort auch .dpkg-dist-Dateien herumliegen, die > ebenfalls ignoriert werden sollten → REOPEN Es werden jetzt .dpkg-new, .dpkg-old, .dpkg-dist ignoriert.
(In reply to comment #17) > Es werden jetzt .dpkg-new, .dpkg-old, .dpkg-dist ignoriert. # cd /etc/freeradius/modules # touch schwardt{,.dpkg-new,.dpkg-test,.dpkg-dist,.dpkg-old} # ls schwardt* schwardt schwardt.dpkg-dist schwardt.dpkg-new schwardt.dpkg-old schwardt.dpkg-test # freeradius -X -f | grep schwardt including configuration file /etc/freeradius/modules/schwardt.dpkg-test including configuration file /etc/freeradius/modules/schwardt ^C # → VERIFIED (In reply to comment #16) > > ldap/server/port ist nicht zwangsläufig gesetzt. Beim Auslesen der > > UCR-Variable sollte auf 7389 als Fallback zurückgegriffen werden. → REOPEN > Korrigiert: ucs-school-radius-802.1x (1.0.4-1) # freeradius -X -f | grep -A 4 "ldap {" ldap { server = "dcmitte.nstx.de" port = 7389 ^C # ucr set ldap/server/port=12345 # freeradius -X -f | grep -A 2 "ldap {" ldap { server = "dcmitte.nstx.de" port = 12345 ^C # ucr unset ldap/server/port # freeradius -X -f | grep -A 2 "ldap {" ldap { server = "dcmitte.nstx.de" port = 7389 ^C # → VERIFIED
UCS@school 3.0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS@school erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"