SelfLinux Internet World Wide Web Proxies Der Web-Proxy Squid Abschnitt 7 | SelfLinux-0.13.0

| Der Web-Proxy Squid | Autor Formatierung GPL

#### 8 Squid in Windows-NT-Netz integrieren

#### 8.1 Funktionen für die Windows-NT-Benutzerverwaltung

Der Squid ist flexibel, ausgereift und kostenlos, doch innerhalb eines Windows-Netzes hatte er bis zur Version 2.4 zwei gravierende Nachteile:

1. Doppelte Benutzerverwaltung: Sollen User unterschiedliche Web-Zugriffsrechte bekommen, müssen diese Nutzer dem Squid natürlich bekannt sein, d. h. es ist eine Benutzerverwaltung notwendig. Diese musste bislang zusätzlich, neben der Windows-Domänen-Benutzerverwaltung, betreut werden, was einen erheblichen administrativen Mehraufwand bedeutete.
2. Verminderte Benutzerfreundlichkeit beim Surfen: Eine transparente Authentifizierung durch den Internet Explorer (IE) war nicht möglich, d.h. es musste für den Zugang Name und Passwort in ein Browser-Fenster eingeben werden, das auch noch unabhängig von dem der Windows-NT-Domäne ist.

Diese Nachteile sind mit der Squid-Version 2.5 bei entsprechender Konfiguration behoben.

Das Squid- und das Samba-Team schufen gemeinsam die Möglichkeit, die Benutzerverwaltung einer Windows-NT-Domäne für Squid nutzen zu können. Der Zugriff auf die Windows-Domäne wird dem Squid-Proxy mit Hilfe neuer Helper-Module in Ergänzung zu Samba-Winbind ermöglicht.

Auch die Benutzerfreundlichkeit für den Surfenden ist mit der MS-Konkurrenz gleichgezogen. Dabei nutzt der Squid die gleichen Mechanismen (NTLM) wie ein MS-Proxy. Es ist mit dem IE keine zusätzliche Authentifizierung mehr notwendig. Mit allen anderen Browsern muss man sich authentifizieren, und zwar mit dem Nutzernamen und Passwort des NT-Benutzers.

Die Arbeitserleichterung für Administratoren eines Windows-Netzes ist enorm. Der neu angelegte User hat sofort die für ihn bestimmten Rechte, wenn er nur der entsprechenden Windows-Gruppe hinzugefügt wird. Da die User im Usermanager für NT normalerweise mit F8 von einer Vorlage kopiert werden, ist dies kein Mehraufwand.

Gibt es Probleme mit fehlenden Rechten, reicht nun meist ein Blick in den Usermanager, um diese zu kontrollieren.

Die Installation und Einrichtung mit der genannten Zielsetzung ist nicht trivial, sollte aber mit geringen Unix-Grundkenntnissen und dieser Anleitung möglich sein. Leider ist es meist unumgänglich, die Programme samba und squid selbst zu kompilieren. Vorhandene Binaries der Linux-Distributionen sind nicht mit den nötigen Parametern übersetzt und oft nicht aktuell genug.

#### 8.2 Samba mit Winbind

#### 8.2.1 Installation

Es müssen Entwicklertools wie make und gcc installiert sein. Die folgenden Ausführungen beziehen sich auf die Samba-Version 3.0.*.

Nach dem Download der Quellen sollten diese unter /usr/local/src/ ausgepackt werden. Samba ist zu übersetzen und zu installieren mit:

root@linux # cd /usr/local/src/samba-<Version>/source root@linux # ./configure --with-winbind root@linux # make root@linux # make install

#### 8.2.2 Konfiguration von Samba/winbind

Als erstes ist eine smb.conf aus dem Quelltest in das richtige Verzeichnis zu kopieren:

root@linux # cp /usr/local/src/samba-<Version>/examples/smb.conf.default

Um die Konfigurationsdatei leichter zu finden, sollte ein Link in das Verzeichnis /etc/ erstellt werden mit:

root@linux # ln -s /usr/local/samba/lib/smb.conf /etc/smb.conf

Nun sollte diese Datei folgendermaßen angepasst werden:

    workgroup = <NT-Domänen-Name>
    security = domain
    # hier die Domain Controller des Standortes eintragen
    password server = <dc1> <dc2>
    wins support = no
    # Hier die WINS-Server der Standorte eintragen
    wins server = <IP_des_WINS-Servers>
    max log size = 10000
    local master = no
    winbind enum users = yes
    winbind enum groups = yes
    winbind use default domain = yes
    idmap uid = 10000-20000
    idmap gid = 10000-20000
    template shell = /bin/false

Unter workgroup ist der eigene NT-Domänen-Name einzusetzen. Als password server muss mindestens ein Domänen-Controller angegeben werden.

Nun kann der Samba-Rechner in die Windows-NT-Domäne aufgenommen werden mit:

root@linux # /usr/local/samba/bin/net rpc join -S <PDC> -U <Administrator>

#### 8.2.3 Installation testen

Nun können die Dienste von Samba gestartet werden:

root@linux # /usr/local/samba/bin/nmbd -D root@linux # /usr/local/samba/bin/smbd -D root@linux # /usr/local/samba/bin/winbindd -B

Um zu sehen, ob diese auch laufen, listet folgendes Kommando die gestarteten Services auf:

root@linux # ps aux | egrep "(mbd|winbind)"

Die Anbindung des Samba-Servers an die Windows-Domänen-Benutzerverwaltung kann getestet werden mit:

root@linux # wbinfo -u

Wenn Winbind korrekt arbeitet, sollten alle User der NT-Domänen ausgegeben werden.

#### 8.3 Squid

#### 8.3.1 Kompilierung, Installation und Konfiguration

Die Kompilierung und Installation ist im Abschnitt Squid aus Quellen kompilieren abgehandelt und mit einem passenden Beispiel erklärt worden.

Zur Nutzung von NT-Gruppen muss des Weiteren sichergestellt werden, dass ein perl ab der Version 5.8 installiert ist.

Die spezifischen Einträge in der /etc/squid.conf sind:

    # Einbindung der neuen ACL-Helper Schnittstelle, hier NT-Domänen
    external_acl_type NT_global_group children=10 ttl=900 %LOGIN /usr/local/squid/libexec/wbinfo_group.pl

    auth_param ntlm program /usr/local/samba/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
    auth_param ntlm children 80
    auth_param ntlm max_challenge_reuses 1
    auth_param ntlm max_challenge_lifetime 5 minutes
    auth_param basic program /usr/local/samba/bin/ntlm_auth --helper-protocol=squid-2.5-basic
    auth_param basic children 50
    auth_param basic realm squid proxy-caching web server
    auth_param basic credentialsttl 2 hours
    # acl <FreiDefinierbarerName> <aclTyp> <Definition>
    acl ProxyUsers external NT_global_group <NT-Gruppen-Name>
    acl AuthorizedUsers proxy_auth REQUIRED
    # Beispiel für die Rechtevergabe:
    acl selflinux dstdomain .selflinux.org
    # Vollzugriff für diese Gruppe
    http_access allow AuthorizedUsers ProxyUsers
    # Dies hätte nur Zugriff auf die Selflinux-Seiten erlaubt:
    #http_access allow AuthorizedUsers ProxyUsers selflinux

In der Squid-Dokumentation zu NTLM wird eine Anzahl von 5 Kind-Prozessen vorgeschlagen. Dies bewirkte in der vom Autor betreuten Umgebung aufpoppende Anmelde-Fenster. Deshalb scheint es empfehlenswert zu sein, reichlich Kind-Prozesse starten zu lassen. Zur Beschleunigung können zusätzlich die beiden challenge-Werte höher gesetzt werden als vorgegeben. Diese legen zusammen die Gültigkeitsdauer einer Anfrage an die Windows-Domänen-Controller fest.

Wer Hilfe zu den Funktionen der weiteren Parameter sucht, findet diese ausführlich in der /etc/squid.conf beschrieben.

Nun muss noch der Squid-Daemon folgende Berechtigung bekommen:

root@linux # chgrp -R nogroup /usr/local/samba/var/locks/winbindd_privileged/

Um einen gültigen Computeraccount in der Domain zu halten, sollte folgender Cronjob hinzugefügt werden:

    0 2 * * * /usr/local/samba/bin/net rpc changetrustpw

#### 8.3.2 Installation prüfen

Zunächst sollte die Anbindung an die NT-Domäne getestet werden. Nach der Eingabe von

root@linux # /usr/local/samba/bin/ntlm_auth --helper-protocol=squid-2.5-basic

wartet das Programm wb_auth auf die Eingabe eines gültigen NT-Accounts in Form von

<NT-Domänen-Name>\<Accout> <Password>

wie z.B.:

Domain\joern geheim

Die Ausgabe muss mit einem OK abschließen.

Nach dem Anlegen der Cache-Verzeichnisstruktur kann der Squid Debug-Modus gestartet und mögliche Fehler behoben werden, siehe dazu Squid-Daemon starten.

#### 8.3.3 Squid starten

Nun muss ein Startskript erstellt und mit dem gewünschten Runlevel verlinkt werden. Siehe hierzu Squid starten mit Startskript

#### 8.3.4 Zugriffsrechte auf Internet-Seiten setzen

Für die User-Verwaltung bleiben folgende Aufgaben:

#### 8.3.4.1 Squid-Rechte

Für jede globale Windows-NT-Gruppe muss eine ACL in der /etc/squid.conf erstellt werden. Dort wird das externe Programm, definiert über den oben angegebenen external_acl_type", eingebunden und damit eine Verknüpfung von NT-Gruppen mit Squid-ACL-Namen erreicht:

    acl <Frei_definierbarer_Name> external NT_global_group <WinNT-GruppenName>

Beispiel:

    acl verwaltung  external NT_global_group verwaltung

Eine weitere ACL ist für die Seiten zu erstellen, die von der Gruppe gesehen werden sollen:

    acl <GruppenName> dstdomain <.Dns-Domäne1> <.Dns-Domäne2>  ...

Beispiel:

    acl verwaltung_dstdom dstdomain .selflinux.org .intranet.de

Als letztes sind für die ACLs die Rechte festzusetzen:

    http_access allow AuthorizedUsers <ACL-GruppenName> <ACL-Zieldomänen-Name>

Beispiel:

    http_access allow AuthorizedUsers verwaltung verwaltung_dstdom

Weitere Informationen zur Rechtevergabe siehe unter Rechtevergabe unter Squid im Detail.

#### 8.3.4.2 NT-Domänen-Rechte

Die Surfer müssen hier nur in die globalen Gruppen aufgenommen werden, die auf dem Squid mit den entsprechenden Gruppen verknüpft sind.