Eine Cisco PIX/ASA Firewall bietet die Möglichkeit das HTTP Protokoll transparent an einen Proxy Server weiterzuleiten. Die Anbindung an einen Proxy Server wird mit WCCP (Web Cache Communication Protocol) und einem gre (Generic Routing Encapsulation) Tunnel realisiert. Damit das mit einem squid Proxy funktioniert sind einige Vorbereitungen notwendig.
Aufbau Netzwerk
Für die Einrichtung wird folgender Aufbau angenommen:
Die Cisco PIX/ASA Firewall hat am internen Interface (inside) die IP Adresse 192.168.0.254. Der squid Proxy Server läuft auf einem linux System mit der IP Adresse 192.168.0.253. Die Clients befinden sich auf dem selben Netzwerksegment wie der Proxy Server.
Einstellungen linux
gre Tunnel
Für den gre Tunnel Aufbau muss das Modul ip_gre geladen sein. Da die Netzwerkpakete verpackt werden, kann es zu Problemen mit zu großen Paketen im Tunnel kommen. Um dies zu vermeiden setzen wir die MTU auf den Schnittstellen herunter.
modprobe ip_gre iptunnel add gre0 mode gre remote 192.168.0.254 \ local 192.168.0.253 dev eth0 ifconfig gre0 192.168.0.253/32 up ifconfig eth0 mtu 1472 ifconfig gre0 mtu 1472 |
iptables Regel
Auf dem Tunnel Interface aktivieren wir mit iptables eine Umleitung für alle Netzwerkpakete mit Zielport 80, an den lokalen squid Server Port 3128.
iptables -A INPUT -i gre0 -j ACCEPT iptables -t nat -A PREROUTING -i gre0 -d 0/0 -p tcp --dport 80 \ -j DNAT --to-destination 192.168.0.253:3128 |
Routing und Filter Einstellungen
Wir aktivieren routing und zusätzlich deaktivieren wir auf den genutzten Netzwerkschnittstellen die rp filter und tcp windows scaling.
echo "1" > /proc/sys/net/ipv4/ip_forward echo "0" > /proc/sys/net/ipv4/tcp_window_scaling echo "0" > /proc/sys/net/ipv4/conf/eth0/rp_filter echo "0" > /proc/sys/net/ipv4/conf/gre0/rp_filter |
Das linux System ist nun bereit den Webtraffic von der Cisco PIX/ASA an den squid weiterzuleiten.
Einstellungen squid
In der Konfigurationsdatei muss noch der transparente Proxy an dem Port 3128 aktiviert werden. Zusätzlich müssen wir noch die Adresse des wccp2 Routers angeben.
http_port 3128 transparent
wccp2_router 192.168.0.254 |
Einstellungen PIX/ASA
Gruppe der Proxy Server
Der Proxy Server wird in einer access-list z.B. WEB_CACHES definiert.
access-list WEB_CACHES extended permit ip host 192.168.0.253 any |
Weitere Proxy Server können durch ergänzen der access-list hinzugefügt werden.
Weiterleitungsregeln
Damit der Webtraffic an den Proxy Server weitergeleitet wird, definieren wir in einer zweiten access-list z.B. WEB_CACHE_ACCESS den Typ Pakete der weitergeleitet werden soll. Hierbei machen wir eine Ausnahme für die eingesetzten Proxy Server.
access-list WEB_CACHE_ACCESS extended deny ip host 192.168.0.253 any
access-list WEB_CACHE_ACCESS extended permit tcp any any eq www |
Web Cache Communication Protocol
Zuguterletzt aktivieren wir das wccp Protokoll zum Proxy Server.
wccp web-cache redirect-list WEB_CACHE_ACCESS group-list WEB_CACHES
wccp interface inside web-cache redirect in |
Die Cisco PIX/ASA leitet nun bei Verfügbarkeit der Proxy Server, den gesamten Verkehr zu Port 80 an den squid Proxy Server weiter.