Squid und Authentifizierung durch W2k-Domäne

Hallo,

ich benutze einen Squid-Proxy-Server. Dabei handelt sich um eine Standard-Squid-Installation unter SuSE 9.0 mit dem Squid-2.5.STABLE3-98.i586.rpm.

Diesen Squid-Proxy-Server habe ich schon so konfiguriert, dass eine Proxy-Authentifzierung notwendig ist, um über den Squid im Internet zu surfen.

Nun möchte ich aber ermöglichen, dass die Authentifizierung an der Windows2000-Domäne benutzt wird, um über den Proxy zu surfen. Das heisst also, der an der Domäne angemeldete User soll den Browser benutzen können, ohne sich nochmal authentifzieren zu müssen. Dabei werden IE und auch Firebird als Browser benutzt, das ganze kann also nicht nur IE-abhängig funktionieren.

Jetzt habe ich schon rumprobiert und auch gegoogelt, und herausgefunden, dass man hierzu das Squid-Modul msnt_auth benutzt. Nur leider funktioniert das irgendwie nicht. Aber warum??

Ich bin nach dem Tutorial unter http://www.tecchannel.de/betriebssysteme/1394/8.html vorgegangen. Ausserdem habe ich hier http://ursine.ca/cgi-bin/dwww?type=…nt_auth.html.gz nachgelesen, aber da hilft mir auch nichts weiter…

Zunächst habe ich in der squid.conf eingegeben „auth_param basic program /usr/sbin/msnt_auth“. Dieses Modul greift dann wohl standardmässig auf /usr/share/squid/msntauth.conf zu. Allerdings liegt bei mir diese Datei auch unter /etc/squid/msnt_auth. Wenn ich will, dass msnt_auth auf die Datei unter /etc/… zugreift, gebe ich also folgendes in der squid.conf an:

auth\_param basic program /usr/sbin/msnt\_auth /etc/squid/msntauth.conf

In der msntauth.conf habe ich den PDC eingetragen (einen BDC habe ich nicht, deshalb muss man wohl den PDC zweimal eintragen):

server server.test.net server.test.net test.net

Die IP-Adresse des server.test.net habe ich in der /etc/hosts eingetragen (10.10.10.100).

Die allow- und deny-users habe ich mal auskommentiert gelassen.

Meine squid.conf sieht so aus:

cache\_peer 10.10.10.200 parent 8080 8080 no-query

acl QUERY urlpath\_regex cgi-bin \?
no\_cache deny QUERY

debug\_options ALL,8

auth\_param basic program /usr/sbin/msnt\_auth /etc/squid/msntauth.conf
auth\_param basic children 5
auth\_param basic realm Squid Samba 88
auth\_param basic credentialsttl 30 minute

refresh\_pattern ^ftp: 1440 20% 10080
refresh\_pattern ^gopher: 1440 0% 1440
refresh\_pattern . 0 20% 4320

acl all src 0.0.0.0/0.0.0.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 SSL\_ports port 443 563

acl Safe\_ports port 80
acl Safe\_ports port 21
acl Safe\_ports port 443 563
acl Safe\_ports port 70
acl Safe\_ports port 210
acl Safe\_ports port 1025-65535
acl Safe\_ports port 280
acl Safe\_ports port 488
acl Safe\_ports port 591
acl Safe\_ports port 777
acl CONNECT method CONNECT

acl pbenutzer proxy\_auth REQUIRED

http\_access allow pbenutzer
http\_access deny all

http\_reply\_access allow all

cache\_effective\_user squid
cache\_effective\_group nogroup

cachemgr\_passwd disable shutdown offline\_toggle
cachemgr\_passwd \*\*\* info
cachemgr\_passwd \*\*\* all

error\_directory /usr/share/squid/errors/German

coredump\_dir /var/cache/squid

Wenn ich diese so benutze, dann funktioniert die Authentifizierung über die Windows-Domäne nicht. Zum einen bekommt der User die Meldung, dass er sich anmelden muss, zum anderen kann ich mich nicht anmelden, weder mit der Windows-Authentifizierung noch mit irgendwas anderem…

