1482894

Squid (auch) als SSL-Proxy nutzen - so geht's

27.11.2018 | 15:03 Uhr |

Mit einem Proxyserver beschleunigen Sie die Internetverbindung und sparen Bandbreite. Nach einigen Vorbereitungen funktioniert das auch bei SSL-Verbindungen.

Ein Proxyserver ist ein Zwischenspeicher („Cache“) für Webinhalte. Wenn Sie Webseiten abrufen, speichert er Texte und Bilder. Auf einem anderen PC, auf dem Sie die gleichen Webseiten öffnen, kommen die Inhalte dann bevorzugt vom Proxy. Umso mehr PCs sich in Ihrem Netzwerk befinden, desto wirksamer ist der Zwischenspeicher. Webseiten öffnen sich schneller und über die Internetverbindung müssen weniger Daten heruntergeladen werden. Proxyserver eignen sich daher vor allem für Netzwerke mit mehreren Computern, bei langsamer Internetanbindung oder Abrechnung über einen Volumentarif. Standardmäßig funktionieren Proxyserver jedoch nur bei unverschlüsselten Webseiten. Steht vor der Internetadresse ein „https://“, was inzwischen bei den meisten Websites der Fall ist, erfährt der Proxyserver nichts vom Inhalt und der Datenaustausch erfolgt wieder direkt zwischen Webserver und Browser. Dieser Mangel lässt sich jedoch durch eine geeignete Konfiguration beheben.

Ein Zwischenspeicher für Webseiten ist nützlich, noch mehr Daten fallen jedoch bei den regelmäßigen Updates von Betriebssystemen und Software an. Der Schwerpunkt dieses Artikels behandelt daher die Einrichtung eines Proxyservers als Cache für Update- beziehungsweise Dateidownloads über HTTPS und HTTP. Alle Befehlszeilen zu diesem Artikel finden Sie in der Datei „Befehlszeilen.txt“, die Sie zusammen mit den Dateien für den Updatecache (siehe Punkt 5) herunterladen können. Enthalten ist außerdem die Datei „Proxy-Cache.pdf“ mit weiteren Tipps und Anleitungen.

Siehe auch: So surfen Sie absolut anonym im Internet

1. Cache für HTTPS-Inhalte

Bei HTTPS bauen Webserver und Browser eine SSL-verschlüsselte Verbindung miteinander auf (Ende-zu-Ende-Verschlüsselung). Beim Aufruf einer Webseite übermittelt der Webserver ein Zertifikat, das der Browser mit auf dem PC gespeicherten Zertifikaten von vertrauenswürdigen Zertifizierungsstellen prüft. Ist die Zertifizierungskette korrekt, das Zertifikat gültig und auf die Domain der aufgerufenen Website ausgestellt, dann stuft der Webbrowser die Verbindung als sicher ein. Sie sehen dann in Firefox ein grünes Schloss in der Adressleiste vor der URL. Per Klick darauf können Sie sich weitere Details über die Verbindung und zum Zertifikat anzeigen lassen.

Ein Proxyserver leitet in der Standardkonfiguration HTTPS-Verbindungen einfach an den Webserver weiter. Er sieht zwar, welche URLs ein Benutzer aufruft, den Inhalt der Seiten kann er jedoch aufgrund der Verschlüsselung nicht speichern. Um das zu ermöglichen, muss der Proxy die Seiten entschlüsseln. Dafür gibt er sich als der eigentliche Absender der Anfrage aus. Die Ende-zu-Ende-Verschlüsselung erfolgt dann zwischen Proxyserver und Webserver. Die Kommunikation zwischen Webbrowser und Proxyserver lässt sich durch ein selbst signiertes Zertifikat absichern.

Für den Updatecache (siehe Punkte 4 und 5) ist HTTPS nicht zwingend erforderlich. Die meisten Updates werden nach wie vor über eine unverschlüsselte Verbindung ausgeliefert. Wenn gewünscht, lässt sich der Updatecache über Filterregeln aber auch für HTTPS aktivieren (siehe Kasten „Update Accelerator“).

2. Proxyserver Squid für HTTPS vorbereiten

Buildoptionen anpassen: Ergänzen Sie in der Datei „rules“ die markierten Optionen.
Vergrößern Buildoptionen anpassen: Ergänzen Sie in der Datei „rules“ die markierten Optionen.

Ein verbreiteter Proxyserver für Linux-Systeme hört auf den Namen Squid und ist in den Paketquellen aller verbreiteten Linux-Distributionen enthalten, allerdings in der Regel ohne SSL-Unterstützung. Um diese nachzurüsten, müssen Sie Squid selbst aus dem Quellcode kompilieren. Wir beschreiben die erforderlichen Schritte für Ubuntu 18.04. Bei anderen Systemen ist der Ablauf ähnlich. Abweichungen gibt es bei Paketnamen und Versionsnummern.

