Squid ist ein voll funktionsfähiger Caching-Proxy, der gängige Netzwerkprotokolle wie HTTP, HTTPS, FTP und mehr unterstützt. Squid wird hauptsächlich verwendet, um die Leistung des Webservers zu verbessern, indem wiederholte Anfragen zwischengespeichert, der Webverkehr gefiltert und auf geobeschränkte Inhalte zugegriffen wird.
Dieses Tutorial führt Sie durch den Prozess der Einrichtung eines Squid-Proxys unter Ubuntu 18.04 und der Konfiguration von Firefox- und Google Chrome-Webbrowsern für dessen Verwendung.
Installieren von Squid auf Ubuntu #
Das Squid-Paket ist in den standardmäßigen Ubuntu 18.04-Repositories enthalten. Um es zu installieren, geben Sie als sudo-Benutzer die folgenden Befehle ein:
sudo apt update
sudo apt install squid
Sobald die Installation abgeschlossen ist, wird der Squid-Dienst automatisch gestartet.
Um zu überprüfen, ob die Installation erfolgreich war und der Squid-Dienst ausgeführt wird, geben Sie den folgenden Befehl ein, der den Dienststatus ausgibt:
sudo systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x
Loaded: loaded (/etc/init.d/squid; generated)
Active: active (running) since Thu 2019-06-27 11:45:17 UTC
...
Konfiguriere Squid #
Squid kann durch Bearbeiten von /etc/squid/squid.conf
konfiguriert werden Datei. Sie können auch separate Dateien mit Konfigurationsoptionen verwenden, die mit der Direktive „include“ eingebunden werden können.
Die Konfigurationsdatei enthält Kommentare, die beschreiben, was jede Konfigurationsoption bewirkt.
Bevor Sie Änderungen vornehmen, sollten Sie die ursprüngliche Konfigurationsdatei sichern:
sudo cp /etc/squid/squid.conf{,.orginal}
Um die Datei zu bearbeiten, öffnen Sie sie in Ihrem Texteditor:
sudo nano /etc/squid/squid.conf
Standardmäßig ist Squid so konfiguriert, dass es auf Port 3128
lauscht auf allen Netzwerkschnittstellen auf dem Server.
Wenn Sie den Port ändern und eine lauschende Schnittstelle einrichten 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 ist, lauscht Squid auf allen Schnittstellen.
# Squid normally listens to port 3128
http_port IP_ADDR:PORT
Das Ausführen von Squid auf allen Schnittstellen und auf dem Standardport sollte für die meisten Benutzer in Ordnung sein.
In Squid können Sie mithilfe der Zugriffssteuerungslisten (ACLs) steuern, wie die Clients auf die Webressourcen zugreifen können.
Standardmäßig erlaubt Squid nur den Zugriff vom localhost.
Wenn alle Clients, die den Proxy verwenden, eine statische IP-Adresse haben, können Sie eine ACL erstellen, die die zulässigen IPs enthält.
Anstatt die IP-Adressen in der Hauptkonfigurationsdatei hinzuzufügen, erstellen wir eine neue dedizierte Datei, die die IPs enthält:
/etc/squid/allowed_ips.txt192.168.33.1
# All other allowed IPs
Sobald Sie fertig sind, öffnen Sie die Hauptkonfigurationsdatei und erstellen Sie eine neue ACL mit dem Namen allowed_ips
(erste hervorgehobene Zeile) und erlauben Sie den Zugriff auf diese ACL mit http_access
Direktive (zweite hervorgehobene Zeile):
# ...
acl allowed_ips src "/etc/squid/allowed_ips.txt"
# ...
#http_access allow localnet
http_access allow localhost
http_access allow allowed_ips
# And finally deny all other access to this proxy
http_access deny all
Die Reihenfolge des http_access
Regeln ist wichtig. Stellen Sie sicher, dass Sie die Zeile vor http_access deny all
hinzufügen .
Der http_access
Die Direktive funktioniert ähnlich wie die Firewall-Regeln. Squid liest die Regeln von oben nach unten, und wenn eine Regel mit den unten stehenden Regeln übereinstimmt, werden sie nicht verarbeitet.
Wann immer Sie Änderungen an der Konfigurationsdatei vornehmen, müssen Sie den Squid-Dienst neu starten, damit die Änderungen wirksam werden:
sudo systemctl restart squid
Squid-Authentifizierungsnummer
Squid kann verschiedene Backends verwenden, einschließlich Samba, LDAP und HTTP Basic Authentisierung für authentifizierte Benutzer.
In diesem Tutorial konfigurieren wir Squid für die Verwendung der grundlegenden Authentifizierung. Es ist eine einfache Authentifizierungsmethode, die in das HTTP-Protokoll integriert ist.
Wir verwenden den openssl
um die Passwörter zu generieren und den username:password
anzuhängen mit /etc/squid/htpasswd
paaren Datei mit dem tee
Befehl wie unten gezeigt:
printf "USERNAME:$(openssl passwd -crypt PASSWORD)\n" | sudo tee -a /etc/squid/htpasswd
Erstellen wir einen Benutzer namens „josh“ mit dem Passwort „Sz$Zdg69
":
printf "josh:$(openssl passwd -crypt 'Sz$Zdg69')\n" | sudo tee -a /etc/squid/htpasswd
josh:RrvgO7NxY86VM
Nachdem der Benutzer erstellt wurde, besteht der nächste Schritt darin, die HTTP-Basisauthentifizierung zu aktivieren und den htpasswd
einzuschließen Datei.
Öffnen Sie die Hauptkonfiguration und fügen Sie Folgendes hinzu:
/etc/squid/squid.conf# ...
auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid/htpasswd
auth_param basic realm proxy
acl authenticated proxy_auth REQUIRED
# ...
#http_access allow localnet
http_access allow localhost
http_access allow authenticated
# And finally deny all other access to this proxy
http_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
Konfiguriere Firewall #
Angenommen, Sie verwenden UFW
Um Ihre Firewall zu verwalten, müssen Sie den Squid-Port öffnen. Aktivieren Sie dazu das „Squid“-Profil, das Regeln für die Standard-Squid-Ports enthält.
sudo ufw allow 'Squid'
Geben Sie Folgendes ein, um den Status zu überprüfen:
sudo ufw status
Die Ausgabe sieht in etwa so aus:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
Squid ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Squid (v6) ALLOW Anywhere (v6)
Wenn Squid auf einem anderen, nicht standardmäßigen Port ausgeführt wird, z. B. 8888
Sie können Verkehr auf diesem Port zulassen mit:sudo ufw allow 8888/tcp
. Konfigurieren Ihres Browsers zur Verwendung von Proxy #
Nachdem Sie Squid eingerichtet haben, besteht der letzte Schritt darin, Ihren bevorzugten Browser für die Verwendung zu konfigurieren.
Firefox-Nummer
Die folgenden Schritte sind für Windows, macOS und Linux gleich.
-
Klicken Sie oben rechts auf das Hamburger-Symbol
☰
So öffnen Sie das Menü von Firefox: -
Klicken Sie auf
⚙ Preferences
verlinken. -
Scrollen Sie nach unten zu den
Network Settings
Abschnitt und klicken Sie aufSettings...
Schaltfläche. -
Ein neues Fenster wird geöffnet.
- Wählen Sie die
Manual proxy configuration
Optionsfeld. - Geben Sie die IP-Adresse Ihres Squid-Servers in den
HTTP Host
ein Feld und3128
imPort
Feld. - Wählen Sie
Use this proxy server for all protocols
aus Kontrollkästchen. - Klicken Sie auf
OK
Schaltfläche, um die Einstellungen zu speichern.
- Wählen Sie die
An diesem Punkt ist Ihr Firefox konfiguriert und Sie können über den Squid-Proxy im Internet surfen. Öffnen Sie zur Bestätigung 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 Use system proxy settings
Optionsfeld und speichern Sie die Einstellungen.
Es gibt mehrere Plug-ins, die Ihnen auch dabei helfen können, die Proxy-Einstellungen von Firefox zu konfigurieren, z. B. FoxyProxy.
Google Chrome #
Google Chrome verwendet die standardmäßigen System-Proxy-Einstellungen. Anstatt die Proxy-Einstellungen Ihres Betriebssystems zu ändern, können Sie entweder ein Add-on wie SwitchyOmega verwenden oder den Chrome-Webbrowser über die Befehlszeile starten.
Verwenden Sie den folgenden Befehl, um Chrome mit einem neuen Profil zu starten und eine Verbindung zum Squid-Server herzustellen:
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, falls es noch nicht existiert. Auf diese Weise können Sie mehrere Instanzen von Chrome gleichzeitig ausführen.
Öffnen Sie google.com
, um zu bestätigen, dass der Proxyserver ordnungsgemäß funktioniert , und geben Sie "was ist meine ip" ein. Die in Ihrem Browser angezeigte IP sollte die IP-Adresse Ihres Servers sein.