Wenn ich den Befehl
./msnt_auth /etc/squid/msntauth.conf
auf der Konsole als Root eingebe, passiert überhaupt nix. Auch in /var/log/messages steht dann keine Fehlermeldung oder ähnliches…

Was fehlt da? Wie funktioniert das mit der msnt_auth? Oder gibt es vielleicht noch eine andere Möglichkeit, die Windows-User direkt zu authentifzieren?? Oder ist das ein Problem, weil ich einen zweiten Proxy benutze? Muss da irgendwas anders eingestellt werden?

Wäre auch über ein gutes Tutorial diesbezüglich dankbar…

Grüsse
schuelsche

Das habe ich auch gerade eingerichtet. Versuche es mal mit smb_auth!

Um zu gucken, ob es allgemein läuft, kannst Du das auch im Debugmodus in der Konsole starten (anstelle von Domäne Deine NT-Domäne angeben):

smb\_auth -W Domäne -d

Dann einen Nutzernamen und das Password durch ein Leerzeichen getrennt eingeben, Enter drücken und gucken was passiert. Du mußt allerdings auf dem Domaincontroller ein File proxyauth hinterlegen, in dem die Zeichenkette „allow“ steht. Wo genau und mit welchen Benutzerrechten Du das machen mußt, findest Du in Google.

In der squid.conf habe ich das eingetragen:

auth\_param basic program /usr/sbin/smb\_auth -W Domäne

Ob der Pfad bei Dir auch stimmt, findest Du sicher auch raus.

Bis denne
Schnoof

Hallo,

Das habe ich auch gerade eingerichtet. Versuche es mal mit
smb_auth!

Funktioniert das denn auch, wenn ich gar keinen Samba-Server laufen habe bzw. den nicht mit einbinden möchte, weil ich nicht alle User auf dem auch noch einrichten möchte?

Du mußt
allerdings auf dem Domaincontroller ein File proxyauth
hinterlegen, in dem die Zeichenkette „allow“ steht. Wo genau
und mit welchen Benutzerrechten Du das machen mußt, findest Du
in Google.

Ok, dann werde ich mal suchen. Habe sowas im Zusammenhang mit msnt_auth schon gelesen gehabt, aber da stand auch nicht, wo man dieses File in welcher Form speichern muss…

Grüsse
schuelsche

Hallo,

also, ich habe das jetzt mal versucht.

Du mußt
allerdings auf dem Domaincontroller ein File proxyauth
hinterlegen, in dem die Zeichenkette „allow“ steht. Wo genau
und mit welchen Benutzerrechten Du das machen mußt, findest Du
in Google.

Das habe ich nun gemacht. Eine Datei namens proxyauth mit Inhalt allow mit Lese- und Ausführrechten auf den Win-PDC in den Ordner gelegt, in dem auch die anderen Logon-Skripte liegen.

Leider funktioniert

smb\_auth -W Domäne -d

nicht.

Ich bekomme keine Fehlermeldung, weder auf der Konsole noch in /var/log/messages… ich habe leider überhaupt keine Ahnung, woran das liegt.

Auf http://www.linuxbu.ch/ergaenzung/Kapitel13.htm wird geschrieben, dass man

/usr/local/bin/smb\_auth -W ARBEITSGRUPPE

eingeben soll, aber auch das funktioniert nicht.

Wie schon gesagt habe ich Squid über SuSE installiert. Die Dateien smb_auth und msnt_auth sind auch vorhanden in /usr/sbin. Demnach müsste das ja eigentlich alles richtig installiert worden sein.

Wie kann ich denn noch testen, ob die Verbindung zum PDC hergestellt wird? Vielleicht stimmt ja unterwegs was nicht…

Und wie schon gefragt, bleibt trotzdem die Frage, ob ich mich dann als Samba-User anmelden muss (falls es irgendwann mal klappt) oder ob das dann als normaler Win-Benutzer geht.

Grüsse
schuelsche

Du mußt
allerdings auf dem Domaincontroller ein File proxyauth
hinterlegen, in dem die Zeichenkette „allow“ steht. Wo genau
und mit welchen Benutzerrechten Du das machen mußt, findest Du
in Google.

