Squid ist ein vollwertiger Caching-Proxy, der gängige Netzwerkprotokolle wie HTTP, HTTPS, FTP und mehr unterstützt. Er kann verwendet werden, um die Leistung des Webservers durch das Zwischenspeichern wiederholter Anfragen zu verbessern, den Webverkehr zu filtern und auf geografisch eingeschränkte Inhalte zuzugreifen.
In dieser Anleitung wird erklärt, wie Sie einen Squid-Proxy unter Ubuntu 20.04 einrichten und die Webbrowser Firefox und Google Chrome für die Verwendung konfigurieren.
Squid unter Ubuntu installieren
Das Squid-Paket ist in den Standard-Repositories von Ubuntu 20.04 enthalten. Um es zu installieren, führen Sie die folgenden Befehle als sudo-Benutzer aus:
sudo apt update
sudo apt install squid
Nach Abschluss der Installation wird der Squid-Dienst automatisch gestartet. Um dies zu überprüfen, überprüfen Sie den Status des Dienstes:
sudo systemctl status squid
Die Ausgabe wird in etwa so aussehen:
● squid.service - Squid Web Proxy Server Loaded: loaded (/lib/systemd/system/squid.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-10-23 19:02:43 UTC; 14s ago Docs: man:squid(8)...
Konfiguration von Squid
Der Squid-Dienst kann durch Bearbeiten der Datei /etc/squid/squid.conf
konfiguriert werden. Die Konfigurationsdatei enthält Kommentare, die beschreiben, was jede Konfigurationsoption bewirkt. Sie können Ihre Konfigurationseinstellungen auch in separaten Dateien ablegen, die mit der Direktive „include“ in die Hauptkonfigurationsdatei eingebunden werden können.
Bevor Sie Änderungen vornehmen, wird empfohlen, die ursprüngliche Konfigurationsdatei zu sichern:
sudo cp /etc/squid/squid.conf{,.orginal}
Um mit der Konfiguration Ihrer Squid-Instanz zu beginnen, öffnen Sie die Datei in Ihrem Texteditor:
sudo nano /etc/squid/squid.conf
Standardmäßig ist squid so eingestellt, dass es auf Port 3128
an allen Netzwerkschnittstellen des Servers lauscht.
Wenn Sie den Port ändern und eine lauschende Schnittstelle festlegen möchten, suchen Sie die Zeile, die mit http_port
beginnt, und geben Sie die IP-Adresse der Schnittstelle und den neuen Port an. Wenn keine Schnittstelle angegeben wird, lauscht Squid auf allen Schnittstellen.
# Squid normally listens to port 3128http_port IP_ADDR:PORT
Squid auf allen Schnittstellen und auf dem Standardport laufen zu lassen, sollte für die meisten Benutzer in Ordnung sein.
Squid ermöglicht es Ihnen, mithilfe von Zugriffskontrolllisten (ACLs) zu steuern, wie die Clients auf die Webressourcen zugreifen können. Standardmäßig ist der Zugriff nur vom localhost erlaubt.
Wenn alle Clients, die den Proxy verwenden, eine statische IP-Adresse haben, ist die einfachste Möglichkeit, den Zugriff auf den Proxy-Server zu beschränken, eine ACL zu erstellen, die die erlaubten IPs einschließt. Andernfalls können Sie squid so einstellen, dass es eine Authentifizierung verwendet.
Anstatt die IP-Adressen in die Hauptkonfigurationsdatei aufzunehmen, erstellen Sie eine neue dedizierte Datei, die die erlaubten IPs enthält:
192.168.33.1# All other allowed IPs
Nachdem dies geschehen ist, öffnen Sie die Hauptkonfigurationsdatei und erstellen eine neue ACL mit dem Namen allowed_ips
(erste hervorgehobene Zeile) und erlauben den Zugriff auf diese ACL mit der Direktive http_access
(zweite hervorgehobene Zeile):
# ...acl allowed_ips src "/etc/squid/allowed_ips.txt"# ...#http_access allow localnethttp_access allow localhosthttp_access allow allowed_ips# And finally deny all other access to this proxyhttp_access deny all
Die Reihenfolge der http_access
Regeln ist wichtig. Stellen Sie sicher, dass Sie die Zeile vor http_access deny all
einfügen.
Die http_access
-Direktive funktioniert ähnlich wie die Firewall-Regeln. Squid liest die Regeln von oben nach unten, und wenn eine Regel zutrifft, werden die Regeln darunter nicht verarbeitet.
Wenn Sie Änderungen an der Konfigurationsdatei vornehmen, müssen Sie den Squid-Dienst neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart squid
Squid-Authentifizierung #
Wenn die Beschränkung des Zugriffs auf Basis der IP für Ihren Anwendungsfall nicht funktioniert, können Sie Squid so konfigurieren, dass es ein Back-End zur Authentifizierung von Benutzern verwendet. Squid unterstützt Samba, LDAP und HTTP basic auth.
In dieser Anleitung verwenden wir basic auth. Es ist eine einfache Authentifizierungsmethode, die in das HTTP-Protokoll eingebaut ist.
Um ein verschlüsseltes Passwort zu erzeugen, verwenden Sie das openssl
-Tool. Der folgende Befehl fügt das USERNAME:PASSWORD
-Paar an die /etc/squid/htpasswd
-Datei an:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Um beispielsweise einen Benutzer „josh“ mit dem Passwort „P@ssvv0rT
“ zu erstellen, würden Sie ausführen:
printf "josh:$(openssl passwd -crypt 'P@ssvv0rd')\n" | sudo tee -a /etc/squid/htpasswd
josh:QMxVjdyPchJl6
Der nächste Schritt besteht darin, die HTTP-Basisauthentifizierung zu aktivieren und die Datei mit den Benutzeranmeldedaten in die Squid-Konfigurationsdatei aufzunehmen.
Öffnen Sie die Hauptkonfiguration und fügen Sie Folgendes hinzu:
sudo nano /etc/squid/squid.conf
# ...auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswdauth_param basic realm proxyacl authenticated proxy_auth REQUIRED# ...#http_access allow localnethttp_access allow localhosthttp_access allow authenticated# And finally deny all other access to this proxyhttp_access deny all
Die ersten drei hervorgehobenen Zeilen erstellen eine neue ACL mit dem Namen authenticated
, und die letzte hervorgehobene Zeile erlaubt den Zugriff für authentifizierte Benutzer.
Starten Sie den Squid-Dienst neu:
sudo systemctl restart squid
Firewall konfigurieren
Um die Squid-Ports zu öffnen, aktivieren Sie das Profil UFW
‚Squid‘:
sudo ufw allow 'Squid'
Wenn Squid auf einem anderen, nicht standardmäßigen Port läuft, zum Beispiel 8888
, können Sie den Verkehr auf diesem Port mit zulassen: sudo ufw allow 8888/tcp
.
Browser für die Verwendung von Proxy konfigurieren
Nachdem Sie Squid eingerichtet haben, müssen Sie im letzten Schritt Ihren bevorzugten Browser für die Verwendung konfigurieren.
Firefox
Die folgenden Schritte sind für Windows, macOS und Linux gleich.
-
Klicken Sie in der oberen rechten Ecke auf das Hamburger-Symbol
☰
, um das Menü von Firefox zu öffnen: -
Klicken Sie auf den
⚙ Preferences
Link. -
Scrollen Sie nach unten zum Abschnitt
Network Settings
und klicken Sie auf die SchaltflächeSettings...
. -
Ein neues Fenster wird geöffnet.
- Wählen Sie das Optionsfeld
Manual proxy configuration
. - Geben Sie Ihre Squid-Server-IP-Adresse in das Feld
HTTP Host
und3128
in das FeldPort
ein. - Markieren Sie das Kontrollkästchen
Use this proxy server for all protocols
. - Klicken Sie auf die Schaltfläche
OK
, um die Einstellungen zu speichern.
- Wählen Sie das Optionsfeld
An dieser Stelle, ist Ihr Firefox konfiguriert, und Sie können über den Squid-Proxy im Internet surfen. Um dies zu überprüfen, öffnen Sie google.com
, geben Sie „what is my ip“ ein und Sie sollten die IP-Adresse Ihres Squid-Servers sehen.
Um zu den Standardeinstellungen zurückzukehren, gehen Sie zu Network Settings
, wählen Sie den Use system proxy settings
Radioknopf und speichern Sie die Einstellungen.
Es gibt auch einige Plugins, die Ihnen helfen können, die Proxy-Einstellungen von Firefox zu konfigurieren, wie z. B. FoxyProxy.
Google Chrome #
Google Chrome verwendet die Standard-Proxy-Einstellungen des Systems. Anstatt die Proxy-Einstellungen des Betriebssystems zu ändern, können Sie entweder ein Addon wie SwitchyOmega verwenden oder den Webbrowser Chrome über die Kommandozeile starten.
Um Chrome mit einem neuen Profil zu starten und sich mit dem Squid-Server zu verbinden, verwenden Sie den folgenden Befehl:
Linux :
/usr/bin/google-chrome \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
macOS :
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --user-data-dir="$HOME/proxy-profile" \ --proxy-server="http://SQUID_IP:3128"
Windows :
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" ^ --user-data-dir="%USERPROFILE%\proxy-profile" ^ --proxy-server="http://SQUID_IP:3128"
Das Profil wird automatisch erstellt, wenn es nicht existiert. Auf diese Weise können Sie mehrere Instanzen von Chrome gleichzeitig ausführen.
Um zu bestätigen, dass der Proxyserver richtig funktioniert, öffnen Sie google.com
, und geben Sie „what is my ip“ ein. Die in Ihrem Browser angezeigte IP sollte die IP-Adresse Ihres Servers sein.
Fazit
Squid ist einer der beliebtesten Proxy-Caching-Server. Er verbessert die Geschwindigkeit des Webservers und kann Ihnen helfen, den Zugriff der Benutzer auf das Internet einzuschränken.
Wir haben Ihnen gezeigt, wie Sie Squid unter Ubuntu 20.04 installieren und konfigurieren und Ihren Browser für die Verwendung einrichten.