Squid-Kit-ldap: Unterschied zwischen den Versionen
Zur Navigation springen
Zur Suche springen
| Zeile 1: | Zeile 1: | ||
=Auf dem LDAP Server= | =Auf dem LDAP Server= | ||
| − | |||
==Wir legen 2 Gruppen an== | ==Wir legen 2 Gruppen an== | ||
;Wir trennen Benutzer nach Berechtigungen in Gruppen. | ;Wir trennen Benutzer nach Berechtigungen in Gruppen. | ||
Version vom 2. April 2026, 13:29 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.
- ldapaddgroup teamleitung
- ldapaddgroup agents
- Benutzer werden den Gruppen zugeordnet.
- Die Gruppenzugehörigkeit steuert später den Zugriff im Squid.
- ldapadduser wilma teamleitung
- ldapadduser betty teamleitung
- ldapadduser fred agents
- ldapadduser 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
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.
Debian 13
- apt install libldap2 ldap-utils
Wir testen die Verbindung zum LDAP Server
- Wir erstellen de Konfuration
- 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
- 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.