Netzwerkkonfiguration · 8 min read · Nov 06, 2025
Debian Squeeze, Squid, Kerberos/LDAP-Authentifizierung, Active Directory-Integration und Cyfin Reporter - Seite 2
Konfigurieren von Squid
Um unseren redundanten LDAP-Zugriff und die Berechtigungen über Sicherheitsgruppen in Active Directory nutzen zu können, müssen wir ein Konto mit Berechtigungen zum Abrufen von Active Directory-Attributen erstellen. Squid wird dieses Konto dann verwenden, um Benutzern den Zugriff zu gewähren.
Erstellen Sie in Active Directory einen Benutzer mit dem Namen “Squid Proxy” mit dem Anmeldenamen [email protected] und notieren Sie das Passwort und ersetzen Sie das Wort “squidpass” unten durch Ihr Passwort.
Stellen Sie sicher, dass Folgendes beim Erstellen des Kontos zutrifft:
- Benutzer muss Passwort bei nächster Anmeldung ändern - Nicht angekreuzt
- Benutzer kann Passwort nicht ändern - Angekreuzt
- Passwort läuft nie ab - Angekreuzt
- Konto ist deaktiviert - Nicht angekreuzt
Standardmäßig kann das Squid-Konto das Attribut “memberOf” in AD nicht abfragen. Wählen Sie die oberste Ebene Ihrer Active Directory-Domäne in Active Directory-Benutzern und -Computern, klicken Sie mit der rechten Maustaste darauf und wählen Sie Eigenschaften, Sicherheitstab, fügen Sie den Squid-Benutzer hinzu und geben Sie ihm Leseberechtigungen (sollte standardmäßig geschehen) und erlauben Sie ihm, “Dieses Objekt und alle untergeordneten Objekte” zu lesen, indem Sie in die erweiterten Optionen gehen.
Erstellen Sie die folgenden Sicherheitsgruppen mit Beschreibungen in Active Directory und fügen Sie Benutzer zu den entsprechenden Gruppen hinzu - wenn ein Benutzer nicht Teil einer Gruppe ist, kann er nur auf Websites in der Whitelist-ACL zugreifen.
Mitglieder der Internetbenutzer können nicht auf Websites in der Blockliste-ACL zugreifen.
- Internetbenutzer | Beschreibung: Mitglieder dieser Gruppe können auf das Internet zugreifen. Der Zugriff wird mit Website-Einschränkungen protokolliert
- Internetbenutzer Vollprotokoll | Beschreibung: Mitglieder dieser Gruppe können auf das Internet zugreifen. Der Zugriff wird mit vollem Website-Zugriff protokolliert
- Internetbenutzer Voll KeinProtokoll | Beschreibung: Mitglieder dieser Gruppe können auf das Internet zugreifen. Der Zugriff wird nicht protokolliert mit vollem Website-Zugriff
Dann richten wir Squid und die zugehörigen Konfigurationsdateien ein.
Squid-Start
Fügen Sie die folgende Konfiguration zu /etc/default/squid3 hinzu (diese Datei existiert standardmäßig nicht).
vi /etc/default/squid3KRB5_KTNAME=/etc/squid3/PROXY.keytab
export KRB5_KTNAMEsquid.conf
cp /etc/squid3/squid.conf /etc/squid3/squid.conf.default
cat /dev/null > /etc/squid3/squid.conf
vi /etc/squid3/squid.conf
Aktualisieren Sie die Cache-Manager-Variable mit der E-Mail-Adresse der für den Proxy zuständigen Person.
Studieren und aktualisieren Sie den folgenden Text sorgfältig, indem Sie den Beispielinhalt (hervorgehoben) durch die Konfiguration Ihres Netzwerks ersetzen - wenn Sie etwas falsch machen, funktioniert Ihr Proxy nicht.
####### /etc/squid3/squid.conf Konfigurationsdatei #######
####### Cache-Manager
cache_mgr [email protected]
####### Kerberos-Authentifizierung
auth_param negotiate program /usr/lib/squid3/squid_kerb_auth -d -s HTTP/squidproxy.example.local
auth_param negotiate children 10
auth_param negotiate keep_alive on
####### Zugriff über LDAP für Clients bereitstellen, die nicht über Kerberos authentifiziert sind
auth_param basic program /usr/lib/squid3/squid_ldap_auth -R \
-b "dc=example,dc=local" \
-D [email protected] \
-w "squidpass" \
-f sAMAccountName=%s \
-h domaincontroller1.example.local
auth_param basic children 10
auth_param basic realm Internet Proxy
auth_param basic credentialsttl 1 Minute
####### LDAP-Berechtigungen
# Eingeschränkter Proxy-Zugriff protokolliert
external_acl_type internet_users %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
-b "dc=example,dc=local" \
-D [email protected] \
-w "squidpass" \
-f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
-h domaincontroller1.example.local
# Voller Proxy-Zugriff ohne Protokollierung
external_acl_type internet_users_full_nolog %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
-b "dc=example,dc=local" \
-D [email protected] \
-w "squidpass" \
-f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full NoLog,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
-h domaincontroller1.example.local
# Voller Proxy-Zugriff protokolliert
external_acl_type internet_users_full_log %LOGIN /usr/lib/squid3/squid_ldap_group -R -K \
-b "dc=example,dc=local" \
-D [email protected] \
-w "squidpass" \
-f "(&(objectclass=person)(sAMAccountName=%v)(memberof=cn=Internet Users Full Log,ou=Security Groups,ou=MyBusiness,dc=example,dc=local))" \
-h domaincontroller1.example.local
####### ACL für Proxy-Authentifizierung und LDAP-Berechtigungen
acl auth proxy_auth REQUIRED
# Format "acl, aclname, acltype, acltypename, aktivedirectorygruppe"
acl RestrictedAccessLog external internet_users Internet\ Users
acl FullAccessNoLog external internet_users_full_nolog Internet\ Users\ Full\ NoLog
acl FullAccessLog external internet_users_full_log Internet\ Users\ Full\ Log
acl whitelistsites url_regex -i "/etc/squid3/whitelistsites.txt"
acl blockedsites url_regex -i "/etc/squid3/blockedsites.txt"
####### Squid-Standarde
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistrierte Ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # mehrsprachiges http
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
####### Authentifizierung durchsetzen: Reihenfolge der Regeln ist wichtig für Berechtigungsstufen
no_cache deny whitelistsites
http_access allow whitelistsites
http_access allow FullAccessNoLog auth
http_access allow FullAccessLog auth
http_access deny blockedsites
http_access allow RestrictedAccessLog auth
####### Protokollierung
# Protokollieren Sie nicht whitelistsites, FullAccessNoLog
access_log /var/log/squid3/access.log squid !whitelistsites !FullAccessNoLog
####### Squid-Standarde
http_access deny all
http_port 3128
hierarchy_stoplist cgi-bin ?
coredump_dir /var/spool/squid3
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
touch /etc/squid3/whitelistsites.txt
touch /etc/squid3/blockedsites.txt
invoke-rc.d squid3 restart
Proxy-Auto-Konfiguration
Installieren Sie Apache2:
apt-get install apache2Fügen Sie eine Konfiguration zu Apache2 hinzu, um das Dateiformat des Proxy-Konfigurationsskripts zu identifizieren.
vi /etc/apache2/conf.d/wpad.datAddType application/x-ns-proxy-autoconfig .datErstellen Sie unsere wpad.dat-Datei, die von Webbrowsern zur Konfiguration verwendet wird:
vi /var/www/wpad.datÄndern Sie die Zeile, die mit $proxy beginnt, in den FQDN Ihres Proxys (hervorgehobener Text).
function FindProxyForURL(url, host)
{
$proxy = "PROXY squidproxy.example.local:3128";
// URLs innerhalb dieses Netzwerks werden direkt aufgerufen
if (isInNet(host, "192.168.0.0", "255.255.0.0")) {return "DIRECT";}
if (isInNet(host, "172.16.0.0", "255.240.0.0")) {return "DIRECT";}
if (isInNet(host, "10.0.0.0", "255.0.0.0")) {return "DIRECT";}
if (isInNet(host, "127.0.0.0", "255.0.0.0")) {return "DIRECT";}
// Rückgabe des Proxys für ALLES andere
else return $proxy;
}
Starten Sie Apache2 neu:
vinvoke-rc.d apache2 restartWPAD-DNS-Einträge
Warnung: Sobald Sie den folgenden DNS-Eintrag hinzufügen, wird der Proxy aktiv. Stoppen Sie an dieser Stelle und überprüfen Sie.
- Dass die Clientbrowser die integrierte Windows-Authentifizierung verwenden
- Dass Sie alle Benutzer zu den relevanten Sicherheitsgruppen der Internetbenutzer in AD hinzugefügt haben
- Dass alle Clientbrowser so eingestellt sind, dass sie die Proxy-Einstellungen automatisch zur Internetnutzung erkennen. Die Verwendung von Gruppenrichtlinien ist hier eine sinnvolle Option oder vielleicht den ausgehenden HTTP-Zugriff in Ihrer Firewall einzuschränken, um Benutzer ohne konfigurierte automatische Erkennung herauszufiltern.
Testen Sie den Zugriff mit Internet Explorer, indem Sie “Automatische Konfigurationsskripte verwenden” aktivieren und http://squidproxy.example.local/wpad.dat (ändern Sie den FQDN des Proxys natürlich in Ihren) in das Adressfeld einfügen und dann auf beliebige Websites zugreifen. Viel Glück, ich hoffe, es funktioniert! Stoppen Sie hier und beheben Sie Probleme, wenn es nicht funktioniert, oder Sie werden viele verärgerte Benutzer haben!
Fügen Sie einen CNAME-Eintrag in DNS hinzu, um wpad.example.local auf squidproxy.example.local zu verweisen.
Hinweis: Server 2008 verfügt über eine Sicherheitsmaßnahme, die wpad blockiert, ich habe es auch auf Server 2003 gesehen
Um die WPAD-DNS-Einschränkung zu entfernen, aber die Blockliste aktiviert zu lassen, führen Sie Regedit aus und öffnen Sie den folgenden Speicherort.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\DNS\Parameters\GlobalQueryBlockList
Server 2008 hat wahrscheinlich die Einträge von WPAD und ISATAP. Entfernen Sie den WPAD-Eintrag und starten Sie den DNS-Dienst neu, damit die Blockliste neu geladen wird. Sie sollten dann in der Lage sein, wpad.example.local aufzulösen.
Stellen Sie dann Ihren Browser so ein, dass er die Proxy-Auto-Konfiguration verwendet. Alle modernen Webbrowser folgen dem WPAD-Standard und versuchen, http://wpad.example.local/wpad.dat für ihre Konfigurationsinformationen abzurufen.
Weitere Informationen zu WPAD finden Sie hier: http://wiki.squid-cache.org/Technology/WPAD/DNS
Überprüfen Sie Ihre Squid-Protokolle, um zu sehen, dass die Browser den Proxy verwenden.
Optional: Cyphin Reporter installieren
Mit den Proxys, die wir betreiben, benötigen wir anständige Berichterstattung. Programme wie sarg, mysar usw. waren keine anständigen Berichtsoptionen zur Überwachung der Internetnutzung von Benutzern. Cyfin Reporter von Wavecrest hat sich als sehr fähiges und intuitives Berichtssystem mit vielen Funktionen erwiesen.
So richten Sie Cyfin Reporter mit Squid auf Debian Squeeze ein und installieren es.
Die neueste Version von Cyfin Reporter zum Zeitpunkt des Schreibens ist Version 8.5. Überprüfen Sie die folgenden Standorte, je nach Ihrer Architektur, bevor Sie herunterladen, und aktualisieren Sie die folgenden Befehle, wo nötig.
http://downloads.wavecrest.net/release/cyfin/linux32/
http://downloads.wavecrest.net/release/cyfin/linux64/
Ihre Installation könnte dann so aussehen…
cd /usr/local/src/
wget “http://downloads.wavecrest.net/release/cyfin/linux32/v850/c850linux32.bin.gz”
gunzip c850linux32.bin.gz
chmod +x c850linux32.bin
N.B Das Install Anywhere-Programm spielt mit PS1 herum, daher löst das Ändern dieses für die aktuelle Shell das Problem.
export PS1=”>”
./c850linux32.bin
Wenn Sie nach dem Installationspfad gefragt werden, geben Sie ihn als
* GEBEN SIE EINEN ABSOLUTEN PFAD EIN, ODER DRÜCKEN SIE , UM DEN STANDARD ZU AKZEPTIEREN
: /opt/wavecrest/cyfin*Akzeptieren Sie alles andere als Standard.
Wir müssen ein Init-Skript erstellen, um Cyfin auf die Debian-Art zu starten und zu stoppen.
vi /etc/init.d/cyfin#! /bin/sh
### BEGIN INIT INFO
# Provides: cyfin
# Required-Start: $network $remote_fs
# Required-Stop: $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: cyfin reporter initscript
### END INIT INFO
NAME=cyfin
SCRIPTNAME=/etc/init.d/$NAME
# Laden Sie die VERBOSE-Einstellung und andere rcS-Variablen
. /lib/init/vars.sh
# Definieren Sie LSB log_* Funktionen.
# Abhängig von lsb-base (>= 3.2-14), um sicherzustellen, dass diese Datei vorhanden ist
# und status_of_proc funktioniert.
. /lib/lsb/init-functions
case "$1" in
start) sh /opt/wavecrest/cyfin/cyfin start
;;
stop) sh /opt/wavecrest/cyfin/cyfin stop
;;
status) sh /opt/wavecrest/cyfin/cyfin start
;;
restart) sh /opt/wavecrest/cyfin/cyfin restart
;;
*) echo "Verwendung: $SCRIPTNAME {start|stop|status|restart}" >&2
exit 3
;;
esac
:
chmod +x /etc/init.d/cyfin
update-rc.d cyfin defaults
Die Konfiguration von Cyfin Reporter würde ein brandneues Tutorial erfordern, daher hier die Grundlagen.
Greifen Sie über http://squidproxy.example.local:7999 auf die Konfigurations-GUI zu. Der Standard-Login ist “admin” für den Benutzernamen und das Passwort.
- Verwenden Sie die Hilfe in der GUI, da die Dokumentation sehr gut ist.
- Überprüfen Sie die FAQs unter http://www.wavecrest.net/support/cyfin/reporter/faqs.html
- Verwenden Sie das Menü “Schnellstart”, um die Grundlagen einzurichten, die recht einfach sind.
- Aktivieren Sie den Datenmanager, um Protokolldateien zu importieren und einen Zeitplan für den Import von Protokolldateien einzurichten.
- Verwenden Sie die Integration in Active Directory, Sie können das für die LDAP-Authentifizierung erstellte Squid-Konto auch verwenden, um Informationen aus Active Directory abzurufen.
- Konfigurieren Sie einen Zeitplan, um Benutzerlisten aus Active Directory zu importieren.
- Sie sollten sicherstellen, dass Ihre Benutzer Teil einer Sicherheitsgruppe oder einer Verteilergruppe in Active Directory sind und diese Gruppen zu Cyfin Reporter hinzufügen.
- Weisen Sie dem Abteilungsleiter die Rolle des Empfängers von E-Mail-Berichten zu.
- Richten Sie Zugangsaccounts für Mitarbeiter mit Berechtigungen zum Anzeigen der Protokolle ein.
Wenn Sie Cyfin Reporter verwenden, müssen Sie mit zusätzlichem Speicherbedarf rechnen, stellen Sie also sicher, dass Sie genügend Ressourcen bereitstellen, um es auszuführen.
Das schließt das Tutorial ab. Ich hoffe, es hilft.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.