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
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 \
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
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
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
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.