Hallo,
ich bin nun selber etwas weitergekommen und mir ist aufgefallen, daß die SSO Konfiguration in Kombination mit dem Sperren/Freigeben von Internet über die Steuerung der Gruppenzugehörigkeit zur Gruppe „internet“ so nicht funktionieren kann.
Ich versuche meine Erkenntnisse zu erklären und bitte um Verbesserung, falls ich falsch liege.
firewall:
/usr/local/etc/squid/pre-auth/20-negotiate.auth.conf:
auth_param negotiate program /usr/local/libexec/squid/negotiate_kerberos_auth -i -s HTTP/firewall.linuxmuster.lan@LINUXMUSTER.LAN
auth_param negotiate keep_alive on
auth_param negotiate children 5
negotiate_kerberos_auth authentifiziert den Benutzer nur nach dessen Existenz und Kennwort, aber nicht über die Gruppenzugehörigkeit. Damit wird der daraufhin folgende Block mit der PAM Authentifizierung, in welcher auf Gruppenzugehörigkeit zur Gruppe „internet“ geprüft wird, in der squid.conf ignoriert.
Also dieser hier:
firewall:
/usr/local/etc/squid/squid.conf
# Authentication Settings
# Configure Local User Authentication helper
auth_param basic program /usr/local/libexec/squid/basic_pam_auth -o
auth_param basic realm OPNsense proxy authentication
auth_param basic credentialsttl 2 hours
auth_param basic children 5
# ACL - Local Authorized Users - local_auth
acl local_auth proxy_auth REQUIRED
Eine Kerberos Authentifizierung nach Gruppenzugehörigkeit könnte man mit dem Modul ext_kerberos_ldap_group_acl erreichen. Jetzt müsste man also, wenn SSO über die Firewall WebUI konfiguriert wird die Squid Konfiguration so schreiben lassen:
Folgendes muss weg (hier kommentiert):
#auth_param basic program /usr/local/libexec/squid/basic_pam_auth -o
#auth_param basic realm OPNsense proxy authentication
#auth_param basic credentialsttl 2 hours
#auth_param basic children 5
#acl local_auth proxy_auth REQUIRED
...
#http_access allow local_auth
Stattdessen muß rein z.B.
...
# Pre-auth plugins
include /usr/local/etc/squid/pre-auth/*.conf
...
external_acl_type kerberos_group ttl=60 negative_ttl=60 %LOGIN /usr/local/libexec/squid/ext_kerberos_ldap_group_acl -d -a -g internet -D LINUXMUSTER.LAN -S server.linuxmuster.lan
acl GroupProxy external kerberos_group
http_access deny !GroupProxy
Dann funktioniert das Aktivieren/Deaktivieren von Internet über die Server WebUI oder auch über die Kommandozeile. Die Änderung greift nach Ablauf der ttl von 60 Sekunden.
Wie man das jetzt aber vernünftig in den OPNsense squid.conf Generator übernimmt, weiß ich leider nicht. Vielleicht kann das ein Entwickler so, oder so ähnlich integrieren?
Für meine Tests habe ich jetzt auf der Firewall:
Services - WebProxy - Administration - Forward Proxy - Authentication Settings:
Authentication Method: Nothing selected
Und eine Datei erstellt:
/usr/local/etc/squid/pre-auth/30-group.auth.conf:
external_acl_type kerberos_group ttl=10 negative_ttl=10 %LOGIN /usr/local/libexec/squid/ext_kerberos_ldap_group_acl -d -a -g internet -D LINUXMUSTER.LAN -S server.linuxmuster.lan
acl GroupProxy external kerberos_group
http_access deny !GroupProxy
Aber das ist natürlich nicht elegant…
Danke!