PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Squid+LDAP=Hilfe



Napf
23.06.05, 08:24
Tach zusammen,

folgendes habe ich vor.
Es existiert eine Win2K ADS an der sich die Benutzer alle fröhlich anmelden können. Nur mit dem Proxy Server sind wir nicht ganz zufrieden. Jetzt will ich meinen Vorgesetzten mal einen Squid Proxy hinsetzen, damit sie sehen und staunen können.

Die einzige Vorraussetzung ist, dass sich der Squiddie mit der ADS unterhält.
Nur Benutzer, die in der ADS stehen sollen auch über den Proxy surfen dürfen und so weiter.

Mein Problem ist aber, dass genau das nicht so richtig hinhaut.


ldapsearch -b "dc=domäne,dc=local" "sAMAccount=[irgendein Anmeldename]" -D "cn=Admin,ou=Admins,dc=domäne,dc=local" -W -h [IP des Servers] -x
Wenn ich ein ldapsearch so absetze spuckt er mir brav aus was ich suche.

Wenn ich aber diese Anfrage über squid_ldap_auth starte:

squid_ldap_auth -b "dc=domäne,dc=local" -D "cn=Admin,ou=Admins,dc=domäne,dc=local" -W [Pfad zur Passwortdatei] -h [IP des Servers] -f "sAMAccountName=%s"
bekomme ich nur eine Promtzeile, in die ich einen Anmeldenamen eingebe. Zurück kommt nur ein äußerst vielsagendes ERR.

Gibt es eigentlich irgendwo ein Log-File, in der geschrieben wird, was da den ERR verursacht? Oder ein Verbose-Mode?

Hilfe ich schlag mich seit Zeit Tagen schon damit rum und so langsam kapier ichs nicht mehr.

emba
23.06.05, 11:20
ich weiß, dass man squid und winbindd verheiraten kann, wobei der winbindd die auth. gg. eine ADS übernimmt

http://www.squid-cache.org/Doc/FAQ/FAQ-23.html
and many more

greez

RichieX
23.06.05, 17:09
Gibt es eigentlich irgendwo ein Log-File, in der geschrieben wird, was da den ERR verursacht? Oder ein Verbose-Mode?


In der squid.conf gibts "debug_options ...", die du ändern kannst und dann siehst du die Fehlermeldungen in der cache.log.

Wenn ich mich recht erinnere, mußt du noch squid_ldap_group mit reinnehmen.

RichieX

PS: Hier mal ein Beispiel, was 100%ig funktioniert:


auth_param basic program /usr/sbin/squid_ldap_auth -b "ou=ounit,dc=domain,dc=local" -f sAMAccountName=%s -h <server-ip> -D "cn=Administrator,cn=users,dc=domain,dc=local" -w "secret"
auth_param basic children 10
auth_param basic realm "Proxy Authentifizierung. Bitte geben Sie Ihren Benutzername und Ihr Passwort ein!"
external_acl_type AD_Group %LOGIN /usr/sbin/squid_ldap_group -b "ou=ounit,dc=domain,dc=local" -f (&(sAMAccountName=%u)(memberOf=%g)) -h <server-ip> -S -D "cn=Administrator,cn=users,dc=domain,dc=local" -w "secret"
acl wwwgroup external AD_Group cn=ProxyUsers,ou=ounit,dc=domain,dc=local
http_access allow wwwgroup

Napf
24.06.05, 14:19
Hallo RichieX

meine squid.conf sieht mittlerweile ähnlich aus wie deine.



auth_param basic program /usr/sbin/squid_ldap_auth -b dc="[domäne],dc=[local]" -f "sAMAccountName=%s" -h [IP des Servers] -D "cn=Admin,ou=Admins,dc=[domäne],dc=[local]" -W [pfad zur datei]
auth_param basic children 10
auth_param basic realm Squid Proxy Server Authentifizierung
.
.
.
http_access allow wwwgroup
acl wwwgroup external AD_Group dc=[domäne],dc=[local]


So weit versteh ich auch was da passiert, wenn auch nicht, warum da nichts passiert.

Bei dieser Zeile bin ich mir nicht so ganz im klaren, was da vor sich geht... (sorry, aber mir ist wohl etwas zu warm...)


external_acl_type AD_Group %LOGIN /usr/sbin/squid_ldap_group -b "dc=[domäne],dc=[local]" -f sAMAccountName=%u -h [IP des Servers] -S -D "cn=Admin,ou=Admins,dc=[domäne],dc=[local]" -W [Pfad zu Datei]

Das %LOGIN sagt mir ehrlich gesagt im Moment ein bisschen wenig.
In diesem sAMAccountName verwendest du mit %u eine andere Variable? Warum?

