Wie man einen Squid-Proxy-Server unter Linux einrichtet und konfiguriert

Wie man Squid unter Linux einrichtet und optimiert – Praxiserfahrung

Squid zum Laufen zu bringen ist normalerweise nicht das Schwierigste – die eigentliche Herausforderung besteht darin, alles so zu konfigurieren, dass es reibungslos funktioniert. Manchmal hat man das Gefühl, Linux bietet unzählige Möglichkeiten, die Installation zu vermasseln, oder man landet bei seltsamen Berechtigungen oder inkompatiblen Konfigurationen. Daher ist dies eine etwas chaotische, praxisnahe Anleitung, um Squid zum Laufen zu bringen – von der grundlegenden Installation bis hin zur reibungslosen Integration in Ihre Server und Firewall. Sie können erwarten, dass Sie aus einem leeren Linux-System ein System entwickeln, das HTTP/HTTPS-Traffic weiterleiten, Caching betreiben und sogar Benutzer authentifizieren kann. Zumindest ist das der Plan.

Installation des Squid-Proxy-Servers unter Linux

Wählen Sie Ihren Paketmanager und installieren Sie die Pakete aus dem Repository.

Als Erstes müssen Sie Squid installieren. Die Befehle hängen von Ihrer Distribution ab – Linux ist in zu viele Varianten unterteilt. Für die meisten Enterprise- oder RHEL-basierten Distributionen (Oracle, Rocky, CentOS, Fedora, RHEL) lauten die Befehle:

# dnf install -y squid

Debian- oder Ubuntu-Nutzer, ja, das ist es:

# apt-get install squid

Wenn Sie SUSE (z. B.SLES) verwenden, versuchen Sie Folgendes:

# zypper install squid

Sie planen eine Benutzerauthentifizierung? Dann benötigen Sie ein zusätzliches Paket. Für RHEL/CentOS/Fedora ist es:

# dnf -y install httpd-tools

Und bei Debian/Ubuntu ist es:

# sudo apt install apache2-utils

Dann geht es nur noch darum, Squid so einzurichten, dass es automatisch startet und läuft:

# systemctl enable squid # systemctl start squid # systemctl status squid

Bei manchen Konfigurationen schlägt das manchmal beim ersten Versuch fehl, oder der Dienst startet seltsamerweise erst nach einem Neustart – bei anderen funktioniert es einfach einwandfrei. Typisch Linux, nicht wahr?

Möchten Sie sehen, mit welchen Optionen Squid entwickelt wurde? Führen Sie Folgendes aus:

# squid -v

Dieser Befehl gibt eine Menge Informationen aus, darunter Version, SSL-Unterstützung und ob bestimmte Funktionen installiert wurden. Die Ausgabe mag auf den ersten Blick kompliziert wirken, aber prüfen Sie einfach, ob Ihr Server die benötigten Funktionen wie SSL- oder LDAP-Unterstützung bietet.

Konfiguration des Squid-Caching-Proxy-Servers

Sichern Sie die Standardkonfiguration, bevor Sie Änderungen vornehmen.

Die Hauptkonfiguration befindet sich in /etc/squid/squid.conf. Da Linux es einem natürlich gerne schwer macht, sollte man sie immer zuerst kopieren und das Original schützen:

$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.original $ sudo chmod a-w /etc/squid/squid.conf.original

Auf diese Weise können Sie, falls Ihre Änderungen schiefgehen, diese rückgängig machen, ohne sich die Haare raufen zu müssen.

Beginnen Sie mit der Konfiguration Ihrer Grundeinstellungen.

Bearbeiten Sie die Konfiguration (ja, mit mcedit oder nano – ganz nach Belieben):

$ sudo mcedit /etc/squid/squid.conf

Definieren Sie zunächst die Clients, die sich verbinden dürfen. Normalerweise ist das Ihr lokales Netzwerk. Fügen Sie diese Zeile einfach irgendwo im oberen Bereich ein:

acl localnet src 192.168.50.0/24

Stellen Sie sicher, dass Sie alle anderen ACL-Zeilen für das lokale Netzwerk auskommentieren oder entfernen. Scrollen Sie zu den Zugriffsregeln und suchen Sie nach Folgendem:

http_access allow localnet

Diese Zeile ermöglicht lokalen Clients den Zugriff auf den Proxy.

Port- und Cache-Größe festlegen

Ändern Sie bei Bedarf den Standardport (TCP/3128).Um beispielsweise Port 4555 zu ändern, gehen Sie wie folgt vor:

http_port 4555

Dies hilft, Konflikte zu vermeiden, wenn Sie mehrere Proxys verwenden. Beachten Sie hierbei Ihre Firewall – Sie müssen diesen Port später freigeben.

Sie möchten Caching nutzen? Fügen Sie diese Zeile hinzu oder ändern Sie sie, um die Cache-Größe und -Struktur festzulegen:

cache_dir ufs /var/spool/squid 5120 32 256

Das bedeutet 5 GB Cache, organisiert in Verzeichnissen für eine bessere Leistung. Erstellen Sie als Nächstes diese Verzeichnisstruktur:

$ sudo squid -z

Dadurch werden die Cache-Verzeichnisse initialisiert. Gelegentlich können dabei Fehler auftreten, wenn Berechtigungen oder Speicherplatz falsch konfiguriert sind. Achten Sie darauf.

Benutzerauthentifizierung einrichten (optional, aber empfohlen)

Wenn Sie Benutzernamen und Passwörter verwenden möchten, um zu steuern, wer Ihren Proxy benutzt, benötigen Sie eine Passwortdatei. Erstellen Sie diese zunächst:

$ sudo touch /etc/squid/passwd $ sudo chown squid /etc/squid/passwd

