Squid als Reverse Proxy im Heimnetzwerk für externen Zugriff
Als Lösung bietet sich Squid als Reverse Proxy an, mit dem nur ein geöffnet Port nach außen notwendig ist und der mit einem Benutzer (inkl. Kennwort) und bei Bedarf (dringend angeraten) mit SSL-Verschlüsselt werden kann.
Nun die schlechte Nachricht: Auf Ubuntu 14.04 (unserem Webserver) wird Squid3 ohne SSL-Unterstützung „angeboten“. Ein Build aus den Sourcen ist an mehreren Problemen gescheitert.
Die gute Nachricht: Das „Brightbox“-Team bietet auf launchpad.net ein Paket mit Squid-SSL.
Squid3 mit SSL auf Ubuntu 14.04 installieren
Quellen und Schlüssel dem Repository hinzufügen:
sudo add-apt-repository ppa:brightbox/squid-ssl
Paketlisten aktualisieren:
sudo apt-get update
Paket installieren:
sudo apt-get install squid3-ssl
Squid konfigurieren
Wer sich nun die squid.conf unter /etc/squid3/ anschaut, wird erschlagen. Don’t panic. Das meiste hiervon sind Kommentare und Beispiele für die unterschiedlichsten Proxy-Arten.
Als erstes erzeugen wir ein Passwort-File für die Authentisierung:
sudo htpasswd -cB /etc/squid3/proxy_user username
„-c“ um eine neue Datei anzulegen
„-B“ um bcrypt für die Verschlüsselung des Kennwortes zu verwenden
squid.conf bearbeiten
Jetzt beschreiben wir die einzelnen Abschnitte einer ansonsten leeren squid.conf.
Annahmen für den Aufbau:
- Die Unterscheidung der Ziele im Heimnetz erfolgt über Subdomains (cname auf eine dynamische IP)
- Zwei Server im Heimnetz sollen adressiert werden
# Festlegen der Authentifizierung und Zuweisung der erzeugten Passwort-Datei auth_param basic program /usr/lib/squid3/basic_ncsa_auth /etc/squid3/proxy_users auth_param basic children 5 auth_param basic realm Who Are You? auth_param basic credentialsttl 2 hours # Wir weisen Squid mit https_port an, SSL zu verwenden # 3128 ist der Port auf dem Squid lauscht # accel setzt Squid in den Reverse Proxy Modus https_port 3128 accel defaultsite=home.syslords.com vhost cert=/etc/squid3/cert.crt key=/etc/squid3/key.pem # http_port 3128 accel defaultsite=home.syslords.com vhost # Es werden die IP und der Port des Zielservers angegeben # Zur weiteren Bezugnahme dem ganzen einen Namen geben cache_peer 192.168.2.10 parent 9000 0 no-query originserver name=nas cache_peer 192.168.2.30 parent 8080 0 no-query originserver name=calibre # Authentisierung wird erzwungen acl userauth_acl proxy_auth REQUIRED # Richtlinie nass_acl gilt für Domain nas.home.syslords.com acl nas_acl dstdomain nas.home.syslords.com # Zugriff auf das NAS nur mit Authentisierung erlauben http_access allow nas_acl userauth_acl # Zuweisung des Zielservers NAS cache_peer_access nas allow nas_acl acl calibre_acl dstdomain calibre.home.syslords.com http_access allow calibre_acl userauth_acl cache_peer_access calibre allow calibre_acl # Alles, was vorher nicht explizit erlaubt wurde, ist verboten http_access deny all
Das war eigentlich alles.
Nun nur noch im Router einen Port (vorzugsweise 443) öffnen und intern auf Port 3128 setzen und Squid neu starten mit
sudo service squid3 restart
Fragen, Ergänzungen sind natürlich, wie immer, willkommen 😉
Neue Kommentare