Squid
Der Squid Outbound Proxy wird meist zur Weiterleitung von Client-Anfragen an andere Server über das Internet oder interne Netzwerke verwendet. Ein ausgehender Proxy agiert als Vermittler zwischen dem Benutzer (oder dem internen Netzwerk) und dem Internet, wobei der Proxy Anfragen an das Internet sendet, Antworten empfängt und diese dann an den anfragenden Benutzer oder das anfragende Gerät weiterleitet.
Squid bietet zahlreiche Funktionen, wie z. B. das Zwischenspeichern häufig angeforderter Ressourcen, um die Ladegeschwindigkeit zu erhöhen und die Bandbreitennutzung zu verringern, die Zugangskontrolle zur Verwaltung der Netzwerkzugangsrechte sowie die Möglichkeit, den Internetzugang und den Datenverkehr zu überwachen und zu protokollieren. Squid kann auch den Datenschutz und die Sicherheit verbessern, indem es die IP-Adresse des anfragenden Benutzers verbirgt.
Squid wird häufig in Unternehmen und Bildungseinrichtungen zur Verwaltung und Optimierung des Internetzugangs und zur Durchsetzung von Internetnutzungsrichtlinien eingesetzt.
Installation und Konfiguration
Squid installieren und als Outbound HTTP(S)-Proxy verwenden:
dnf -y install squid
systemctl enable --now squid
http_port 3128
Damit kann Squid HTTP- und HTTPS-Verkehr weiterleiten, falls die Clients so konfiguriert sind, dass beide Protokolle per HTTP an Squid durchgereicht werden.
ACLs - Freigabe für alle:
acl all src all
http_access allow all
Tipp
Eigene ACLs nach dem Kommentar INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS
einfügen.
Konfiguration aktivieren:
systemctl reload squid
Authentication
dnf -y install httpd-tools
# first user
htpasswd -c /etc/squid/passwd user1
# all other users
htpasswd /etc/squid/passwd user2
# uses an NCSA-style username and password file
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
# number of authenticator processes to spawn
auth_param basic children 5
# message to the users when they are prompted to authenticate
auth_param basic realm "Squid proxy-caching web server"
# time credentials are cached
auth_param basic credentialsttl 2 hours
# define an access control list named "authenticated" that mandates proxy authentication
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
Konfiguration aktivieren:
systemctl reload squid
Wird ein Zugriff über den Proxy ohne Authentifizierung versucht, erhält man ein HTTP/1.1 407 Proxy Authentication Required
.
HTTPS
Damit Squid auch per HTTPS lauscht, muss SSL-Bump aktiviert werden, was einige zusätzliche Konfigurationsschritte und die Erstellung von Zertifikaten erfordert. Ein einfaches Beispiel für die Aktivierung ohne spezifische SSL-Bump-Konfiguration:
https_port 3129 intercept
ssl-bump generate-host-certificates=on dynamic_cert_mem_cache_size=4MB
cert=/etc/pki/tls/certs/example.pem key=/etc/pki/tls/private/example.key
Clients
Damit Clients den Outbound Proxy verwenden, müssen auf diesen passende Umgebungsvariablen gesetzt werden - nur für den aktuellen Benutzer in ~/.bashrc
, oder systemweit beispielsweise in /etc/profile.d/proxy.sh
. Für System-Accounts ohne Login-Shell kann die /etc/environment
(mit Angaben der Form key=value
) genutzt werden.
Das Beispiel zeigt die Verwendung eines Outbound Proxy mit Authentifizierung:
export http_proxy="http://username:password@proxy.example.com:port"
export https_proxy="http://username:password@proxy.example.com:port"
source /etc/profile/proxy.sh
Test des Outbound-Proxy:
curl https://www.linuxfabrik.ch
Troubleshooting
tail -f /var/log/squid/*log
Built on 2024-09-30