Außerdem ist mir noch immer nicht klar, warum ich mit ldapsearch die Datenbank auslesen kann und mit squid_ldap_auth immer nur dieses tolle ERR bekomme.

RichieX
24.06.05, 15:49
Bei dieser Zeile bin ich mir nicht so ganz im klaren, was da vor sich geht... (sorry, aber mir ist wohl etwas zu warm...)


external_acl_type AD_Group %LOGIN /usr/sbin/squid_ldap_group -b "dc=[domäne],dc=[local]" -f sAMAccountName=%u -h [IP des Servers] -S -D "cn=Admin,ou=Admins,dc=[domäne],dc=[local]" -W [Pfad zu Datei]

Das %LOGIN sagt mir ehrlich gesagt im Moment ein bisschen wenig.
In diesem sAMAccountName verwendest du mit %u eine andere Variable? Warum?

Außerdem ist mir noch immer nicht klar, warum ich mit ldapsearch die Datenbank auslesen kann und mit squid_ldap_auth immer nur dieses tolle ERR bekomme.

In dieser Zeile wird geprüft, ob der Benutzer (%LOGIN=Anmeldename) auch die Berechtigung hat über den squid zu surfen. Um zu wissen welche Gruppe surfen darf ist diese Zeile da:


acl wwwgroup external AD_Group cn=ProxyUsers,ou=ounit,dc=domain,dc=local

Also alle in der Gruppe ProxyUsers sind berechtigt auf den squid zuzugreifen. Du kannst hier auch noch mehr definieren, wenn du willst.

Das mit dem %u ist so eine Sache. Da hab ich auch ein paar Wochen dafür gebraucht, es rauszubekommen - das stimmt schon, vertrau mir ;)

Um herauszufinden, was schief läuft, empfehle ich dir wie weiter oben geschrieben den Log-Level höher zu nehmen. Probier mal mit "9". Wenn es dann läuft vergiss nicht ihn wieder herabzusetzen, sonst ist deine Platte schnell voll - ist mir auch schon mal passiert :rolleyes:

RichieX

schlachter
08.07.05, 08:47
Hallo ihrs,
ich hab ziemlich genau das selbe Problem. Kann ich mal fragen, wie weit ihr gekommen seit, und ob ihr mir da mal paar Hilfestellungen geben könnt. Ist es euch mal möglich, eure AD Struktur mal mit zu posten, oder mir per Mail zuzusenden? Ich bin langsam am verzweifeln.
Danke schon mal.

Napf
11.07.05, 13:42
Im Moment liegt das Projekt bei mir auf Eis. Da kam was dazwischen.
Aber mein bisheriger Stand war:
Abfrage per ldapsearch: geht
Abfrage per squid_ldap_auth: ERR

Ich habe keine Flache ADS-Struktur. die sieht in etwa so aus:
[domäne]
|
-> [ein paar OUs]
| |
| -> [unterhalb der OUs liegen meine CNs und ein paar weitere OUs]
|
-> [ein paar CNs meist automatisch erzeugte]


RichieXs Lösung mag funktionieren (hey, ich zweifel keine Sekunde daran!) aber bei mir wills irgendwie nicht so recht.
Zur Zeit kann ich leider nicht weiter dran rumdoktorn.

Frank_G
31.08.05, 11:22
Hi,

ich habe auch das gleiche Problem. Ich habe einen Linux 9.2 Proxy der gegen eine W2K3 AD authentifizieren soll. Im AD habe ich eine Globale Gruppe angelegt, in der alle User Mitglied sind, die surfen sollen.

Meine squid.conf sieht wie folgt aus:

auth_param basic program /usr/sbin/squid_ldap_auth -b "cn=users,dc=domain,dc=intern" -f sAMAccountName=%s -h 192.168.1.100 -D "cn=Administrator,cn=users,dc=domain,dc=intern" -w "mypassword"
auth_param basic children 10
auth_param basic realm "Bitte geben Sie Ihren Benutzername und Ihr Passwort ein!"
external_acl_type AD_Group %LOGIN /usr/sbin/squid_ldap_group -b "dc=domain,dc=intern" -f (&(sAMAccountName=%u)(memberOf=%g)) -h 192.168.1.100 -S -D "cn=Administrator,cn=users,dc=domain,dc=intern" -w "mypassword"
acl wwwgroup external AD_Group cn=ProxyUsers,cn=users,dc=domain,dc=intern

Dann habe ich noch:
http_access allow wwwgroup

Wenn ich vom Proxy einen ldapsearch auf den DC absetzte, bekomme ich auch keine Fehlermeldung:
ldapsearch -b "dc=domain,dc=intern" "sAMAccount=Administrator" -D "cn=Administrator,cn=Users,dc=domain,dc=intern" -W -h 192.168.1.100 -x

Allerdings kann nur der Administrator surfen. Alle anderen User nicht.

Meine AD Struktur ist auch nicht flach:
domain.intern
|
--Standort1
|
-S1Users
|
-Einkauf
-Verkauf
-IT
-Produktion

In den verschiedenen OU's liegen die User. Die Gruppe für die Proxy Auth liegt in der OU Users.

Hat dazu noch jemand ne idee? Ich bin nämlich ratlos.

Gruß
Frank

schlachter
31.08.05, 12:02
bin ein kleines Stückchen weiter gekommen. Bei mir funktioniert die Authentifikation mittlerweile auch, jedoch immer noch nicht transparent. Das ist das nächste, was ich lösen muss.
Es gibt ein paar kleine Macken bei dem, was geschrieben wurde.
1. --> Die ou Users ist beim Server 2003 AD eine cn
2. --> das ganze cn und ou Zeug etc. muss GROSS geschrieben werden, also CN oder OU
3. --> nehmt mal die Anführungszeichen weg. Dann sollte es klappen. Bei mir war dann immer noch das Problem, dass Cache Access Denied kam. Dies lag daran, weil irgend etwas mit der Gruppe nicht ginhaute. Also nehmt mal das groupof raus.
Hoffe mal, dass ich euch weiter helfwen konnte.
Hoffe auch, dass ihr mir bei der transparenz weiterhelfen könnt.
Schlachter

dodgerspx
24.07.07, 13:17
Hallo ich stehe vor praktisch demselben Problem, komme da aber nicht weiter.

Die Idee des ganzen sieht so aus, dass die meisten User nach Whitelist verfahren bestimmte Seiten aufsuchen können ohne sich authentifizieren zu müssen. Sowas wie telefonbuch.de.

Wer Seiten besuchen möchte, die nicht in der Whitelist stehen, soll Mitglied der AD-Gruppe alltheweb sein müssen.

Unsere Squid.conf sieht so aus:
#hierarchy_s#toplist cgi-bin ?
cache_dir null /var/squid/cache

acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
hosts_file /etc/hosts
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

acl all src 192.168.1.0/255.255.255.0
acl all src 192.168.10.0/255.255.255.0
acl all src 192.168.20.0/255.255.255.0
acl all src 192.168.30.0/255.255.255.0
acl all src 192.168.40.0/255.255.255.0
acl all src 192.168.50.0/255.255.255.0
acl all src 192.168.255.0/255.255.255.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl allowed_clients src 192.168.1.0/24
acl SSL_ports port 443 563 # https, snews
acl SSL_ports port 873 # rsync
acl Safe_ports port 21 # ftp
acl Safe_ports port 80 # http
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
acl whitelist dstdomain "/etc/squid/whitelist"
acl whitelist-regex dstdom_regex "/etc/squid/whitelist-regex"
acl whitelist-ftp dst "/etc/squid/whitelist-ftp"
acl ftp proto FTP

http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
#Deny requests to unknown ports
http_access deny !Safe_ports
#Deny CONNECT to other than SSL ports
http_access deny CONNECT !SSL_ports
http_access allow whitelist
http_access allow whitelist-regex
http_access allow whitelist-ftp
icp_access allow ftp whitelist-ftp


auth_param basic program /usr/lib/squid/ldap_auth -b "dc=domain,dc=local" -f sAMAccountName=%s -h 192.168.1.221 -D "cn=ldapbind,dc=domain,dc=local" -w "password"
auth_param basic children 10
auth_param basic realm "Proxy Authentifizierung. Bitte geben Sie Ihren Benutzername und Ihr Passwort ein"
external_acl_type AD_Group %LOGIN /usr/lib/squid/squid_ldap_group -b "ou=Gruppen,dc=domain,dc=local" -f (&(sAMAccountName=%u)(memberOf=%g)) -h 192.168.1.221 -S -D "cn=ldapbind,dc=domain,dc=local" -w "password"
acl wwwgroup external AD_Group cn=alltheweb,ou=Gruppen,dc=domain,dc=local

http_access allow wwwgroup

http_access deny !whitelist
http_access deny !whitelist-regex
http_access deny !whitelist-ftp
icp_access deny !whitelist-ftp
http_access allow allowed_clients
http_access deny all
http_reply_access allow all
icp_access deny all
http_access deny Safe_ports


Das Problem besteht darin, dass er sofort versucht zu authentifizieren, und nicht einfach Seiten aus der Whitelist so läd.
Und zum anderen dass die Authentifizierung einfach nicht klappt.
Er fragt immer wieder.

Es ist ein W2k3-AD und Squid-2.5.12, Ubuntu-Linux-2.6.15-26-server

Könnt Ihr mir sagen, was ich alles falsch mache?