Schritt 1: Öffnen Sie ein Terminalfenster und bearbeiten Sie die Paketquellen:

sudo nano /etc/apt/sources.list  

Entfernen Sie das Kommentarzeichen (#) vor allen Zeilen, die mit  „deb-src“ beginnen. Lesen Sie die Paketquellen mit sudo apt update neu ein. Mit diesen zwei Zeilen

sudo apt install devscripts buildessential fakeroot libssl1.0-dev debhelper
sudo apt-get build-dep squid3  

installieren Sie die Pakete, die zum Kompilieren von Squid nötig sind. Bei älteren Systemen, beispielsweise Ubuntu 16.04, ersetzen Sie „libssl1.0-dev“ durch „libssl-dev“.

Schritt 2: Erstellen Sie im Home-Verzeichnis ein Arbeitsverzeichnis und laden Sie den Squid-Sourcecode herunter:

mkdir ~/src cd ~/src apt-get source squid3 

Schritt 3: Bearbeiten Sie die Konfigurationsdatei, über die Squid erstellt wird:

nano ~/src/squid3-3.5.27/debian/rules 

Passen Sie den Ordnernamen „squid3-3.5.27“ an, wenn Ubuntu eine andere Version anbietet.

Suchen Sie im Editor nach der Zeile, die mit „DEB_CONFIGURE_EXTRA_FLAGS“ beginnt. Unterhalb von „--mandir=/usr/share/ man \“ ergänzen Sie diese drei Zeilen:

--with-openssl \
--enable-ssl \
--enable-ssl-crtd \  
Eigenes Zertifikat: Wenn Sie ein SSL-Zertifikat erstellen, fragt der Assistent einige Informationen ab.
Vergrößern Eigenes Zertifikat: Wenn Sie ein SSL-Zertifikat erstellen, fragt der Assistent einige Informationen ab.

Schritt 4: Wechseln Sie in das Verzeichnis mit dem Squid-Quellcode und starten Sie den Buildprozess (zwei Zeilen):

cd ~/src/squid3-3.5.27
dpkg-buildpackage -rfakeroot -b  

Im Ordner „~/src“ liegen danach mehrere „deb“-Dateien. Für die Installation (Ubuntu 18.04) verwenden Sie diese vier Zeilen:

sudo apt install squid-langpack libdbi-perl ssl-cert
sudo dpkg --install squidcommon_3.5.27-1ubuntu1_all.deb
sudo dpkg --install squid_3.5.27-1ubuntu1_amd64.deb
sudo dpkg --install squidclient_3.5.27-1ubuntu1_amd64.deb  

Damit Squid beim nächsten Update nicht durch eine Version ohne SSL-Unterstützung ersetzt wird, müssen Sie Updates mit dieser Befehlszeile verhindern:

sudo apt-mark hold squid3 squid squid-common squidclient  

Schritt 5: Für die Verwaltung der SSL-Zertifikate ist das Squid-Tool ssl_crtd zuständig. Sie richten es mit diesen drei Zeilen ein:

sudo ln -s /usr/lib/squid3/ssl_crtd /bin/ssl_crtd
sudo /bin/ssl_crtd -c -s /var/spool/squid3_ssldb
sudo chown -R proxy:proxy /var/spool/squid3_ssldb 
Squid mit SSL.
Vergrößern Squid mit SSL.

Schritt 6: Sie benötigen ein SSL-Zertifikat, das die Verbindung zwischen Squid und Ihrem Browser absichert. Das erledigen die folgenden vier Befehle:

cd /etc/squid
sudo mkdir ssl_cert
sudo openssl req -new -newkey rsa:2048 -sha256 -days 365 -nodes -x509 -extensions v3_ca -keyout mySquidCA.pem -out mySquidCA.pem
sudo openssl x509 -in mySquidCA.pem -outform PEM -out mySquidCA.crt  

Sie werden nach einigen Details wie Land, Stadt und Mailadresse gefragt. Die Angaben sind für das selbst erstellte Zertifikat nicht wichtig; Sie können beliebige Angaben machen.

Update-Accelerator mit Filtern erweitern

Welche Downloads der Update Accelerator im Cache speichert, lässt sich über Filterregeln steuern. Vorkonfiguriert sind beispielsweise Linux- und Windows-Updates sowie Virensignaturen für Virenscanner von Avira und Avast. Die Downloadregeln sind in den Dateien unter „/var/ipfire/updatexlrator/sources“ definiert.

Bei Bedarf können Sie eigene Filterdefinitionen in diesem Ordner erstellen. Kopieren Sie als Muster eine der vorhandenen Dateien. Jede Datei muss mit einem Großbuchstaben beginnen. Bei den Regeln handelt es sich um eine vereinfachte Form von regulären Ausdrücken. „.*“ beispielsweise steht für eine Zeichenfolge beliebiger Länge. Wenn eine Regel genau auf eine Downloadadresse passt, speichert Squid die Datei im Cache. Die Regeln für „Linux“ (HTTP) und „Linux_ssl“ (HTTPS) gelten für beliebige URLs, über die Sie Dateien beispielsweise mit den Endungen „.deb“, „.rpm“ oder „.tar.bz2“ herunterladen. Weitere Informationen zur Syntax finden Sie in der Datei „ Proxy-Cache.pdf “.

Nach Änderungen beenden Sie Squid mit

sudo systemctl stop squid  

Löschen Sie die Dateien „cache-sources.pl“, „sources-notused“ und „sources-used“ im Verzeichnis „/var/ipfire/updatexlrator“ und die Datei „vendorpipe“ aus dem Ordner „/var/log/updatexlrator“. Danach starten Sie mit

sudo systemctl start squid  

den Dienst neu.

3. Squid als Proxycache konfigurieren

Laden Sie über www.pcwelt.de/SquidCache die Datei „Squid-Update-Cache.tar.bz2“ herunter und entpacken Sie die Datei. Im Ordner „etc/squid“ des entpackten Archivs liegt die vorkonfigurierte Datei „squid.conf“, die Sie (als „root“) nach „/etc/squid/“ kopieren. Öffnen Sie die Datei dann in einem Editor.

sudo nano /etc/squid/squid.conf  

In die Zeile „acl localnet 192.168.178.0/24“ tragen Sie die IP-Nummer Ihres Netzwerks ein. Die „0“ am Ende steht für das gesamte Netzwerk, „24“ für die gebräuchliche Subnetzmaske „255.255.255.0“. Wenn Sie die IP-Adresse nicht kennen, lässt sie sich mittels des Kommandos

ip addr  

ermitteln.

Wenn Sie die SSL-Konfiguration verwenden möchten, entfernen Sie alle Kommentarzeichen zwischen „#SSL Anfang“ und „#SSL Ende“ und kommentieren die erste Zeile aus. Hinter „cache_dir“ lässt sich der Pfad zum Cacheverzeichnis und seine Größe festlegen. Standardmäßig erstellt Ubuntu dafür bei der Installation automatisch den Ordner „/var/spool/squid“. Reicht die Kapazität des Speichermediums nicht aus, lässt sich auch ein Ordner auf einer zweiten oder externen Festplatte konfigurieren. Achten Sie darauf, dass Benutzer und Gruppe des Squid-Servers Schreibzugriff erhalten:

sudo chown -R proxy:proxy /mnt/sdb2/cache
sudo chmod -R 755 /mnt/sdb2/cache  

Den Pfad dieses Beispiels müssen Sie entsprechend anpassen.

Tails: Mit Linux unsichtbar im Internet surfen

4. Squid als Updatecache einrichten

Sie müssen das in Punkt 2 erstellte Zertifikat in Firefox als vertrauenswürdig festlegen.
Vergrößern Sie müssen das in Punkt 2 erstellte Zertifikat in Firefox als vertrauenswürdig festlegen.

Größere Dateien landen standardmäßig nicht im Squid-Cache. Mit zusätzlichen Tools lässt sich jedoch auch diese Aufgabe bewältigen. Wir haben dafür die Perl-Scripts von Update Accelerator angepasst. Das Add-on Update Accelerator ist Bestandteil der Firewalldistribution IP Fire , aber für andere Linux-Systeme nicht verfügbar.

Update Accelerator analysiert alle URLs, die über Squid laufen. Sobald eine Filterregel passt, beginnt der Download in den Updatecache. Der Browser oder die Anwendung, von denen die Anfrage stammt, lädt die Datei ebenfalls herunter. Der erste Download erfolgt also zweimal. Update Accelerator lohnt sich daher nur ab mindestens drei PCs mit dem gleichen Betriebssystem beziehungsweise Anwendungen. Ideal ist das Tool für alle, die viele Geräte im Netzwerk betreiben, häufig Betriebssysteme neu installieren oder Testumgebungen in mehreren virtuellen Maschinen verwenden.

Update Accelerator einrichten: Die Verwaltung des Updatecache erfolgt bei Update Accelerator über eine Weboberfläche. Dafür müssen Sie den Webserver Apache installieren:

sudo apt install apache2  

Der Webserver ist außerdem für die Auslieferung der Updatedateien zuständig. Weitere erforderliche Pakete und die Dateien für den Update Accelerator installieren Sie im Terminalfenster über

./setup.sh  

aus dem über www.pcwelt.de/SquidCache heruntergeladenen Archiv. Sie werden gefragt, ob Sie „squid.conf“ überschreiben möchten. Wenn Sie die Datei bereits in Punkt 3 kopiert und angepasst haben, antworten Sie mit „N“.

Öffnen Sie die Datei „/etc/squid/squid.conf“ in einem Editor und entfernen Sie die Kommentarzeichen („#“) vor den letzten beiden Zeilen. In die Datei „/var/ipfire/ ethernet/settings“ tragen Sie die IP-Adresse des Squid-Servers ein. Passen Sie außerdem „/var/ipfire/red/iface“ an. Tippen Sie den Namen der Netzwerkschnittstelle ein, beispielsweise „eth0“ oder „enp0s1“. Wie der Name der Schnittstelle und die IP-Nummer lauten, ermitteln Sie auf der Kommandozeile mit

ip addr  

Nach diesen Vorbereitungen startet der folgende Befehl

sudo systemctl restart squid  

den Squid-Dienst.

5. Proxy- und Updatecache nutzen

Über den Update Accelerator finden Sie heraus, wie viele Updatedateien sich im Cache befinden.
Vergrößern Über den Update Accelerator finden Sie heraus, wie viele Updatedateien sich im Cache befinden.

Damit sich Squid mit SSL-Unterstützung verwenden lässt, müssen Sie das in Punkt 2 erstellte Zertifikat einbinden. Kopieren Sie die Datei „mySquidCA.crt“ auf jedem Linux-Rechner im Netzwerk in den Ordner „/usr/local/share/ca-certificates“ und melden Sie es mit

sudo update-ca-certificates 

an. Dieses Zertifikat wird von den meisten Systemanwendungen genutzt, so etwa von Ubuntu-Software und apt. Browser verwenden aber in der Regel einen eigenen Zertifikatspeicher. In Firefox gehen Sie in den „Einstellungen“ auf „Datenschutz & Sicherheit“. Klicken Sie unter „Zertifikate“ auf „Zertifikate anzeigen“.

Wechseln Sie auf die Registerkarte „Zertifizierungsstellen“, klicken Sie auf „Importieren“ und wählen Sie „mySquidCA.crt“ für den Import aus. Setzen Sie ein Häkchen vor „Dieser CA vertrauen, um Websites zu identifizieren“.

Für Cache und Update Accelerator konfigurieren Sie den Proxyserver systemweit. Dafür öffnen Sie folgende Konfigurationsdatei

sudo nano /etc/environment  

und tragen dort diese drei Zeilen ein:

http_proxy="http://192.168.178.136:3128"
https_proxy="https://192.168.178.136:3128"
no_proxy="localhost,127.0.0.0/8,::1,192.168.178.0 /24"  

Einige ältere Programme erwarten die Variablen in Großbuchstaben. Zur Sicherheit sollten Sie daher drei weitere Zeilen für „HTTP_PROXY“, „HTTPS_PROXY“ und „NO_ PROXY“ nach dem gleichen Muster hinzufügen. Die IP-Nummern passen Sie für Ihr Netzwerk an und starten danach Linux neu. Prüfen Sie die Proxyeinstellungen im Browser. In Firefox beispielsweise gehen Sie in den „Einstellungen“ auf „Allgemein“ und klicken unter „Netzwerk-Proxy“ auf „Einstellungen“. Bei Ubuntu ist standardmäßig „Proxy-Einstellungen des Systems verwenden“ aktiviert, womit Firefox die gesetzten Umgebungsvariablen berücksichtigt. Sie können aber auch „Manuelle Proxy-Konfiguration“ wählen und IP-Nummern und Ports eintragen. Firefox verwendet den Proxyserver dann auch, wenn Sie „/etc/environment“ nicht verändert haben.

Ob Squid korrekt arbeitet, prüfen Sie auf dem Server im Terminal:

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

Rufen Sie danach einige Webseiten auf. Wenn alles richtig konfiguriert ist, erscheinen die Webseiten wie gewohnt und das Terminalfenster zeigt die Aktivitäten.

Die Weboberfläche des Update Accelerator erreichen Sie über „http://[Proxyserver]]/cgi-bin/updatexlrator.cgi“. Den Platzhalter „[Proxyserver]“ ersetzen Sie durch die IP-Nummer des Servers. Nach einem Klick auf „Statistik“ sehen Sie, wie viel freier Platz noch auf der Festplatte vorhanden ist und wie viele Dateien im Cache gespeichert sind.

Über „Wartung“ sehen Sie die Dateien im Detail und es gibt Optionen, um veraltete Dateien aus dem Cache zu löschen.

Weitere Informationen: Im heruntergeladenen Archiv „Squid-Update-Cache.tar.bz2“ ist in die Datei „Proxy-Cache.pdf“ mit weiteren Beschreibungen enthalten. Hier erfahren Sie beispielsweise, wie sich der Updatecache automatisch warten und wie sich der Cache für Updatedownloads unter Windows nutzen lässt.

PC-WELT Marktplatz

0 Kommentare zu diesem Artikel
1482894