killtec
Goto Top

Squid3 mit SSO an Windows 2008R2 Domain

Hallo zusammen

Ich möchte gerne folgendes umsetzen:

Gegebene Umgebeung (hört sich komisch an, ist aber so ;) ):
- Windows 2008R2 Domäne
- Linux Server mit Squid3 und Apache

Was möchte ich realisieren:
Squid3 als Proxy mit einer Authentifizierung an der Windows 2008R2 Domäne mit einem SSO und Authentifizierung einer Gruppe.

D.H. -> In der OU habe ich eine Gruppe namens Internetnutzer und diese sollen dann über den Proxy ins Internet, ohne jedes mal beim Neustart des Browsers sich zu authentifizieren.

Problem:
Ich bin Squid Neuling und habe aber auch schon mal vor einer weile damit experimentiert. Jedoch ohne Erfolg face-sad Problem: Die How-Tos die im Netz sind, sind entweder nicht für die Squid-Version passend und so schlecht beschrieben, dass ich da nicht weiter komme.

Also Vorweg: Board-Suche und Goolge habe ich schon befragt und noch nichts passendes gefunden.

Ich würde dieses Problem gerne mit euch lösen. Falls Ihr andere Vorschläge habt, wie man das Problem lösen kann, bin ich auch offen.

Also Zusammengefasst, was will ich erreichen: Eine Bestimmte Nutzergruppe darf über den Prxy ins Internet, sonst keiner.

Danke euch schon mal.

Content-ID: 196439

Url: https://administrator.de/contentid/196439

Ausgedruckt am: 22.11.2024 um 02:11 Uhr

aqui
aqui 03.01.2013 aktualisiert um 18:14:38 Uhr
Goto Top
Diese Tutorials sollten dir helfen, denn sie beschreiben die generelle Integration in eine Windows Domain.
Debian Linux in eine Active Directory Domäne integrieren
Netzwerk Management Server mit Raspberry Pi
und
ClearOS 5.2 Freeradius 2 LDAP ntlm auth Active Directory
Sie beschreiben mehr oder weniger die gleichen Schritte. Den Rest erklärt:
http://www.squid-handbuch.de/hb/
Für die Einbindung von Squid mit ntlm_auth findest du unzähliche Infos im Netz:
http://www.webseite-n.de/2010/02/ubuntu-anleitung-squid-proxy-server-mi ...
usw.
Es ist mehr oder weniger exakt die gleiche Prozedur wie bei der Einbindung von FreeRadius das auch ntlm_auth benutzt:
http://deployingradius.com/documents/configuration/active_directory.htm ...
Das debian Tutorial erklärt es eigentlich umfassend. Die Schritte sind recht einfach und dort im Deatil erklärt:
  • Kerberos User Paket installieren und krb5.conf customizen
  • Samba und Samba Binaries installieren und smb.conf anpassen
  • nsswitch.conf anpassen
  • hosts Datei und DNS anpassen
  • Squid Server in die Domain aufnehmen
Her kannst du dann einen Vortest machen mit dem ntlm_auth Modul indem du es auf der Konsole direkt ausführst:
$ ntlm_auth --request-nt-key --domain=WINDOMAIN --username=user --password=password
Das sollte dann eine "SUCESS" ergeben wenn du einen gültigen Usernamen verwendest.
Dann musst du nur noch die squid.conf anpassen und los gehts !
Ist eigentlich recht einfach und schnell gemacht !
killtec
killtec 04.01.2013 um 11:32:10 Uhr
Goto Top
Danke aqui für den link zum Tutorials.
Ich habe den Server nun in der Domain und die Auth funktioniert auch (direkt am Server und SSH).

wbinfo zeigt mir alle Benutzer an.

Nun habe ich das Problem, dass ich an der Stelle nicht weiter weiß, wo ich den Squid gegen eine AD-Gruppe Authentifizieren kann.

Ich habe in meiner squid.conf folgendes hinzu gefügt:
### Windows Auth ###
auth_param ntlm program /usr/bin/ntlm_auth -helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth -helper-protocol=squid-2.5-basic
auth_param ntlm children 10
auth_param basic children 5
auth_param basic realm pvg-proxy01
auth_param basic credentialsttl 12 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval 10 seconds

Mit der Einstellung funktioniert Squid leider nicht. Er startet den Dienst nicht mit den Einstellungen.
Weiß leider auch aus dem Kopf nicht, welche log-File mir einen Hinweis geben kann.

Die AD-Gruppe die ich Authentifizieren möchte hat folgenden DN:
CN=Internetnutzer,OU=Allgemein,OU=Gruppen,OU=PVG,DC=pvg,DC=lan

kannst du mir bitte hier nochmal einen Hinweis geben?
Habe mir den Link von webseite-n angeschaut, kann aber da leider nich auseinander halten, was ich mit meinen eigenen Variablen/Namen in der squid.conf ersetzen muss und was nicht.

Ohne Auth funktioniert squid.

Gruß
aqui
aqui 04.01.2013 um 11:57:20 Uhr
Goto Top
Ja, das ist ein bekannter Fehler oder besser Problem, da es eigentlich kein Fehler ist... Es lässt sich aber leicht fixen.
Leider teilst du uns nicht mit welche Distro du benutzt aber anhand einen klassischen Debian Installation ist das Prinzip erklärt, denn es tauscht bei einigen Distros analog auch bei der FreeRadius Installation auf.
Der Output von ntlm_auth und vermutlich auch ntlm_param wird über eine Pipe Datei in /run/samba/winbindd_privileged übergeben auf das der User "freerad" und bei dir vermutlich der User "squid" unter dem der FreeRadius bzw. Squid als Daemon rennt keinen Zugriff hat. Du musst also checken mit welchem User und Group dein Squid rennt.
FreeRadius und Squid Abfragen mit ntlm_auth und vermutlich auch ntlm_param scheitern also deshalb an den Userrechten für das Pipe verzeichnis obwohl ein einzellner ntlm_auth Aufruf mit Abfrage des AD fehlerfrei funktioniert.
Mit einem "adduser freerad winbindd_priv" fügt man den User freerad der Gruppe winbindd_priv zu die alle Rechte in diesem Pipe Verzeichnis hat und damit klappt die FreeRadius und Squid Abfrage aus dem AD dann fehlerlos !
Also checke mal mit welchem Usernamen und Gruppe der Squid Daemon ausgeführt wird und suche in deiner Distro dieses Üvergabeverzeichnis. Dr. Google hilft dir dabei wenn du gezielt danach suchst.
killtec
killtec 04.01.2013 um 13:00:50 Uhr
Goto Top
Hi Aqui,
sorry, das ist ein SLES 11 SP2. Werde das nachher mal testen.
Gruß
killtec
killtec 14.01.2013 um 10:22:15 Uhr
Goto Top
Hi Aqui,
habe jetzt mal geschaut wo die Datei liegt und denke mal, das da der Fehler dran liegt:

proxy10:~ # ls -lai /var/lib/samba/winbindd_privileged
total 8
1778743 drwxr-x--- 2 root root 4096 Jan 8 10:09 .
1778495 drwxr-xr-x 9 root root 4096 Jan 8 14:27 ..
1778740 srwxrwxrwx 1 root root 0 Jan 8 10:09 pipe
proxy10:~ #

So wie es aussieht darf da nur root als Gruppe und User drauf schreiben. Ist es denn jetzt sinnvoll, den Benutzer "squid" der Gruppe root hinzuzufügen? Dann hätte dieser ja von hause aus root-Zugriff auf dem System oder?
Was wäre hier denn eine sinnvolle Lösung?
aqui
aqui 14.01.2013 um 10:44:14 Uhr
Goto Top
Jau, das ist das Problem ! Wenn du natürlich den user squid in die root Group packst fixt das das Problem reisst aber ein Sicherheitsloch auf denn der squid User bekommt dann root Rechte. Besser wäre es wenn die Gruppenrechte andersrum aufgezäumt wären wie bei der Debian Distro.
killtec
killtec 14.01.2013 aktualisiert um 10:48:42 Uhr
Goto Top
Also meinst du lieber die Gruppenberechtigungen ändern, bzw. die Datei per chgrp auf squid setzen und den root squid hinzufügen?
Suche gaerade parallel noch nach der config, mit ntlm_auth gegen eine Gruppe zu authentifizieren. Geht das überhaupt oder müsste das dann via LDAP laufen?

[EDIT]
Habe nochwas gefunden. Recht es aus, denPfad so anzupassen?:
auth_param ntlm program /usr/bin/ntlm_auth -helper-protocol=squid-2.5-ntlmssp --domain=TEST --require-membership-of=Internetnutzer
[/EDIT]
aqui
aqui 14.01.2013 aktualisiert um 11:42:56 Uhr
Goto Top
Das musst du mal ausprobieren wie das bei SuSE ist. Bei Debian reichte es den Squid/FreeRadius Daemon User einfach in die Gruppe aufzunehmen.
Dort sieht es dann so aus:
root@raspberry:/run/samba# ls -l
total 1000
(...der Übersicht halber ein paar Dateieinträge gelöscht !)
srwxrwxrwx 1 root root 0 Jan 14 11:36 unexpected
-rw-r--r-- 1 root root 5 Jan 14 11:36 winbindd.pid
drwxr-x--- 2 root winbindd_priv 60 Jan 14 11:36 winbindd_privileged
root@raspberry:/run/samba#

Du kannst das ja erstmal testen den Squid User damit in root aufzunhemen. Wichtig ist ja erstmal die Funktion zu testen damit es rennt. Wenns klappt kann man das Rechte Finetuning später machen..
killtec
killtec 16.01.2013 um 12:28:45 Uhr
Goto Top
Hi Aqui,
so, habe mal wieder weiter getestet face-smile. Bei folgender config schmiert der Squid nach kurzer Zeit ab. Seitenaufrufe gehen jedoch von anfang an nicht. (also sobald er sagt, dass Squid gestartet ist).
Durch das abschmieren kommt auch immer die Meldung:
Starting WWW-proxy squid - Warning: /var/run/squid.pid exists ! done

-- squid.conf auszug --

auth_param ntlm program /usr/bin/ntlm_auth -helper-protocol=squid-2.5-ntlmssp
auth_param basic program /usr/bin/ntlm_auth -helper-protocol=squid-2.5-basic
auth_param ntlm children 10
auth_param basic children 10
auth_param basic realm proxy
auth_param basic credentialsttl 12 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval 10 seconds
killtec
killtec 23.01.2013 um 13:53:34 Uhr
Goto Top
Hi Aqui,
habe mal geschaut, winbindd_privileged gehört der Gruppe winbind.
Squid sind auch beide in der Gruppe root.

1778743 drwxr-x--- 2 root winbind 4096 Jan 9 19:12 winbindd_privileged

selbst, wenn ich die Gruppenzugeörigkeit testweise auf root ändere, schmiert Squid weg.
Hast du hier noch eine Idee?
killtec
killtec 23.01.2013, aktualisiert am 24.01.2013 um 15:58:57 Uhr
Goto Top
So,
habe nun einen Fehler gefunden, anscheind authentifiziert er sich. Nur wie bekomme ich es hin, dass er nur eine bestimmte Gruppe zulässt?
meine Zusatzconfig sieht so aus:

  1. eigene Regeln

### Windows Auth ###
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp --domain=PVG --require-membership-of="internetnutzer"
auth_param basic program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-basic --domain=PVG --require-membership-of="internetnutzer"
auth_param ntlm children 10
auth_param basic children 10
auth_param basic realm proxy
auth_param basic credentialsttl 12 hours
auth_param basic casesensitive off
authenticate_cache_garbage_interval 10 seconds

acl ntlm_users proxy_auth REQUIRED
http_access allow ntlm_users
http_access deny all

Problem: das Require-Membership-of wird anscheind nicht beachtet. Habe mich aus der Gruppe gelöscht und kann trotzdem surfen??

Gruß
killtec
killtec 24.01.2013 um 15:59:31 Uhr
Goto Top
Lässt sich feststellen, ob der NTLM überhaupt mit dem Squid authentifiziert? Mir kommt es so vor, als ob er das nicht tut...
aqui
aqui 24.01.2013 um 17:34:39 Uhr
Goto Top
Ja, das kannst du ganz einfach machen mit einem 2ten Terminal wo du mal "tcpdump -host <ip_server>" laufen lässt, das zeigt dir dann den Traffic an.
Ohne ntlm Authentisierung gibt ntlm eine Fehlermeldung aus ! Wenn du ein "Success" bekommst dann klappt es !
Netzwerk Management Server mit Raspberry Pi --> "FreeRadius mit AD"

Das mit der Einschränkung auf Gruppen ist irgendwo dokumentiert...muss nochmal suchen face-wink
killtec
killtec 25.01.2013 aktualisiert um 12:22:01 Uhr
Goto Top
Hi Aqui,
wenn ich mit wbinfo -a administrator%<adminpassword> die Anmeldung teste, kommt ein OK zurück.

plaintext password authentication succeeded
challenge/response password authentication succeeded

Mache ich das mit meinem Benutzer passiert folgendes:

plaintext password authentication failed
Could not authenticate user myuser with plaintext password
challenge/response password authentication failed
error code was NT_STATUS_WRONG_PASSWORD (0xc000006a)
error message was: Wrong Password
Could not authenticate user myuser with challenge/response

Wenn jedoch wbinfo -u | grep "myuser" eingebe, zeigt er mir meinen Benutzer an.

Das Kennwort habe ich korrekt eingegeben. Habe es mehrfach versucht.

Hast du eine Idee, was hier nicht korrekt funktioniert?

Wegen dem Befehl tcpdump > die -host Option hat meine Version nicht face-sad

Gruß
aqui
aqui 25.01.2013 um 21:18:26 Uhr
Goto Top
Sorry ohne das "-" bei host ! Siehe auch:
http://danielmiessler.com/study/tcpdump/

Das mit dem Passwort ist nicht normal. Generell werden alle User sauber authentisiert. Hast du Umlaute oder Sonderzeichen im Passwort ?
killtec
killtec 26.01.2013 um 11:42:19 Uhr
Goto Top
Hi aqui,
ja, im Kennwort sind Umlaute und Sonderzeichen. Wobei bei dem Admin-Kennwort auch Sonderzeichen enthalten sind. Ich kann das ja mal testen, indem ich ein anderes Kennwort vergebe. Gebe dir Montag Rückmeldung. P.S.: Bei dem tcpdump muss ich den DC wo er authentifizieren soll angeben, richtig?

Schönes Wochenende face-smile
aqui
aqui 26.01.2013 um 13:05:17 Uhr
Goto Top
Ja, richtig !
killtec
killtec 06.02.2013 um 15:58:02 Uhr
Goto Top
Hi Aqui,
der scheint keine NTLM Pakete zu übertragen. Mit Buchstaben wie äöüß im Kennwort scheint er auch nicht klar zu kommen.

Hast du evtl. auch eine andere Idee, wie man einen Proxy mit SSO realisieren kann?

Danke.
aqui
aqui 06.02.2013 um 16:14:05 Uhr
Goto Top
Eigentlich sollte das transparent sein. Es würde ja bedeuten das die AD Integration mit winbind und NTLM keine Umlaute könnte, was die halbe Welt von der Funktion ausschliesst. Kann eigentlich nicht sein...
Teste das doch einfach mal mit einem User OHNE Umlaute !
Klappt das denn da ??
Ansonsten gehst du einfach strategisch vor, das du den Proxy Host erstmal ganz klassisch in die AD Domain integrierst, User Authentisierung usw. wasserdicht testest.
Dann das NTLM Modul testen.
Wenn das alles rennt muss das nochmalerweise wasserdicht funktionieren.
killtec
killtec 07.02.2013 um 08:54:27 Uhr
Goto Top
Hi Aqui,
folgendes Phänomen:
Direkt an der Konsole kann ich mich mit meinen Benutzernamen udn Kennwort anmelden, über SSH jedoch nicht.
Mit dem Administrator geht es sowohl in der Konsole als auch per SSH.

Zur integration in die AD: Der Proxyserver ist in dei AD aufgenommen, so wie du es weiter oben als Anleitungslink gepostet hattest.

Der NTLM-Auth über die Konsole funktioniert auch, jedoch nicht über SSH.

Alles ein bisschen komisch... face-sad

Gruß