Ein caching Proxy, wie der Squid kann zur Bandbreitenreduzierung genutzt werden, da er häufig angefragte Webseiten zwischen speichert.
Das war früher ein valides Szenario, als Bandbreite auch für Unternehmen noch teuer war. Heute spielen diese Kosten keine Rolle mehr, da ein Cache im Proxy doch eher zu Problemen (Komplexität) führt. In Zeiten von verschlüsselten Verbindungen über HTTPS für die meisten Webseiten, dann auch eher unpraktisch und wenig effizient.
Ich brauche aber immer wieder eine Möglichkeit Systeme mit einer bestimmten IP Adressen in Logfiles zu identifizieren. Das gilt besonders für mobile Geräte. Das geht mit einer Azure Linux VM, Squid und einem festen Proxy Eintrag auf dem Endgerät am einfachsten.
Was müssen wir einrichten?
- Eine Azure VM mit Ubuntu
- Den Squid Proxy mit User / Passwort
- Die Azure Ubuntu VM braucht ein paar Einträge in der Azure NSG
Zu Testzwecken habe ich eine Linux VM mit Ubuntu 22.04 Server, 1 GB RAM und 1 CPU mit Standard SSDs deployed.
Mit Putty und dem vorgegebenen Passwort verbindet man sich dann mit der neuen virtuellen Maschine.
Die Installation und Konfiguration vom Squid
Für die Installation des Squid Proxy Servers installieren wir erst die Ubuntu updates, dann den Squid incl. dem Apache2 Utilities, damit wir einen User und Passwort für den Squid erforderlich machen können.
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install squid apache2-utils
Die Installation läuft selbst auf dem kleinsten Azure Host mit Ubuntu schnell und zügig. Die animated Gif diesmal ohne Abkürzungen in Realtime.
Als nächstes wollen wir einen user mit Passwort anlegen. Dazu benutzen wir folgenden Befehl.
sudo htpasswd -c /etc/squid/squid_passwd [user-name]
Im Beispiel benutze ich den Benutzer „squid-user“ als Passwort „squid-pwd“.
Die Konfiguration im Squid kann nun relativ umfangreich werden. Folgenden Teil müsst ihr nun in der Datei „squid.conf “ einfügen. Dies aktiviert die User Authentifizierung.
# Squid config zur User Anmeldung - Anfang
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/squid_passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
# Squid config zur User Anmeldung - Ende
Ich füge diese immer unterhalb der auth_param basic credentialsttl 2 hours Zeile ein, aber das ist im Endeffekt nicht relevant, da 99% der squid.conf nur auskommentierte Beispiele sind. Wer da wirklich noch nichts mit zu tun hatte, der muss sich merken, dass Zeilen mit # nicht ausgeführt werden.
Es gibt viele weitere Konfigurationen, die Sinn machen. So kann Business Hours mitgeben, bestimmte Domänen verbietet oder den Zugriff auf bestimmte Subnetze beschränken. Nichts davon brauchen wir in unserem Fall, da wir dieses System ja nur für Testzwecke nutzen wollen.
Im Standard der Datei sind übrigens alle Netze und viele Dienste erlaubt. Die ACL im Default sieht so aus. Das könnt ihr natürlich euren Anforderungen nach anpassen. Die hohe Qualität der Dokumentation in der squid.conf sieht man auch daran, dass z.B. die RFC Standards für die „private networks“ mit RFC1918 angegeben ist.
Wir müssen nun noch den Zugriff erlauben und neben dem Regelwerk oben, wird dies noch an einer Stelle in der squid.conf konfiguriert.
Ich benutze hier die http_access allow authenticated Zeile, weil wir die Funktion vorher gebaut haben. Wenn ihr einfach alle lokalen Netze erlauben wollt, dann kommentiert die Zeile #hhtp_access allow localnet aus (entfernt die #).
Danach starten wir den squid einmal neu.
sudo systemctl restart squid.service
Nun können wir uns den Proxy unter Firefox eintragen und bekommen dann folgende schöne Anmeldemaske.
Ein Kommentar