Fügen Sie anschließend Benutzer hinzu mit:

$ sudo htpasswd -c /etc/squid/passwd username1

Beim nächsten Mal lassen Sie einfach die Option -c weg, um weitere Benutzer hinzuzufügen.

Nun teilen Sie Squid mit, wo die Zugangsdaten gespeichert sind, indem Sie Folgendes zu /etc/squid/squid.conf hinzufügen – normalerweise am Anfang oder in der Nähe des Anfangs:

# Enable basic auth auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd # Limit concurrent auth sessions auth_param basic children 5 # Realm shown on login prompts auth_param basic realm Squid Basic Authentication # Session time (here, 8 hours) auth_param basic credentialsttl 8 hours # Make auth case-insensitive auth_param basic casesensitive off acl auth_users proxy_auth REQUIRED http_access allow auth_users 

Der Pfad zu basic_ncsa_auth variiert – unter Fedora oder RHEL lautet er oft /usr/lib64/squid/basic_ncsa_auth, unter Debian/Ubuntu üblicherweise /usr/lib/squid/basic_ncsa_auth.Überprüfen Sie dies, falls Probleme auftreten.

Sperren von Websites und Kontrolle des Zugriffs

Möchten Sie Facebook oder Twitter blockieren? Erstellen Sie einfach eine Textdatei, z. B./etc/squid/blocked_sites, und listen Sie die gesperrten Seiten Zeile für Zeile auf:

facebook.com twitter.com instagram.com

Fügen Sie dies anschließend Ihrer Konfiguration hinzu:

acl blocked_sites dstdomain "/etc/squid/blocked_sites" http_access deny blocked_sites

Vergessen Sie nicht, vor einem Neustart oder einer Neukonfiguration eine Syntaxprüfung durchzuführen:

$ sudo squid -k parse

Wenn alles in Ordnung ist, laden Sie die Konfiguration neu, ohne den Dienst zu stoppen:

$ sudo squid -k reconfigure

Stellen Sie sicher, dass Ihre Firewall den Proxy-Port (in unserem Fall 4555) zulässt. Für firewalld lautet der Port:

# firewall-cmd --zone=public --add-port=4555/tcp --permanent # firewall-cmd --reload

Wenn sich Ihr Server hinter einem Cloud-Anbieter wie AWS befindet, denken Sie daran, denselben Port in Ihren Sicherheitsgruppenregeln zu öffnen.

Testen und Debuggen

Prüfen Sie, ob Squid ordnungsgemäß zuhört:

$ netstat -tulnp

Testen Sie mit curl, indem Sie Ihren Proxy angeben – ersetzen Sie dabei IP-Adresse und Port:

$ curl -x http://:4555 -L http://google.com

Wenn Sie zur Authentifizierung aufgefordert werden und diese nicht angeben oder die Meldung „Verbindung abgelehnt“ erscheint, überprüfen Sie Ihre Firewall, die Zugriffskontrolllisten (ACLs) und ob Squid ordnungsgemäß ausgeführt wird. Um Protokolle in Echtzeit anzuzeigen, führen Sie folgenden Befehl aus:

$ sudo tail -f /var/log/squid/access.log

Wenn Sie Zeilen mit TCP_DENIED/403 oder Verbindungsfehlern sehen, liegt das wahrscheinlich an Fehlkonfigurationen der Zugriffskontrolllisten oder an Firewall-Problemen.

Sobald alles eingerichtet ist, konfigurieren Sie Ihren Browser oder Ihr System so, dass es auf die IP-Adresse Ihres Linux-Rechners und den gewählten Port verweist. Diese Einstellungen finden Sie üblicherweise unter Netzwerk- oder Proxy-Einstellungen. Wenn Sie eine verwaltete Umgebung einsetzen, denken Sie daran, diese Proxy-Konfigurationen bei Bedarf bereitzustellen.

Zusammenfassung

Dieser ganze Prozess kann sich manchmal wie das Hüten von Katzen anfühlen, besonders wenn Berechtigungen oder Firewall-Regeln unerwartete Fehler verursachen. Sobald Squid aber eingerichtet und konfiguriert ist, reagiert es erstaunlich schnell und kann sogar Caching nutzen, um die Geschwindigkeit zu erhöhen oder unerwünschte Websites herauszufiltern. Manchmal hilft ein Neustart des Servers, Probleme zu beheben oder seltsame Fehler zu lösen. Behalten Sie einfach die Protokolle im Auge und scheuen Sie sich nicht, die ACLs oder die Cache-Größe anzupassen, falls das Caching nicht richtig funktioniert.

Zusammenfassung

  • Installieren Sie Squid mit Ihrem Paketmanager.
  • Sichern und bearbeiten Sie die Squid-Konfiguration
  • Legen Sie die zulässigen IP-Bereiche, Ports und Cache-Größen fest.
  • Optional kann die Benutzerauthentifizierung aktiviert werden.
  • Konfigurieren Sie bei Bedarf die Website-Blockierung.
  • Den Proxy-Port in den Firewall-Regeln zulassen
  • Gründlich mit curl und Logs testen.

Ich drücke die Daumen, dass es hilft.

Squid kann etwas knifflig sein, aber wenn es einmal läuft, ist es eine zuverlässige Proxy-Lösung. Rechnen Sie einfach mit etwas Ausprobieren, insbesondere bei Berechtigungen und Firewalls. Viel Glück und hoffentlich bringt Sie diese Konfiguration einem reibungslos funktionierenden Proxy näher. Wenn Sie damit auch nur eine Konfiguration oder ein Sicherheitsupdate zum Laufen bringen, ist das schon ein Erfolg.