Das habe ich nun gemacht. Eine Datei namens proxyauth mit
Inhalt allow mit Lese- und Ausführrechten auf den Win-PDC in
den Ordner gelegt, in dem auch die anderen Logon-Skripte
liegen.

Heißt der NETLOGON? Mit den NT-Domänen kenne ich mich nicht so aus, aber wenn ich das smb_auth-Skript ausführe, sucht er ganz automatisch in dem Verzeichnis NETLOGON nach der proxyauth-Datei.

Leider funktioniert

smb_auth -W Domäne -d

nicht.

Da passiert auch nicht viel, außer das der Cursor in die nächste Zeile springt. Und dort dann Nutzer und Password eintippen und Enter drücken.

Auf http://www.linuxbu.ch/ergaenzung/Kapitel13.htm wird
geschrieben, dass man

/usr/local/bin/smb_auth -W ARBEITSGRUPPE

eingeben soll, aber auch das funktioniert nicht.

Wie schon gesagt habe ich Squid über SuSE installiert. Die
Dateien smb_auth und msnt_auth sind auch vorhanden in
/usr/sbin. Demnach müsste das ja eigentlich alles richtig
installiert worden sein.

Hab ich auch, hab allerdings SuSE 9.1. Aber so groß sollte der Unterschied nicht sein. Irgendwelche Extras habe ich nicht gemacht.

Wie kann ich denn noch testen, ob die Verbindung zum PDC
hergestellt wird? Vielleicht stimmt ja unterwegs was nicht…

Dazu ja das smb_auth-Skript im Debugmodus auf der Konsole. Wenn Du dann Nutzernamen und Password (in eine Zeile nur durch Leerzeichen getrennt) eingegeben hast, dann spuckt er einiges aus.

Und wie schon gefragt, bleibt trotzdem die Frage, ob ich mich
dann als Samba-User anmelden muss (falls es irgendwann mal
klappt) oder ob das dann als normaler Win-Benutzer geht.

Nein, Samba muß nicht mal laufen. Es läuft wirklich über die NT-Domäne. Sonst könnten hier im Haus eine Menge Leute nicht ins Internet.

Bis denne
Schnoof

Hallo,

Heißt der NETLOGON? Mit den NT-Domänen kenne ich mich nicht so
aus, aber wenn ich das smb_auth-Skript ausführe, sucht er ganz
automatisch in dem Verzeichnis NETLOGON nach der
proxyauth-Datei.

Auf unserem PDC, der unter W2K läuft, gibt es kein Verzeichnis Netlogon. Die User-Logonskripte, über die sich die User an der W2K-Domäne anmelden, liegen in einem Verzeichnis namens /scripts. Reicht es aus, wenn ich direkt im Wurzelverzeichnis des PDC ein Verzeichnis NETLGON anlege?

Kann es sein, dass msnt_auth nur mit NT-Domänen funktioniert und nicht mit W2k-Domänen? smb_auth hingegen müsste doch auf jeden Fall auch mit W2K-Domänen funktionieren… zumindest ist der PDC auch über smb://IP erreichbar.

Leider funktioniert

smb_auth -W Domäne -d

nicht.

Da passiert auch nicht viel, außer das der Cursor in die
nächste Zeile springt. Und dort dann Nutzer und Password
eintippen und Enter drücken.

… aahh, jetzt ja :wink: Da passiert dann was :wink:

linux:/usr/sbin # ./smb\_auth -W test.net -d
user password
Domain name: test.net
Pass-through authentication: no
Query address options: 
Domain controller IP address:
ERR

mmhhh… und was sagt das jetzt? Dass er irgendwie nichts findet…

Nein, Samba muß nicht mal laufen. Es läuft wirklich über die
NT-Domäne. Sonst könnten hier im Haus eine Menge Leute nicht
ins Internet.

NT-Domäne = W2K-Domäne?

Grüsse
schuelsche

Heißt der NETLOGON? Mit den NT-Domänen kenne ich mich nicht so
aus, aber wenn ich das smb_auth-Skript ausführe, sucht er ganz
automatisch in dem Verzeichnis NETLOGON nach der
proxyauth-Datei.

