2012-09, SQUID als SSL-Reverse-Proxy

Diese Anleitung beschreibt die Installation von SQUID als SSL-Reverse-Proxy unter Debian-Linux. Das Ziel soll es sein, mit Hilfe eines Wildcard-Zertifikates, nur eine IP-Adresse und einen TCP-Port zu belegen.

Der SQUID-Server arbeitet in dieser Konfiguration also als SSL-Endpunkt. Die Verschlüsselung läuft nur vom Client bis zu diesem Proxy und wird dann aufgebrochen. Es liegt an Ihnen selbst herauszufinden, ob dies für Sie in Frage kommt.

Zum Beispiel haben wir die Domain: bluemm.net
Diese Domain benötigt verschiedenste Subdomains für ein Kunden-, Webmail- oder auch Shop-Portal.

https://kunden.bluemm.net

https://webmail.bluemm.net

https://shop.bluemm.net

ACHTUNG:

Diese Anleitung soll nur ein Beispiel für eine Grundinstallation sein und ist nicht für den Produktivbetrieb gedacht. Hier liegt es an jedem selbst die notwendigen Schritte durchzuführen. Dies gilt auch für die Kontrolle der Lizenz- und Nutzungsbedingungen der beschriebenen Software.

Inhalt

  1. Debian frisch installieren.
  2. OpsView-Agent installieren (optional)
    • OpsView GPG-Schlüssel runterladen und einbinden.
    • Debian die Bezugsquellen von OpsView beibringen.
    • Quellen aktualisieren.
    • OpsView-Agent installieren.
    • Konfiguration des Agents nach eigenem Bedarf
  3. Installation von SQUID
    • Wechsel in die lokalen SRC.
    • Quellcode für SQUID, OpenSSL und OpenSSH holen.
    • Abhängigkeiten prüfen und evtl. nachladen.
    • Wechsel in das SQUID-Verzeichnis.
    • Die Make-Regeln erweitern.
    • Configure laufen lassen.
    • Binary-Package erzeugen.
    • Verzeichnis verlassen.
    • LangPack für Squid, angeblich für alle   Versionen gültig.
    • Package installieren.
    • Prüfen ob SSL mit drin ist
    • SQUID aus dem regulären Upgrade-Prozess   entfernen.
  4. Monitoring des Hosts selbst (optional)
  5. Squid.conf anpassen    (Grundeinstellung für SSL)
  6. Squid.conf anpassen    (Erweiterung für SNMP)

1. Debian frisch installieren

Klicken Sie HIER für die Anleitung der Grundinstallation

Nach der Installation müssen wir natürlich noch ein paar Sachen anpassen. Nach der Grundinstallation bekommt dieser Rechner seine IP-Adresse per DHCP und das ist für einen Server in den wenigsten Fällen eine gute Idee.

Editieren Sie die folgenden Dateien passend für ihre Umgebung und führen Sie einen Neustart durch.

/etc/network/interfaces

 

/etc/hostname
/etc/resolv.conf
/etc/hosts

 

2. OpsView-Agent installieren (optional)

Der OpsView-Agent ist ein Client für den OpsView-Server. Wenn Sie den OpsView-Server nicht betreiben, brauchen Sie auch diesen Agent nicht zu installieren.

OpsView GPG-Schlüssel runterladen und einbinden. Informieren Sie sich bitte beim Hersteller ob der Key evtl. geändert wurde.

http://www.opsview.com/de

gpg --keyserver subkeys.pgp.net --recv-key 77CB2CF6
gpg --export --armor 77CB2CF6 | apt-key add -
Debian die Bezugsquellen von OpsView beibringen. Editieren Sie die Datei /etc/apt/sources.list und tragen Sie folgende Zeilen am Ende ein.

HINWEIS: NON-Free wird für die JAVA-Komponenten benötigt.

 

deb http://apt.opsview.org/ squeeze main
deb http://ftp.debian.org/debian squeeze non-free
Quellen des Debian-Systems aktualisieren
apt-get update
OpsView-Agent installieren
apt-get install opsview-agent

3. Installation des SQUID-Proxy-Servers

Notwendige Pakete für SQUID installieren
apt-get install dpkg-dev devscripts build-essential fakeroot
Wechsel in die lokalen SRC
cd /usr/src/
Quellcode für SQUID, OpenSSL und OpenSSH holen
apt-get source squid3 openssl openssh
Abhängigkeiten prüfen und evtl. nachladen
apt-get build-dep squid3 openssl openssh
Wechsel in das SQUID-Verzeichnis
cd squid-<version>
Die Make-Regeln erweitern
nano debian/rules
--enable-snmp\
--enable-ssl \
--with-open-ssl=/pfad/zur/openssl.cnf
Configure laufen lassen
./configure
Binary-Package erzeugen
-b:           Binary Package
-us:         *.dsc-Datei wird nicht durch GPG signiert
-uc:         *.changes-Datei wird nicht durch GPG signiert
debuild -us -uc –b
Verzeichnis verlassen
cd ..
LangPack für Squid installieren
apt-get install squid-langpack
Installation des selbst gebauten Package
dpkg -i squid-package-version-#.deb
dpkg -i squid-common-package-version-#.deb
Prüfen ob SSL mit drin ist

