Squid-Kit-ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
Keine Bearbeitungszusammenfassung |
|||
| 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.