Univention 4.1 Integration in bestehendes AD

german

#1

Hallo,

wir haben ein UCS 4.1 in ein bestehendes AD integriert.

Das hat soweit gut funktioniert und ich kann mich am Univention-System via AD-User (Domain-Admins usw.) anmelden und die meisten Aktionen funktionieren auch:

Probleme gibt es bei der Authentifikation über NTLM an das AD. Folgendes Scenario:

Windows - PC mit IE oder Firefox -> Squid-Proxy auf dem UCS AD-Member System.

Ich habe alle Variablen verglichen mit einem System, bei dem genau das funktioniert.

Aufgefallen ist mir, dass der heimdal-krbd Dienst gestoppt ist. (Das finde ich irgendwie merkwürdig)

Jetzt habe ich einige Fragen:

  1. An welchen Orten kann ich denn jetzt mal schauen, ob mir was auffält
  2. Da die Anmeldung am Linux über ein AD-User funktioniert, gehe ich davon aus, dass das über PAM-LDAP realisiert ist. (Stimmt das?)

Folgende Fehlermeldungen sind mir aufgefallen:

2015/12/11 15:03:58| authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned ‘BH failed to verifyNtlmTypeThree(): Non-hexadecimal digit found

Es gab noch eine Fehlermeldung wie “[…] syncrepl failed […]”

Es gibt mehrere Fehlerursachen:
In diesem AD gibt es internationale User - also auch chinesische, wobei diese aber mit normaler Schrift geschrieben sind.

Folgende Fehler scheinen es nicht sein:
Die Kerberos-Verbindung scheint grundsätzlich zu laufen - die Zeitsynchronisation passt auch. Der DC1 vom AD ist der Zeitserver und das geht auch. Alle Kerberos-Einträge sehen gut aus.

Welche Logs sollte ich mir genauer anschauen, bzw. welche Configs/UCS-Registry sind da interessant.

Vielen Dank


#2

Können Sie bitte mal posten, wie der Auth-Helfer in Squid genau konfiguriert ist? Haben Sie das manuell eingerichtet, oder ist das das die Konfiguration vom univention-squid-Paket?

Bitte posten Sie auch die UCR-Variablen zu Squid, also die Ausgabe von »ucr search --brief squid«.


#3

appcenter/apps/squid/status: installed
appcenter/apps/squid/version: 3.1
security/packetfilter/package/univention-squid/tcp/3128/all/en: HTTP proxy
security/packetfilter/package/univention-squid/tcp/3128/all: ACCEPT
squid/acl/.*:
squid/allowfrom: 10.0.0.0/8
squid/append_domain: .domain.de
squid/auth/allowed_groups:
squid/basicauth/children: 10
squid/basicauth: yes
squid/cache: yes
squid/contentscan: yes
squid/debug/level: ALL,1
squid/forwardedfor: off
squid/httpport:
squid/krb5auth/children:
squid/krb5auth/keepalive:
squid/krb5auth/tool:
squid/krb5auth:
squid/ntlmauth/children: 10
squid/ntlmauth/keepalive:
squid/ntlmauth/tool:
squid/ntlmauth: yes
squid/parent/directnetworks:
squid/parent/host:
squid/parent/options:
squid/parent/port:
squid/redirect:
squid/rewrite/children:
squid/transparentproxy: false
squid/virusscan: yes
squid/webports:


#4

Ist nicht manuell eingerichtet, sondern über univention app center.

Ich hatte gehofft, dass die Authentifikation transparent im IE über NTML läuft. Er fragt aber nach einem Password und dann gehts nicht mehr weiter.

  1. Versuch: Ausgabe der Webseite: “moz-proxy.domain.de:3128
  2. Versuch: Ausgabe der Webseite: “Univention Proxy Server”

Werden hier verschiedene Authentifikationen nacheinander versucht? Beim zweiten Versuch steht dann auch ein Benutzer.

Wie kann ich den ersten Versuch abschalten? Dann geht es wohl.


#5

Sie haben momentan sowohl die Basic-Authentication als auch die NTLM-Authentication an:

squid/basicauth: yes … squid/krb5auth: … squid/ntlmauth: yes

Sie sollten sinnvollerweise nur eine dieser drei Methoden aktiviert haben. Bitte führen Sie die folgenden Befehle aus, um Basic- und Kerberos-Authentifizierung zu deaktivieren und Squid neu zu starten:

ucr unset squid/basicauth squid/krb5auth service squid3 restart

Probieren Sie’s danach noch einmal.


#6

Hab ich gemacht: jetzt erscheint im cache.log folgende Fehlermeldung:

authenticateNTLMHandleReply: Error validating user via NTLM. Error returned ‘BH failed to verifyNtlmTypeThree(): Non-hexadecimal digit found’

Was will er mir damit sagen?

Vielen Dank


#7

Wenn ich Basic-Auth verwende statt NTML, dann funktioniert es. Einmal Passwort eingeben - Alles gut. Aber bei NTLM Auth kommt der obige Fehler.

Das sieht sehr nach einer Protokollinkompatibilität aus.


#8

Moin,

ich habe leider keine weiteren Ideen, wie man der tatsächlichen Ursache auf die Schliche kommen könnte. Tut mir leid.

Gruß,
mosu


#9

Hallo Bastian,

[quote=“bastian.epting”]Wenn ich Basic-Auth verwende statt NTML, dann funktioniert es. Einmal Passwort eingeben - Alles gut. Aber bei NTLM Auth kommt der obige Fehler.

Das sieht sehr nach einer Protokollinkompatibilität aus.[/quote]

ja das ist eine Fehlermeldung von /usr/lib/squid3/squid_ldap_ntlm_auth. Es werden wohl nicht die Daten bei der Authentifizierung geschickt, die von dem Skript erwartet werden.

Ich habe allerdings noch andere Fragen:

  1. Gibt es einen Grund, warum NTLM-Hashes und nicht Kerberos verwendet werden soll?
  2. Sind die Windows-Clients in der AD Domäne?

Aus meiner Sicht, macht es Sinn, gerade wenn Sie Frage 2 mit “ja” beantworten, auf Kerberos umzustellen. Dazu halten Sie sich an folgende Anleitung (dritter Bullet Point) und löschen die UCR Variable squid/ntlmauth.

Viele Grüße,
Tobias Birkefeld


#10

Hallo,

vielen Dank für die Hilfe:

Ja die Windows Clients sind in der AD Domäne.

folgende Config: (Es ist mir klar, dass Virenscan noch nicht scharf geschaltet ist.)

appcenter/apps/squid/status: installed
appcenter/apps/squid/version: 3.1
security/packetfilter/package/univention-squid/tcp/3128/all/en: HTTP proxy
security/packetfilter/package/univention-squid/tcp/3128/all: ACCEPT
squid/acl/.*:
squid/allowfrom:
squid/append_domain:
squid/auth/allowed_groups: Administratoren
squid/basicauth/children:
squid/basicauth:
squid/cache: yes
squid/contentscan: yes
squid/debug/level: ALL,1
squid/forwardedfor: off
squid/httpport: 3128
squid/kerberos/join/timeout:
squid/krb5auth/children: 10
squid/krb5auth/keepalive: yes
squid/krb5auth/tool:
squid/krb5auth: yes

squid/ntlmauth/children:
squid/ntlmauth/keepalive:
squid/ntlmauth/tool:
squid/ntlmauth:
squid/parent/directnetworks:
squid/parent/host:
squid/parent/options:
squid/parent/port:
squid/redirect:
squid/rewrite/children:
squid/transparentproxy: false
squid/virusscan:
squid/webports:

Der Squid hat folgenden Fehler im Log /var/log/squid3/cache.log
==> cache.log <==
2016/07/17 17:44:51| authenticateNegotiateHandleReply: Error validating user via Negotiate. Error returned ‘BH failed to verifyNtlmTypeThree(): Non-hexadecimal digit found’

kerberos läuft:
[i]root@solucs01:/root# klist
Credentials cache: FILE:/tmp/krb5cc_2002_nTK5aS
Principal: Administrator@TESTDOMAIN.DE

Issued Expires Principal
Jul 17 16:44:01 2016 Jul 18 02:44:01 2016 krbtgt/TESTDOMAIN.DE@TESTDOMAIN.DE
[/i]

Der entsprechende Windows Rechner ist Mitglied des Windows ADs.
Der Univention-DC ist auch Mitglied des Windows-ADs

Getestet mit Mozilla Firefox und Internet-Explorer unter Windows XP und Windows 7
Auf AD-Seite getestet mit 2003er AD und2008er AD

