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

Alles rund um sicherheitsrelevante Fragen und Probleme.
Antworten
Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 07.08.2019 09:54:10

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.
Zuletzt geändert von joe2017 am 27.09.2019 10:53:02, insgesamt 2-mal geändert.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 22.08.2019 09:25:38

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?

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 20.09.2019 12:53:17

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?

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

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

Beitrag von ThorstenS » 22.09.2019 22:37:17

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 

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 23.09.2019 09:43:42

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?

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

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

Beitrag von ThorstenS » 24.09.2019 06:43:46

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/

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 24.09.2019 15:04:45

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?

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

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

Beitrag von MSfree » 24.09.2019 15:21:31

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.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 26.09.2019 09:24:47

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?

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

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

Beitrag von MSfree » 26.09.2019 09:50:33

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.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 26.09.2019 09:54:04

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?

Benutzeravatar
MSfree
Beiträge: 10777
Registriert: 25.09.2007 19:59:30

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

Beitrag von MSfree » 26.09.2019 11:42:59

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.

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 26.09.2019 11:47:57

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

Benutzeravatar
joe2017
Beiträge: 1136
Registriert: 07.08.2017 14:29:51

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

Beitrag von joe2017 » 26.09.2019 14:59:04

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

Antworten