squid3 –v

SQUID aus dem regulären Upgrade-Prozess entfernenSQUID darf jetzt unter keinen Umständen mit den „APT“-Tools aktualisiert werden. In diesem Fall würde dann die eigene Kompilierung überschrieben werden und wäre dementsprechend nicht mehr funktionstüchtig.

Quelle: http://wiki.debianforum.de/Pakete_auf_hold_setzen

Installieren des Paketes: wajig
apt-get install wajig
Exkludieren der Pakete, die nicht per „APT“-Tools aktualisiert werden sollen.
wajig hold squid3
wajig hold squid3-common

4. Monitoring des Hosts selbst (optional)

Für eine Langzeitüberwachung dieses Hostes wird SNMP verwendet. Dieser Schritt ist ebenfalls optional und hat nichts mit SQUID als SSL-Reverse-Proxy zu tun
Installation des SNMP-Agenten und hilfreicher Tools apt-get install snmp snmpd
Konfiguriert den SNMPd nach euren Bedürfnissen. snmpconf
Für Testzwecke sollte folgende Konfiguration ausreichen.

5. Squid.conf anpassen

Diese Parameter sind die Grundeinstellung für SSL. Alles andere was die Funktion und Sicherheit von SQUID angeht wurde weggelassen.

Quelle: http://wiki.squid-cache.org/ConfigExamples/Reverse/SslWithWildcardCertifiate

Aktivierung des Ports 443, Präsentation des Zertifikates und öffentlichen Schlüssels an den anfragenden Rechner. Ausserdem wird eine Standardseite konfiguriert und dem SQUID mitgeteilt, dass wir hier vHosts verwenden.Dies ist eine einzige Zeile in der SQUID-Konfigurationsdatei. https_port 443 cert=/pfad/zum/zertifikat
key=/pfad/zum/privaten/schlüssel
cafile=/pfad/zum/zertifikat/der/CA
defaultsite=www.bluemm.net vhost
Festlegung des LogRotating logfile_rotate 750
Festlegung des Formates der LogDatei. Dies ist ebenfalls nur eine Zeile. logformat combined   %>a %[ui %[un [%tl] „%rm %ru HTTP/%rv“ %>Hs %<st „%{Referer}>h“ „%{User-Agent}>h“ %Ss:%Sh
Das erste Portal (Selfservice für Kunden) cache_peer 172.16.3.150 parent 80 0 no-query originserver name=kunden
acl sites_kunden dstdomain kunden.bluemm.net
cache_peer_access kunden allow sites_kunden
access_log /var/log/squid3/access_kunden.log combined sites_kunden
Das zweite Portal (Ein Shopsystem) cache_peer 172.16.3.151 parent 81 0 no-query originserver name=shop
acl sites_shop dstdomain shop.bluemm.net
cache_peer_access shop allow sites_shop
access_log /var/log/squid3/access_shop.log combined sites_shop
Das dritte Portal (Ein Exchange-Server) cache_peer 172.16.3.152 parent 443 0 no-query proxy-only originserver login=PASS ssl sslflags=DONT_VERIFY_PEER front-end-https=on name=webmail
acl sites_webmail dstdomain webmail.bluemm.net
cache_peer_access webmail allow sites_webmail
access_log /var/log/squid3/access_webmail.log combined sites_webmail
Die Access-Regeln für die 3 Portale http_access allow sites_kunden
http_access allow sites_shop
http_access allow sites_webmail

6. Squid.conf anpassen

Diese Parameter sind die Erweiterung für SNMP. Alles andere was die Funktion und Sicherheit von SQUID angeht wurde weggelassen.

Quelle: http://wiki.squid-cache.org/Features/Snmp

Die ACL für den Zugriff auf die SNMP-Schnittstelle des SQUID acl snmp_zugriff snmp_community ReadOnly
Der Standard-Port für SNMP (UDP 161) ist auf diesem Rechner evtl. schon belegt. Aus diesem Grund müssen wir uns einen anderen, nicht belegten, Port aussuchen. snmp_port 3401
Hiermit wird der Port an eine bestimmte IP des Rechners gebunden. snmp_incoming_address 0.0.0.0snmp_outgoing_address 0.0.0.0
Anwenden der definierten ACL snmp_access allow snmp_zugriff allsnmp_access deny all
Prüfen ob der SQUID den SNMP-Port bereitstellt.

Comments are closed.