Es handelt sich um ein frisch aufgesetztes AD / frisch aufgesetzter Univention Master, auf dem sich der squid3 und dansguard befindet.

Kann es sein, dass das irgendwie mit SSL oder einer verschlüsselten Kommunikation mit dem Windows-AD zu tun hat?

Dank für die Hilfe




#11

Hallo,

das ist noch mehr schief:

wenn ich /etc/init.d/squid3 restart eigebe, dann kommt nach dem squid restart folgender Fehler:
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe
Traceback (most recent call last):
File “/usr/lib/squid3/squid_ldap_ntlm_auth”, line 689, in
sys.stdout.write(answer + “\n”)
IOError: [Errno 32] Broken pipe

Ich würde das mal so interpretieren, dass der Helper einfach immer abschmiert.


#12

Hallo,

ok i fond that in Bug 34044 - It is described as not critical, but messy

forge.univention.org/bugzilla/s … i?id=34044

May be - it ist noty my problem

searching…


#13

Hello,

i did an other try:

totally new installed the master univention DC (Member of Win2003 AD)

I did the following:

Installation with fixed ip address:
I have chosen: AD Member server
In the Installation process I did choose squid as univention app.

Afterwards I did login with my Windows AD Administrator Account

and did the following

univention-app update
univention-install univention-dansguardian

this did end in this error:

dpkg-query: Kein Paket gefunden, das auf ldapacl_66univention-appcenter_app.acl passt

Afterward I did:
univention-install univention-squid-kerberos

(no error)

Some settings:
ucr set squid/appenddomain=.testdomain.de
ucr set squid/auth/allowed_groups=Administratoren
ucr unset squid/transparentproxy

ucr unset squid/basicauth
ucr unset squid/basicauth/children

ucr set squid/cache=yes
ucr set squid/contentscan=yes
ucr set squid/forwardedfor=off
ucr set squid/httpport=3128

ucr set squid/krb5auth=yes
ucr set squid/krb5auth/children=10
ucr set squid/krb5auth/keepalive=yes

ucr set squid/ntlmauth=no
ucr unset squid/ntlmauth/children
ucr unset squid/ntlmauth/keepalive

Trying klist:
root@solucs02:/etc/squid3# klist
Credentials cache: FILE:/tmp/krb5cc_2002_osAmya
Principal: Administrator@TESTDOMAIN.DE

Issued Expires Principal
Jul 17 19:37:06 2016 Jul 18 05:37:06 2016 krbtgt/TESTDOMAIN.DE@TESTDOMAIN.DE

(Working)

Changing in /etc/squid3/squid.conf from

http_port 3129
to
http_port 3128

/etc/init.d/squid3 restart

getting this squid error:

Der folgende Fehler wurde beim Versuch die URL web.de/ zu holen festgestellt:

Cache Zugriff verweigert.

Sie sind momentan nicht berechtigt web.de/ von diesem Cache abzurufen, bis sie sich authentifiziert haben.

Please contact the cache administrator if you have difficulties authenticating yourself.

means: you are not allowed using squid cache before authentication.

I am out of ideas

Greetings


#14

Here my squid config:

root@solucs02:/etc/init.d# ucr search --brief squid
appcenter/apps/squid/status: installed
appcenter/apps/squid/version: 3.1
security/packetfilter/package/univention-squid/tcp/3128/all/en: HTTP proxy
security/packetfilter/package/univention-squid/tcp/3128/all: ACCEPT
squid/acl/.*:
squid/allowfrom:
squid/append_domain:
squid/appenddomain: .testdomain.de
squid/auth/allowed_groups: Administratoren
squid/basicauth/children:
squid/basicauth:
squid/cache: yes
squid/contentscan: yes
squid/debug/level: ALL,1
squid/forwardedfor: off
squid/httpport: 3128
squid/kerberos/join/timeout:
squid/krb5auth/children: 10
squid/krb5auth/keepalive: yes
squid/krb5auth/tool:
squid/krb5auth: yes
squid/ntlmauth/children:
squid/ntlmauth/keepalive:
squid/ntlmauth/tool:
squid/ntlmauth: no
squid/parent/directnetworks:
squid/parent/host:
squid/parent/options:
squid/parent/port:
squid/redirect:
squid/rewrite/children:
squid/transparentproxy:
squid/virusscan: yes
squid/webports: