Squid-Kit-ldap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 1: Zeile 1:
==Authentifizierung mit ldap==
+
==Authentifizierung mit LDAP==
Zusätzliche Pacete:
+
;Authentifizierung erfolgt gegen einen LDAP-Server.
*sudo apt install libldap2 ldap-utils
+
;TLS sollte verwendet werden, damit Benutzername und Passwort nicht im Klartext übertragen werden.
  
<pre>
+
;Benötigte Pakete für LDAP-Unterstützung.
# LDAP-Authentifizierung einrichten
+
;ldap-utils enthält Tools zum Testen der Verbindung.
 +
Zusätzliche Packete:
 +
*apt install libldap-2.5-0 ldap-utils
  
auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b ou=users,dc=it213,dc=int -D cn=admin,dc=it213,dc=int -w 123Start$ -f uid=%s -h ldap.it213.int
+
;Alternative Paketnamen je nach Debian-Version.
auth_param basic children 20 startup=0 idle=1
+
Debian 13
auth_param basic concurrency 0
+
*apt install libldap2 ldap-utils
auth_param basic credentialsttl 500 seconds
 
auth_param basic realm xinux proxy server
 
auth_param basic casesensitive off
 
  
# ACL für authentifizierte Benutzer
+
;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.
  
# Zugriff erlauben
 
http_access allow ldap-auth
 
</pre>
 
  
 
===Authentifizierung mit LDAP-Gruppen===
 
===Authentifizierung mit LDAP-Gruppen===
*'''/etc/squid/squid.conf'''
+
;Gruppen werden verwendet, um Zugriffe gezielt zu steuern.
**Zusätzlich zur oben genannten Authentifizierung mit LDAP, kann hier mit Filter von Gruppen gearbeitet werden. Fügen Sie dafür folgende Zeile hinzu:
+
;Squid fragt dabei LDAP ab, ob ein Benutzer Mitglied einer Gruppe ist.
<pre>
+
 
external_acl_type ldap_group %LOGIN /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 ldap.it213.int
+
;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.
  
acl it external ldap_group it
+
;Beispiel:
 +
http_access allow it
 +
http_access deny all
  
http_access allow it
+
;Wenn vorher allow ldap-auth steht, greift die Gruppenprüfung nicht mehr.
</pre>
 

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.