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 dnsutilsFü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.confsearch example.local
nameserver 192.168.0.1
nameserver 192.168.0.10Pingen 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.26Warnung: 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.confSuchen 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.localStarten Sie dann NTP neu und testen Sie es.
invoke-rc.d ntp restart
tpq -pSie 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 libkrb53Akzeptieren 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.confBearbeiten 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.LOCALSquid 3 installieren
apt-get install squid3 ldap-utilsHinweis: 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
cdInitiieren 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 administratorGeben 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:
klistJetzt 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 --verboseWenn 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 28Setzen Sie die Berechtigungen auf dem Keytab, damit Squid ihn lesen kann.
chgrp proxy /etc/squid3/PROXY.keytab
chmod g+r /etc/squid3/PROXY.keytabSetzen 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 --verboseWenn 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 -eSHELL=/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 msktutilErhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.