Netzwerk · 5 min read · Sep 23, 2025

Debian Squeeze, Squid, Kerberos/LDAP-Authentifizierung, Active Directory-Integration und Cyfin Reporter

Debian Squeeze, Squid, Kerberos/LDAP-Authentifizierung, Active Directory-Integration und Cyfin Reporter

Einführung

Dieses Dokument behandelt die Einrichtung eines Squid-Proxys, der nahtlos mit Active Directory für die Authentifizierung unter Verwendung von Kerberos integriert wird, wobei LDAP als Backup für Benutzer dient, die nicht über Kerberos authentifiziert sind. Die Autorisierung wird durch Gruppen in Active Directory verwaltet. Dies ist besonders nützlich für Windows 7-Clients, die NTLMv2 nicht mehr unterstützen, ohne die lokale Computerpolitik zu ändern. Es ist in der Lage, weiße und schwarze Listen für den Zugriff auf Websites und Einschränkungen zu verwenden.

Für diesen Leitfaden werden die folgenden Beispiele verwendet - Sie sollten alle Abschnitte mit der Domäne, den Hostnamen und den IPs der Clients nach Bedarf aktualisieren.

  • Domain = example.local
  • Subnetz = 192.168.0.0/24
  • Proxy-Server: IP = 192.168.0.26, HOSTNAME = squidproxy.example.local
  • Windows Server 1: IP = 192.168.0.1, HOSTNAME = domaincontroller1.example.local
  • Windows Server 2: IP = 192.168.0.10, HOSTNAME = server2.example.local

Eine Basisinstallation von Debian Squeeze wird vorausgesetzt sowie grundlegende Kenntnisse in der Debian-Administration. vi wird als Texteditor vorausgesetzt.

Voraussetzungen

Die Internet Explorer-Browser der Clients müssen in den Internetoptionen :: Erweiterte Einstellungen “Integrierte Windows-Authentifizierung aktivieren” aktiviert haben, sowie die automatische Proxy-Erkennung aktiviert sein - googeln Sie dies, wenn Sie sich nicht sicher sind. Alle modernen Webbrowser unterstützen die automatische Proxy-Erkennung. Firefox und Chrome unterstützen ebenfalls die Windows-Authentifizierung.

DNS-Konfiguration

Installieren Sie dnsutils:

apt-get install dnsutils

Fügen Sie auf dem Windows-DNS-Server einen neuen A-Record-Eintrag für den Hostnamen des Proxy-Servers hinzu und stellen Sie sicher, dass ein entsprechender PTR (Reverse-DNS)-Eintrag ebenfalls erstellt wird und funktioniert. Überprüfen Sie, ob der Proxy den Windows-DNS-Server zur Namensauflösung verwendet, und aktualisieren Sie /etc/resolv.conf entsprechend.

vi /etc/resolv.conf
search example.local
nameserver 192.168.0.1
nameserver 192.168.0.10

Pingen Sie einen internen und externen Hostnamen, um sicherzustellen, dass DNS funktioniert.

ping domaincontroller1.example.local -c 4 && ping google.com -c 4

Überprüfen Sie, ob Sie den Windows-Server und die lokale Proxy-IP vom Windows-DNS aus zurückverfolgen können.

dig -x 192.168.0.1  
dig -x 192.168.0.26

Warnung: Wenn eine der DNS-Abfragen fehlschlägt, fahren Sie nicht fort, bis das Problem behoben ist, da die Proxy-Authentifizierung fehlschlagen wird.

NTP-Konfiguration

Installieren Sie das NTP-Paket:

apt-get install ntp

Da Kerberos die Zeit mit den Windows-Domänencontrollern synchronisieren muss, konfigurieren wir den Proxy so, dass er die Zeit von diesen bezieht.

vi /etc/ntp.conf

Suchen Sie den folgenden Abschnitt und aktualisieren Sie die NTP-Server nach Bedarf. Wenn Sie mehr als einen Domänencontroller oder NTP-Server haben, können Sie mehrere Zeilen hinzufügen.

# Sie müssen mit einem oder zwei (oder drei) NTP-Servern sprechen.
#server ntp.your-provider.example
server domaincontroller1.example.local
server server2.example.local

Starten Sie dann NTP neu und testen Sie es.

invoke-rc.d ntp restart  
tpq -p

Sie sollten eine Ausgabe sehen, die sich auf die Domänencontroller und andere NTP-Server bezieht, die in der Reihenfolge verarbeitet werden, in der sie in der Konfigurationsdatei erscheinen.

Kerberos konfigurieren

Installieren Sie die Kerberos-Pakete:

apt-get install krb5-user libkrb53

Akzeptieren Sie einfach die Standardwerte, die in den angezeigten debconf-Dialogen präsentiert werden, da wir sie überschreiben.

Richten Sie Kerberos ein.

cp /etc/krb5.conf /etc/krb5.conf.default  
cat /dev/null > /etc/krb5.conf  
vi /etc/krb5.conf

Bearbeiten Sie die Datei und ersetzen Sie die Variablen (hervorgehoben) durch die Domäne und den Server des Clients.