Auf unserem PDC, der unter W2K läuft, gibt es kein Verzeichnis
Netlogon. Die User-Logonskripte, über die sich die User an der
W2K-Domäne anmelden, liegen in einem Verzeichnis namens
/scripts. Reicht es aus, wenn ich direkt im Wurzelverzeichnis
des PDC ein Verzeichnis NETLGON anlege?

Kann es sein, dass msnt_auth nur mit NT-Domänen funktioniert
und nicht mit W2k-Domänen? smb_auth hingegen müsste doch auf
jeden Fall auch mit W2K-Domänen funktionieren… zumindest ist
der PDC auch über smb://IP erreichbar.

Wie gesagt, mit den Domaenen kenne ich mich nicht aus. Ich bin nur Hilfskraft in dem Unternehmen, nur zwei Tage die Woche da, und im grossen und ganzen laeuft alles schon seit geraumer Zeit. Vor einigen Wochen hatte ich mal einen aktuellen Linux-Server als Proxy installiert, weil der bisherige schon veraltet und teils auch buggy war. Und da durfte ich mich dann auch mit dem Authentifizierungsproblem auseinander setzen. Aber ich wuerde glatt behaupten, dass es eigentlich keinen Unterschied geben duerfte (Win2000 ist grundsaetzlich doch auch nur NT?), da bei uns eine gemischte Landschaft aus NT 4.0, 2000 und XP besteht, und die Anmeldung letztlich bei allen gleich laufen sollte.

… aahh, jetzt ja :wink: Da passiert dann was :wink:

linux:/usr/sbin # ./smb_auth -W test.net -d
user password
Domain name: test.net
Pass-through authentication: no
Query address options:
Domain controller IP address:
ERR

mmhhh… und was sagt das jetzt? Dass er irgendwie nichts
findet…

Der findet nicht mal den Controller. In meinem Fall ging es bis dahin voellig problemlos. Je nachdem auf welchem der Controller er landete, haperte es anfangs mit der proxyauth-Datei (da ging wohl was beim Abgleichen schief, so dass teilweise die Nutzerrechte nicht stimmten).

NT-Domäne = W2K-Domäne?

Ich wuerde behaupten, dass das alles irgendwie dasselbe sein sollte, aber wissen tu ich es nicht.

Ab hier kann ich Dir weniger bis gar nicht helfen. Wenn ich am Donnerstag wieder auf Arbeit bin, dann frage ich noch mal nach, wie das mit den Domaenen ist.

Bis denne
Schnoof

Auf unserem PDC, der unter W2K läuft, gibt es kein Verzeichnis
Netlogon. Die User-Logonskripte, über die sich die User an der
W2K-Domäne anmelden, liegen in einem Verzeichnis namens
/scripts. Reicht es aus, wenn ich direkt im Wurzelverzeichnis
des PDC ein Verzeichnis NETLGON anlege?

Das ist normal, ein solches Verzeichnis existiert unter NT40/50 ff. nicht. Hier geht es um eine Netzwerkfreigabe namens NETLOGON, das Verzeichnis, auf das diese zeigt, ist nicht festgelegt, i. d. R. ist es /%systemverzeichnis%/SYSVOL/sysvol/%domäne%/scripts.

Am einfachsten findest du die Freigabe im Explodierer-> Netzwerkumgebung-> Gesamtes Netzwerk-> Microsoft Winmüll-Netzwerk-> Domäne-> Servername-> NETLOGON

Kann es sein, dass msnt_auth nur mit NT-Domänen funktioniert
und nicht mit W2k-Domänen? smb_auth hingegen müsste doch auf
jeden Fall auch mit W2K-Domänen funktionieren… zumindest ist
der PDC auch über smb://IP erreichbar.

Das geht mit allen NT-Domänen, ob 4.0, 5.0 (w2k) oder folgenden.

Gruss
Schorsch

Hallo,

Das ist normal, ein solches Verzeichnis existiert unter
NT40/50 ff. nicht. Hier geht es um eine Netzwerkfreigabe
namens NETLOGON, das Verzeichnis, auf das diese zeigt, ist
nicht festgelegt, i. d. R. ist es
/%systemverzeichnis%/SYSVOL/sysvol/%domäne%/scripts.

