Seite 1 von 1

[gelöst] Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 07.08.2019 09:54:10
von joe2017
Schönene guten Morgen,

ich weiß hier gibt es bereits einige Einträge zu diesem Thema, jedoch hab ich ein Phänomen und wollte mal fragen woran dies liegen könnte.
Ich habe aktuell einen LDAP/Kerberos Server welcher mit GSSAPI konfiguriert wurde. Somit stehen meine Passwörter nicht im LDAP sondern in meinem Kerberos Server.
Auf meinem Squid Proxy kann ich mit getent passwd/group die Benutzer bzw. Gruppen meines LDAP Servers anzeigen lassen.

Wenn ich den Squid Test auf meinen LDAP Server durchführe erhalte ich folgende Meldung.

Code: Alles auswählen

sudo /usr/lib/squid/basic_ldap_auth -b "ou=users,dc=domain,dc=net" -f "uid=%s" LDAP-IP

user <space> password
BH Success
Das seltsame dabei ist, dass ich hier eintragen kann was ich möchte. Selbst wenn ich einen Benutzer "A" mit Passwort "A" eintrage erhalte ich diese Rückmeldung. Einen Benutzer "A" gibt es jedoch gar nicht.
Trage ich nur einen Benutzer ein oder irgendwas "sdfjdsajk" erhalte ich die Meldung "ERR message="Missing password""
Trage ich nichts ein und drücke Enter erhalte ich die Meldung "ERR message="Missing username""


Anschließend habe ich folgende Konfig in die /etc/squid/squid.conf eingetragen

Code: Alles auswählen

auth_param basic program /usr/lib/squid/basic_ldap_auth -v 3 -b "ou=users,dc=domain,dc=net" -f "(uid=%s)" LDAP-IP
external_acl_type proxy_restricted %LOGIN /usr/lib/squid/ext_ldap_group_acl -b "cn=proxy_restricted,ou=groups,dc=domain,dc=net" -f "(memberUid=%u)" LDAP-IP
external_acl_type proxy_full %LOGIN /usr/lib/squid/ext_ldap_group_acl -b "cn=proxy_full,ou=groups,dc=domain,dc=net" -f "(memberUid=%u)" LDAP-IP

acl ldapgroup_proxy_restricted external proxy_restricted proxy_restricted
acl whitelist_proxy_restricted dstdomain "/etc/squid/whitelist_proxy_restricted"
http_access allow whitelist_proxy_restricted ldapgroup_proxy_restricted

acl ldapgroup_proxy_full external proxy_full proxy_full
http_access allow all ldapgroup_proxy_full
Jedoch erhält mein Benutzer am Client keinen Zugriff.

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 22.08.2019 09:25:38
von joe2017
Ich habe jetzt folgendes erfolgreich getestet... Eingabe im Terminal:
/usr/lib/squid3/ext_kerberos_ldap_group_acl -g ldap-group@DOMAIN.NET -D DOMAIN.NET -N ldap-group@DOMAIN.NET –s –a
User (Mitglied der Gruppe)
User (nicht Mitglied der Gruppe) Jetzt habe ich folgende Syntax übernommen:
sudo nano /etc/squid/squid.conf

Code: Alles auswählen

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -k /etc/squid/krb5.keytab
acl auth proxy_auth REQUIRED

external_acl_type kerberos_ldap_group1 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -g ldap-group@DOMAIN.NET -D DOMAIN.NET -N ldap-group@DOMAIN.NET -s -a
acl group1 external kerberos_ldap_group1
http_access allow group1

http_access deny !auth
http_access deny all
usw...
Leider funktioniert das auch nicht. Hab ich vielleicht in der Syntax einen Fehler?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 20.09.2019 12:53:17
von joe2017
Ist das Problem vielleicht gar nicht mein Server sondern mein Client? Muss ich hier außer Firewall Ports noch etwas beachten?
Der LDAP-User ist am Client angemeldet und mit ldapwhoami und klist werden alle Informationen über meine User korrekt angezeigt.

Wenn ich nur die Kerberos Konfiguration eintrage erhält mein Client ja den Connect?

Code: Alles auswählen

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -k /etc/squid/krb5.keytab
acl auth proxy_auth REQUIRED

http_access deny !auth
http_access allow auth
http_access deny all
Wahrscheinlich ist das nur eine ganz kleine Sache welche ich übersehe?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 22.09.2019 22:37:17
von ThorstenS
Dein Problem kann ich dir nicht lösen, aber vllt. hilft dir meine config etwas - hier läuft nen samba4, wie du unschwer erkennen kannst:

Code: Alles auswählen

# auth negotiate
auth_param negotiate program /usr/lib/squid/squid_ldap_ntlm_auth --gss-spnego --gss-spnego-strip-realm
auth_param negotiate children 50
auth_param negotiate keep_alive on

# auth ntlm
auth_param ntlm program /usr/lib/squid/squid_ldap_ntlm_auth -c 60
auth_param ntlm children 50
auth_param ntlm keep_alive on

# authentication ACLs
acl AuthorizedUsers proxy_auth REQUIRED 

# allow authenticated users
http_access allow CONNECT AuthorizedUsers
http_access allow AuthorizedUsers 

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 23.09.2019 09:43:42
von joe2017
Hallo Thorsten,

danke für die Konfig. Ich habe mittlerweile die Vermutung, dass meine Konfiguration am Squid richtig ist. Jedoch wenn ich das am Debian Client mit Firefox teste irgendwas schief geht?
Gibt es eine andere Möglichkeit den Zugriff auf den Proxy zu testen? Vielleicht komme ich ja so weiter?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 24.09.2019 06:43:46
von ThorstenS
vllt. mit wget:

Code: Alles auswählen

export http_proxy=http://10.200.0.10:3128/
wget --proxy-user=student --proxy-password=geheim http://nossl.net/

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 24.09.2019 15:04:45
von joe2017
Danke schon mal für den Tipp.

Hier erhalte ich folgende Fehlermeldung:

Code: Alles auswählen

Verbindungsaufbau zu SquidIP:3128 ... verbunden
Proxy-Anforderung gesendet, auf Antwort wird gewartet ... 407 Proxy Authentication Required
Dann wird es wohl doch nicht am Browser liegen. Hat noch jemand eine Idee?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 24.09.2019 15:21:31
von MSfree
joe2017 hat geschrieben: ↑ zum Beitrag ↑
24.09.2019 15:04:45
Hat noch jemand eine Idee?
Squid logt ziemlich intensiv unter /var/log/squid. Ich würde dort schauen, ob die Authentifizierung überhaupt greift und wenn ja, warum sie fehlschlägt.

Ggfls. mußt du dazu etc/squid/squid.conf anpassen und folgendes einfügen:

Code: Alles auswählen

cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
und das Verzeichnis /var/log/squid anlegen. (squid neustarten nicht vergessen)

Clientseitig zu suchen ist wie im Nebel zu stochern. Die Serverseite (also der Rechner, auf dem Squid läuft) ist da meist die bessere Variante.

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 09:24:47
von joe2017
Hi MSfree,

an die Logs hab ich natürlich mal wieder nicht gedacht. :facepalm:
Das vergisst man irgendwie gerne.

In dem /var/log/squid/access.log finde ich folgendes:

Code: Alles auswählen

1569482401.576      8 ClientIP TCP_DENIED/403 5189 CONNECT www.google.de:443 LDAP-User@DOMAIN.NET HIER_NONE/- text/html
Also mein Benutzer versucht sich schon zu verbeinden. Aber die LDAP Gruppe taucht hier niergends auf.
In allen Zeilen steht aber immer das "HIER_NONE". Was bedeutet das?

Das finde ich im /var/log/squid/cache.log

Code: Alles auswählen

2019/09/26 09:28:47 kid1| Starting new kerberos_ldap_group helpers...
2019/09/26 09:28:47 kid1| helperOpenServers: Starting 1/5 'ext_kerberos_ldap_group_acl' processes
support_krb5.cc(63): pid=27723 :2019/09/26 09:28:47| kerberos_ldap_group: ERROR: Error while starting keytab scan : Key table file '/etc/krb5.keytab' not found
support_ldap.cc(1020): pid=27723 :2019/09/26 09:28:47| kerberos_ldap_group: ERROR: Error during setup of Kerberos credential cache
2019/09/26 09:28:47 kid1| Starting new negotiateauthenticator helpers...
2019/09/26 09:28:47 kid1| helperOpenServers: Starting 1/20 'negotiate_kerberos_auth' processes
Benötigt mein Client hierfür ein zusätzlichen Kerberos Eintrag (/etc/krb5.keytab) für den Proxy?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 09:50:33
von MSfree
joe2017 hat geschrieben: ↑ zum Beitrag ↑
26.09.2019 09:24:47
In allen Zeilen steht aber immer das "HIER_NONE". Was bedeutet das?
Was das bedeutet, weiß ich gerade nicht, ist aber erstmal nicht relevant. Vor allem steht da TCP_DENIED und das ist ein sicheres Zeichen dafür, das die Authentisierung nicht erfolgt ist.

Benötigt mein Client hierfür ein zusätzlichen Kerberos Eintrag (/etc/krb5.keytab) für den Proxy?
Nicht der Client, sondern der Rechner, auf dem der squid läuft, muß noch korrekt eingerichtet werden. Ich bin jetzt nicht der große Kerberoskünstler, aber die Fehlermeldungen sagen eigentlich schon, daß da noch was fehlt. /etc/krb5.keytab existiert offenbar gar nicht auf dem squid-Rechner.

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 09:54:04
von joe2017
Hi MSfree,

genau das habe ich gerade auch festgestellt. Jedoch habe ich meine Einträge nicht in der /etc/krb5.keytab sondern wie in der Installationsbeschreibung in der /etc/squid/krb5.keytab.
Wahrscheinlich fehlt in der Konfiguration nur die Angabe in welcher Datei die Einträge gesucht werden. Ich schau mal ob ich das auf die Schnelle finde. Oder weißt du das aus dem Stehgreif?

Zusatz:

In meiner Squid Conf hab ich das ja bereits eingetragen:

Code: Alles auswählen

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -k /etc/squid/krb5.keytab
Jedoch wird wahrscheinlich folgender Eintrag eine andere Datei verwenden:

Code: Alles auswählen

external_acl_type kerberos_ldap_group1 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -g ldap-group@DOMAIN.NET -D DOMAIN.NET -N ldap-group@DOMAIN.NET -s -a
Sollte ich meine Einträge einfach Standardmäßig in der /etc/krb5.keytab eintragen?

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 11:42:59
von MSfree
joe2017 hat geschrieben: ↑ zum Beitrag ↑
26.09.2019 09:54:04
In meiner Squid Conf hab ich das ja bereits eingetragen:

Code: Alles auswählen

auth_param negotiate program /usr/lib/squid3/negotiate_kerberos_auth -k /etc/squid/krb5.keytab
Jedoch wird wahrscheinlich folgender Eintrag eine andere Datei verwenden:

Code: Alles auswählen

external_acl_type kerberos_ldap_group1 %LOGIN /usr/lib/squid3/ext_kerberos_ldap_group_acl -g ldap-group@DOMAIN.NET -D DOMAIN.NET -N ldap-group@DOMAIN.NET -s -a
Sollte ich meine Einträge einfach Standardmäßig in der /etc/krb5.keytab eintragen?
Wie gesagt, ich bin kein Kerberoskünstler, kann dir also keine beste Vorgehensweise empfehlen. Spontan fällt mir aber auf, daß da wohl zwei executables im Spiel sind: ext_kerberos_ldap_group_acl und negotiate_kerberos_auth. Ersterem fehlt die Angabe, in welcher Datei die kerberosdaten zu finden sind.

Ich würde schauen, ob man dem die Daten auch per Parameter übergeben kann oder soll. Mit Kerberos kann ich dir aber nicht detailiert weiterhelfen.

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 11:47:57
von joe2017
Ich dachte negotiate_kerberos_auth ist für die generelle Kerberos Authentifizierung und ext_kerberos_ldap_group_acl ist eine Erweiterung welche meine LDAP Gruppen überprüft?
Benötige ich den ersten Eintrag negotiate_kerberos_auth überhaupt nicht?

Ich denke das Problem ist einfach nur der Fehler:

Code: Alles auswählen

support_krb5.cc(63): pid=16250 :2019/09/26 12:01:34| kerberos_ldap_group: ERROR: Error while starting keytab scan : Key table file '/etc/krb5.keytab' not found
support_ldap.cc(1020): pid=16250 :2019/09/26 12:01:34| kerberos_ldap_group: ERROR: Error during setup of Kerberos credential cache
Aber wo genau kann ich die zu verwendende keytab angeben?

Ich habe schon folgendes konfiguriert
nano /etc/default/squid3

Code: Alles auswählen

KRB5_KTNAME=/etc/squid/krb5.keytab
export KRB5_KTNAME
nano /etc/profile

Code: Alles auswählen

KRB5_KTNAME=/etc/squid/krb5.keytab
export KRB5_KTNAME

Re: Squid mit LDAP Authentication (basic_ldap_auth) LDAP/Kerberos GSSAPI

Verfasst: 26.09.2019 14:59:04
von joe2017
Ich habe den Fehler gefunden!

Ich muss in die /etc/krb5.conf Config noch folgendes eintragen:

Code: Alles auswählen

[libdefaults]
	default_keytab_name = /etc/squid/krb5.keytab