Warnung: Je nach Betriebssystemversion Ihrer Windows-Domänencontroller kommentieren Sie den entsprechenden Abschnitt für Windows 200X aus und kommentieren Sie den gegenteiligen Abschnitt aus.

Wenn Sie nur einen Domänencontroller haben, entfernen Sie den zusätzlichen “kdc”-Eintrag aus dem Abschnitt “[realms]”.

[libdefaults]
        default_realm = EXAMPLE.LOCAL
        dns_lookup_kdc = no
        dns_lookup_realm = no
        ticket_lifetime = 24h
        default_keytab_name = /etc/squid3/PROXY.keytab
; für Windows 2003
        default_tgs_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        default_tkt_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
        permitted_enctypes = rc4-hmac des-cbc-crc des-cbc-md5
; für Windows 2008 mit AES
;        default_tgs_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        default_tkt_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
;        permitted_enctypes = aes256-cts-hmac-sha1-96 rc4-hmac des-cbc-crc des-cbc-md5
[realms]
        EXAMPLE.LOCAL = {
                kdc = domaincontroller1.example.local
                kdc = server2.example.local
                admin_server = domaincontroller1.example.local
                default_domain = example.local
        }
[domain_realm]
        .example.local = EXAMPLE.LOCAL
        example.local = EXAMPLE.LOCAL

Squid 3 installieren

apt-get install squid3 ldap-utils

Hinweis: Die Squid-Konfiguration erfolgt, nachdem msktutil konfiguriert wurde.

Installieren und ausführen von msktutil

Holen Sie sich das msktutil-Paket und installieren Sie es.

cd /var/cache/apt/archives/  
wget http://fuhm.net/software/msktutil/releases/msktutil_0.4-2_i386.deb  
apt-get install libsasl2-modules-gssapi-mit libsasl2-modules  
dpkg -i msktutil_0.4-2_i386.deb  
cd

Initiieren Sie eine Kerberos-Sitzung zum Server, damit msktutil sie verwenden kann, um unser Proxy-Objekt in Active Directory zu erstellen, das für den Zugriff verwendet wird.

kinit administrator

Geben Sie das Passwort des Domänenadministrators ein.

Es sollte dann ohne Fehler zurückgegeben werden. Sie können sehen, ob Sie erfolgreich ein Ticket erhalten haben mit:

klist

Jetzt konfigurieren wir den Proxy in AD mit Dienstprinzipalen, indem wir msktutil ausführen (aktualisieren Sie die hervorgehobenen Werte mit Ihrem Netzwerk).

Warnung: Sie sollten das Objekt nicht aus der OU verschieben, in der Sie msktutil verwendet haben, um es zu erstellen.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose

Wenn Sie eine Server 2008-Domäne verwenden, fügen Sie am Ende des Befehls “–enctypes 28” hinzu.

msktutil -c -b "CN=COMPUTERS" -s HTTP -k /etc/squid3/PROXY.keytab --computer-name SQUIDPROXY \  
--upn HTTP/squidproxy.example.local --server domaincontroller1.example.local --verbose --enctypes 28

Setzen Sie die Berechtigungen auf dem Keytab, damit Squid ihn lesen kann.

chgrp proxy /etc/squid3/PROXY.keytab  
chmod g+r /etc/squid3/PROXY.keytab

Setzen Sie auf dem Windows-Server das Computer-Konto in AD zurück, indem Sie mit der rechten Maustaste auf den Computer SQUIDPROXY klicken und “Konto zurücksetzen” auswählen, und führen Sie dann msktutil wie folgt aus, um sicherzustellen, dass der Keytab wie erwartet aktualisiert wird und dass der Keytab von msktutil korrekt aus /etc/krb5.conf bezogen wird.

Starten Sie zuerst den Proxy neu, um die Kerberos-Tickets zu löschen, die durch den kinit-Befehl generiert wurden, und führen Sie dann Folgendes aus:

msktutil --auto-update --verbose

Wenn der Keytab nicht gefunden wird, versuchen Sie, “-k /etc/squid3/PROXY.keytab” zu dem Befehl hinzuzufügen, um zu sehen, ob es funktioniert, und beheben Sie das Problem, bis es gelöst ist, oder Benutzer können sich nicht mit Squid authentifizieren.

Fügen Sie Folgendes zu cron hinzu, damit es das Computer-Konto in Active Directory automatisch aktualisieren kann, wenn es abläuft (typischerweise nach etwa 30 Tagen). Ich leite es durch den Logger, damit ich bei Bedarf Fehler im Syslog sehen kann. Wie bereits erwähnt, verwendet msktutil die Standarddatei /etc/krb5.conf für seine Parameter, also seien Sie sich dessen bewusst, wenn Sie Änderungen daran vornehmen möchten.

Die SHELL- und PATH-Variablen sind da, um sicherzustellen, dass cron ordnungsgemäß ausgeführt wird; ändern Sie dies, wenn Sie wissen, was Sie tun.

crontab -e
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
# m h  dom mon dow   command
00 4  *   *   *     msktutil --auto-update --verbose | logger -t msktutil
Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.