Ok, danke, das entspricht ja unserem scripts-Verzeichnis.

Kann es sein, dass msnt_auth nur mit NT-Domänen funktioniert
und nicht mit W2k-Domänen?

Das geht mit allen NT-Domänen, ob 4.0, 5.0 (w2k) oder
folgenden.

… aber nur, wenn auf dem W2K-Server ein PDC emuliert wird. Und das ist bei uns nicht der Fall…

Deswegen muss ich das wohl doch über smb_auth bzw. ntlm_auth probieren…

Grüsse
schuelsche

Hallo,

mittlerweile bin ich soweit, dass ich entweder die Authentifzierung über smb_auth oder über ntlm_auth nutzen muss.

Mit smb_auth bin ich noch nicht weitergekommen. Momentan probiere ich gerade ntlm_auth. Damit habe ich aber folgendes Problem.

Ich bin nach dem Tutorial unter http://www.squid-cache.org/Doc/FAQ/FAQ-23.html#ss23.5 vorgegangen. Bei Samba 3.0.5 und squid-2.5.STABLE5-42.9 ist ntlm_auth ja dabei.

Die smb.conf habe ich folgendermassen editiert:

[global]
 workgroup = TEST
 ads server = 192.168.0.27
 realm = TEST.NET
 netbios name = linuxclient
 security = domain
 password server = 192.168.0.27
 winbind uid = 10000-20000
 winbind gid = 10000-20000
 winbind use default domain = yes
 printing = cups
 printcap name = cups
 printcap cache time = 750
 cups options = raw
 printer admin = @ntadmin, root, administrator
 username map = /etc/samba/smbusers
 map to guest = Bad User
 logon path = \\%L\profiles\.msprofile
 logon home = \\%L\%U\.9xprofile
 logon drive = P:
 encrypt passwords = yes
 server string = Samba Server 88
 add machine script =
 domain master = false
 domain logons = no
 local master = no
 preferred master = auto
 ldap suffix = dc=example,dc=com

Um die winbindd-Konfiguration zu testen habe ich eingegeben:

wbinfo -t

Ergebnis ist:
checking the trust secret via RPC calls succeeded

Um die Authentifizierung zu testen, habe ich das eingegeben:

wbinfo -a TEST\\user%password

Ergebnis ist:

plaintext password authentication succeeded
challenge/response password authentication succeeded

Soweit ist also alles ok.

Im folgenden Schritt muss man dann squid-Access auf die winbin_privileged erlauben mittels

chrgrp squid /var/lib/samba/winbindd\_privileged

.

Leider gibt es bei mir keine Gruppe squid.
In der squid.conf steht
cache_effective_user squid root
cache_effective_group nogroup

Also habe ich diesen Schritt übersprungen.

Und jetzt kommt das Problem:
mittels
/usr/sbin/ntlm_auth --helper-protocol=squid-2.5-basic
soll man den Zugang testen können.

Aber egal, wie ich ./ntlm_auth eingebe, es funktioniert nicht :-/

linux:/usr/sbin # ./ntlm\_auth --helper-protocol=squid-2.5-basic
You MUST specify at least one Domain Controller.
You can use either \ or / as separator between the domain name 
and the controller name

Irgendwo habe ich gelesen, dass man es auch so eingeben kann:

linux:/usr/sbin # ./ntlm\_auth TEST.NET\\NAMEPDC
user+password
BH Helper detected protocol error

Wenn ich eingebe

./ntlm\_auth TEST.NET\\NAMEPDC --helper-protocol=squid-2.5-basic

dann bekomme ich immer obigen Fehler.

Wie kann ich diese Authentifzierung richtig testen??

Grüsse
schuelsche

Hallo,

Das ist normal, ein solches Verzeichnis existiert unter
NT40/50 ff. nicht. Hier geht es um eine Netzwerkfreigabe
namens NETLOGON, das Verzeichnis, auf das diese zeigt, ist
nicht festgelegt, i. d. R. ist es
/%systemverzeichnis%/SYSVOL/sysvol/%domäne%/scripts.

Ok, jetzt hat es funktioniert :smile:))))))))))
… warum auch immer, aber es geht jetzt über smb_auth.

Grüsse
schuelsche