Squid-Kit-ldap: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 35: Zeile 35:
  
 
==Wir testen die Verbindung zum LDAP Server==
 
==Wir testen die Verbindung zum LDAP Server==
;Wir erstellen de Konfuration
+
;Wir erstellen die Konfiguration
 
*vi  /etc/ldap/ldap.conf  
 
*vi  /etc/ldap/ldap.conf  
 
  BASE    dc=it213,dc=int
 
  BASE    dc=it213,dc=int
 
  URI    ldaps://ldap.it213.int
 
  URI    ldaps://ldap.it213.int
 
  ldap_version  
 
  ldap_version  
;Kommen wir auf den Ldap Server?  
+
===Kommen wir auf den Ldap Server?===
 
*ldapsearch -x
 
*ldapsearch -x
;Verschlüsselung ok?
+
===Verschlüsselung ok?===
 
*openssl s_client -host ldap.it213.int -port 636
 
*openssl s_client -host ldap.it213.int -port 636
  

Version vom 2. April 2026, 13:35 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

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



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.