Squid-Kit-ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 162: | Zeile 162: | ||
===Neu starten=== | ===Neu starten=== | ||
*systemctl restart squid | *systemctl restart squid | ||
| + | ==Fehlersuche LDAP-Gruppen== | ||
| + | ;Wenn Gruppen nicht greifen, liegt es fast immer an LDAP oder am Filter. | ||
| + | ;Diese Checks helfen, das Problem schnell einzugrenzen. | ||
| + | |||
| + | ==Gruppe im LDAP vorhanden?== | ||
| + | ;Prüfen ob die Gruppe existiert. | ||
| + | ;Name muss exakt mit der Squid-ACL übereinstimmen. | ||
| + | *ldapsearch -x -b ou=groups,dc=it213,dc=int cn=agents | ||
| + | |||
| + | ==Benutzer in Gruppe enthalten?== | ||
| + | ;Wichtig: memberUid muss den Login-Namen enthalten. | ||
| + | ;uid und memberUid müssen identisch sein. | ||
| + | *ldapsearch -x -b ou=groups,dc=it213,dc=int cn=agents | grep memberUid | ||
| + | |||
| + | ==Helper direkt testen== | ||
| + | ;Testet die Gruppenabfrage unabhängig von Squid. | ||
| + | ;Nur wenn hier OK kommt, funktioniert es auch im Proxy. | ||
| + | *echo "fred agents" | /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))" -H ldaps://ldap.it213.int | ||
| + | |||
| + | ==LDAP Login testen== | ||
| + | ;Prüft ob Benutzer sich überhaupt authentifizieren kann. | ||
| + | ;Wenn das fehlschlägt, funktioniert Squid ebenfalls nicht. | ||
| + | *ldapwhoami -x -D "uid=fred,ou=users,dc=it213,dc=int" -W | ||
| + | |||
| + | ==Squid Logs prüfen== | ||
| + | ;Zeigt ob Anfragen erlaubt oder geblockt werden. | ||
| + | ;User steht in der Logzeile am Ende. | ||
| + | *tail -f /var/log/squid/access.log | ||
| + | |||
| + | ==Typische Fehler== | ||
| + | *Falscher Gruppenname (agents vs agent) | ||
| + | *memberUid fehlt oder falsch geschrieben | ||
| + | *uid stimmt nicht mit Login überein | ||
| + | *Filter passt nicht zum Schema (posixGroup vs memberOf) | ||
| + | *Reihenfolge der http_access Regeln falsch | ||
Version vom 2. April 2026, 14:52 Uhr
Auf dem LDAP Server
Wir legen 2 Gruppen an
- Wir trennen Benutzer nach Berechtigungen in Gruppen.
- Die Gruppe „teamleitung“ bekommt später vollen Zugriff, „agents“ wird eingeschränkt.
Gruppen anlegen
- ldapaddgroup callcenter
- ldapaddgroup teamleitung
- ldapaddgroup agents
- Benutzer werden den Gruppen zugeordnet.
- Die Gruppenzugehörigkeit steuert später den Zugriff im Squid.
Nutzer anlegen
- ldapadduser wilma callcenter
- ldapadduser betty callcenter
- ldapadduser fred callcenter
- ldapadduser barney callcenter
Nutzer den beiden Gruppen hinzufügen
- ldapaddusertogroup wilma teamleitung
- ldapaddusertogroup betty teamleitung
- ldapaddusertogroup fred agents
- ldapaddusertogroup barney agents
- Setzt die Passwörter für die Benutzer.
- Diese werden für die Anmeldung am Proxy verwendet.
- ldapsetpasswd wilma
- ldapsetpasswd betty
- ldapsetpasswd fred
- ldapsetpasswd barney
Auf dem SQUID Server
Authentifizierung mit LDAP
- Authentifizierung erfolgt gegen einen LDAP-Server.
- TLS sollte verwendet werden, damit Benutzername und Passwort nicht im Klartext übertragen werden.
- Benötigte Pakete für LDAP-Unterstützung.
ldap-utils enthält Tools zum Testen der Verbindung.
Installation
- apt install libldap2 ldap-utils
Wenn noch nicht geschehen
- apt install squid-openssl
Wir testen die Verbindung zum LDAP Server
- Wir erstellen die Konfiguration
- vi /etc/ldap/ldap.conf
BASE dc=it213,dc=int URI ldaps://ldap.it213.int ldap_version
Kommen wir auf den Ldap Server?
- ldapsearch -x
Verschlüsselung ok?
- openssl s_client -host ldap.it213.int -port 636
Die Konfiguration
Wir fangen wieder bei null an
- cd /etc/squid
- grep "^[^#]" squid.conf.org > squid.conf
Die Änderungen
- vi /etc/squid/squid.conf
acl localnet src 0.0.0.1-0.255.255.255 acl localnet src 10.0.0.0/8 acl localnet src 100.64.0.0/10 acl localnet src 169.254.0.0/16 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 acl localnet src fc00::/7 acl localnet src fe80::/10 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager # http_access allow localhost http_access deny to_localhost http_access deny to_linklocal include /etc/squid/conf.d/*.conf auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f uid=%s -H ldaps://ldap.it213.int auth_param basic children 20 startup=0 idle=1 auth_param basic concurrency 0 auth_param basic credentialsttl 500 seconds auth_param basic realm it213 proxy server auth_param basic casesensitive off acl ldap-auth proxy_auth REQUIRED http_access allow ldap-auth http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Neu starten
- systemctl restart squid
Die Änderungen
- vi /etc/squid/squid.conf
acl localnet src 0.0.0.1-0.255.255.255 acl localnet src 10.0.0.0/8 acl localnet src 100.64.0.0/10 acl localnet src 169.254.0.0/16 acl localnet src 172.16.0.0/12 acl localnet src 192.168.0.0/16 acl localnet src fc00::/7 acl localnet src fe80::/10 acl SSL_ports port 443 acl Safe_ports port 80 acl Safe_ports port 21 acl Safe_ports port 443 acl Safe_ports port 70 acl Safe_ports port 210 acl Safe_ports port 1025-65535 acl Safe_ports port 280 acl Safe_ports port 488 acl Safe_ports port 591 acl Safe_ports port 777 http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localhost manager http_access deny manager # http_access allow localhost http_access deny to_localhost http_access deny to_linklocal include /etc/squid/conf.d/*.conf auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f uid=%s -H ldaps://ldap.it213.int auth_param basic children 20 startup=0 idle=1 auth_param basic concurrency 0 auth_param basic credentialsttl 500 seconds auth_param basic realm it213 proxy server auth_param basic casesensitive off acl ldap-auth proxy_auth REQUIRED external_acl_type ldap_group %LOGIN %DATA /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))" -H ldaps://ldap.it213.int acl teamleitung external ldap_group teamleitung acl agents external ldap_group agents acl badsites url_regex "/etc/squid/badsites.txt" http_access allow teamleitung http_access allow agents !badsites http_access deny all http_port 3128 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 20% 4320
Badsites füllen
- cat <<EOF > /etc/squid/badsites.txt
bild.de spiegel.de faz.de tagesschau.de lol.de
EOF
Neu starten
- systemctl restart squid
Fehlersuche LDAP-Gruppen
- Wenn Gruppen nicht greifen, liegt es fast immer an LDAP oder am Filter.
- Diese Checks helfen, das Problem schnell einzugrenzen.
Gruppe im LDAP vorhanden?
- Prüfen ob die Gruppe existiert.
- Name muss exakt mit der Squid-ACL übereinstimmen.
- ldapsearch -x -b ou=groups,dc=it213,dc=int cn=agents
Benutzer in Gruppe enthalten?
- Wichtig
- memberUid muss den Login-Namen enthalten.
- uid und memberUid müssen identisch sein.
- ldapsearch -x -b ou=groups,dc=it213,dc=int cn=agents | grep memberUid
Helper direkt testen
- Testet die Gruppenabfrage unabhängig von Squid.
- Nur wenn hier OK kommt, funktioniert es auch im Proxy.
- echo "fred agents" | /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))" -H ldaps://ldap.it213.int
LDAP Login testen
- Prüft ob Benutzer sich überhaupt authentifizieren kann.
- Wenn das fehlschlägt, funktioniert Squid ebenfalls nicht.
- ldapwhoami -x -D "uid=fred,ou=users,dc=it213,dc=int" -W
Squid Logs prüfen
- Zeigt ob Anfragen erlaubt oder geblockt werden.
- User steht in der Logzeile am Ende.
- tail -f /var/log/squid/access.log
Typische Fehler
- Falscher Gruppenname (agents vs agent)
- memberUid fehlt oder falsch geschrieben
- uid stimmt nicht mit Login überein
- Filter passt nicht zum Schema (posixGroup vs memberOf)
- Reihenfolge der http_access Regeln falsch