Squid-Kit-ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
| − | ==Authentifizierung mit | + | ==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. | |
| + | Zusätzliche Packete: | ||
| + | *apt install libldap-2.5-0 ldap-utils | ||
| − | + | ;Alternative Paketnamen je nach Debian-Version. | |
| − | + | Debian 13 | |
| − | + | *apt install libldap2 ldap-utils | |
| − | |||
| − | |||
| − | |||
| − | + | ;Konfiguration der LDAP-Authentifizierung in Squid. | |
| − | acl ldap-auth proxy_auth REQUIRED | + | ;Squid prüft Benutzername/Passwort direkt im LDAP. |
| + | auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b ou=users,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f uid=%s -h ldap.it113.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 xinux proxy server | ||
| + | auth_param basic casesensitive off | ||
| + | |||
| + | ;ACL für alle erfolgreich authentifizierten Benutzer. | ||
| + | ;REQUIRED bedeutet: Login ist zwingend notwendig. | ||
| + | acl ldap-auth proxy_auth REQUIRED | ||
| + | |||
| + | ;Erlaubt Zugriff für authentifizierte Benutzer. | ||
| + | http_access allow ldap-auth | ||
| + | |||
| + | |||
| + | ===Erklärung=== | ||
| + | ;basic_ldap_auth prüft Benutzername/Passwort gegen LDAP. | ||
| + | ;-b gibt die Base-DN an, in der gesucht wird. | ||
| + | ;-D und -w sind die Zugangsdaten für den LDAP-Bind. | ||
| + | ;-f uid=%s bedeutet: Loginname wird auf das Attribut uid gemappt. | ||
| + | ;-h ist der LDAP-Server. | ||
| + | |||
| + | ;Wichtig: | ||
| + | ;Für TLS sollte ldaps:// oder StartTLS verwendet werden. | ||
| + | ;Zertifikate müssen auf dem System vertraut sein. | ||
| + | |||
| + | |||
| + | ===Voraussetzungen im LDAP=== | ||
| + | ;Es muss eine OU für Benutzer existieren. | ||
| + | ;Benutzer benötigen mindestens uid und userPassword. | ||
| + | |||
| + | ;Beispiel Benutzerstruktur: | ||
| + | dn: uid=martha,ou=users,dc=it113,dc=int | ||
| + | objectClass: inetOrgPerson | ||
| + | objectClass: posixAccount | ||
| + | uid: martha | ||
| + | cn: Martha | ||
| + | sn: User | ||
| + | userPassword: {SSHA}... | ||
| + | |||
| + | ;Das Attribut uid wird für den Login verwendet. | ||
| + | ;Das Passwort muss im LDAP gesetzt sein. | ||
| − | |||
| − | |||
| − | |||
===Authentifizierung mit LDAP-Gruppen=== | ===Authentifizierung mit LDAP-Gruppen=== | ||
| − | + | ;Gruppen werden verwendet, um Zugriffe gezielt zu steuern. | |
| − | + | ;Squid fragt dabei LDAP ab, ob ein Benutzer Mitglied einer Gruppe ist. | |
| − | + | ||
| − | external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc= | + | ;Definition einer externen ACL für LDAP-Gruppen. |
| + | external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))" -h ldap.it113.int | ||
| + | |||
| + | ;ACL für eine konkrete Gruppe (hier: it). | ||
| + | ;Nur Mitglieder dieser Gruppe matchen diese ACL. | ||
| + | acl it external ldap_group it | ||
| + | |||
| + | ;Erlaubt Zugriff nur für Mitglieder der Gruppe. | ||
| + | http_access allow it | ||
| + | |||
| + | |||
| + | ===Erklärung=== | ||
| + | ;external_acl_type ruft ein externes Programm zur Prüfung auf. | ||
| + | ;%LOGIN übergibt den Benutzernamen an das Script. | ||
| + | ;%g steht für Gruppenname, %u für Benutzername. | ||
| + | |||
| + | ;Filter: | ||
| + | ;Es wird geprüft, ob user (%u) in Gruppe (%g) ist. | ||
| + | ;Dazu wird memberUid im posixGroup verwendet. | ||
| + | |||
| + | |||
| + | ===Voraussetzungen im LDAP (Gruppen)=== | ||
| + | ;Es muss eine OU für Gruppen existieren. | ||
| + | ;Gruppen müssen vom Typ posixGroup sein. | ||
| + | |||
| + | ;Beispiel Gruppe: | ||
| + | dn: cn=it,ou=groups,dc=it113,dc=int | ||
| + | objectClass: posixGroup | ||
| + | cn: it | ||
| + | gidNumber: 10000 | ||
| + | memberUid: martha | ||
| + | memberUid: leroy | ||
| + | |||
| + | ;memberUid enthält die Benutzernamen (uid). | ||
| + | ;Diese müssen mit den Login-Namen übereinstimmen. | ||
| + | |||
| + | |||
| + | ===Wichtig=== | ||
| + | ;Reihenfolge der Regeln beachten: | ||
| + | ;Gruppenprüfung sollte vor allgemeinen allow-Regeln stehen. | ||
| − | + | ;Beispiel: | |
| + | http_access allow it | ||
| + | http_access deny all | ||
| − | + | ;Wenn vorher allow ldap-auth steht, greift die Gruppenprüfung nicht mehr. | |
| − | |||
Version vom 2. April 2026, 13:10 Uhr
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.
Zusätzliche Packete:
- apt install libldap-2.5-0 ldap-utils
- Alternative Paketnamen je nach Debian-Version.
Debian 13
- apt install libldap2 ldap-utils
- Konfiguration der LDAP-Authentifizierung in Squid.
- Squid prüft Benutzername/Passwort direkt im LDAP.
auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b ou=users,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f uid=%s -h ldap.it113.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 xinux proxy server auth_param basic casesensitive off
- ACL für alle erfolgreich authentifizierten Benutzer.
- REQUIRED bedeutet
- Login ist zwingend notwendig.
acl ldap-auth proxy_auth REQUIRED
- Erlaubt Zugriff für authentifizierte Benutzer.
http_access allow ldap-auth
Erklärung
- basic_ldap_auth prüft Benutzername/Passwort gegen LDAP.
- -b gibt die Base-DN an, in der gesucht wird.
- -D und -w sind die Zugangsdaten für den LDAP-Bind.
- -f uid=%s bedeutet
- Loginname wird auf das Attribut uid gemappt.
- -h ist der LDAP-Server.
- Wichtig
- Für TLS sollte ldaps
- // oder StartTLS verwendet werden.
- Zertifikate müssen auf dem System vertraut sein.
Voraussetzungen im LDAP
- Es muss eine OU für Benutzer existieren.
- Benutzer benötigen mindestens uid und userPassword.
- Beispiel Benutzerstruktur
dn: uid=martha,ou=users,dc=it113,dc=int
objectClass: inetOrgPerson
objectClass: posixAccount
uid: martha
cn: Martha
sn: User
userPassword: {SSHA}...
- Das Attribut uid wird für den Login verwendet.
- Das Passwort muss im LDAP gesetzt sein.
Authentifizierung mit LDAP-Gruppen
- Gruppen werden verwendet, um Zugriffe gezielt zu steuern.
- Squid fragt dabei LDAP ab, ob ein Benutzer Mitglied einer Gruppe ist.
- Definition einer externen ACL für LDAP-Gruppen.
external_acl_type ldap_group %LOGIN /usr/lib/squid/ext_ldap_group_acl -v 3 -b ou=groups,dc=it113,dc=int -D cn=admin,dc=it113,dc=int -w 123Start$ -f "(&(objectClass=posixGroup)(cn=%g)(memberUid=%u))" -h ldap.it113.int
- ACL für eine konkrete Gruppe (hier
- it).
- Nur Mitglieder dieser Gruppe matchen diese ACL.
acl it external ldap_group it
- Erlaubt Zugriff nur für Mitglieder der Gruppe.
http_access allow it
Erklärung
- external_acl_type ruft ein externes Programm zur Prüfung auf.
- %LOGIN übergibt den Benutzernamen an das Script.
- %g steht für Gruppenname, %u für Benutzername.
- Filter
- Es wird geprüft, ob user (%u) in Gruppe (%g) ist.
- Dazu wird memberUid im posixGroup verwendet.
Voraussetzungen im LDAP (Gruppen)
- Es muss eine OU für Gruppen existieren.
- Gruppen müssen vom Typ posixGroup sein.
- Beispiel Gruppe
dn: cn=it,ou=groups,dc=it113,dc=int objectClass: posixGroup cn: it gidNumber: 10000 memberUid: martha memberUid: leroy
- memberUid enthält die Benutzernamen (uid).
- Diese müssen mit den Login-Namen übereinstimmen.
Wichtig
- Reihenfolge der Regeln beachten
- Gruppenprüfung sollte vor allgemeinen allow-Regeln stehen.
- Beispiel
http_access allow it http_access deny all
- Wenn vorher allow ldap-auth steht, greift die Gruppenprüfung nicht mehr.