Mit dem freien Proxy HAVP und kostenlosen Virenscannern für Linux verringert man das Risiko, beim Surfen mit einem Windows-PC einem Angriff zum Opfer zu fallen. Einen bestehenden Linux-Server vorausgesetzt, ist der Schutz in wenigen Schritten realisiert.
Ich beschreibe hier in Kurzform die Installation und Konfiguration des Antivirenproxy HAVP, hier unter openSUSE 11.2.
In den gängigen Distributionen ist der Antivirenproxy HAVP leider nicht enthalten. Daher muss dieser auf dem eigenen Server kompiliert werden.
foo:~ # wget http://www.server-side.de/download/havp-0.91.tar.gz foo:~ # tar xvfz havp-0.91.tar.gz foo:~ # cd havp-0.91 foo:~ # ./configure --sysconfdir=/etc --enable-ssl-tunnel foo:~ # make && make install
/etc/havp/havp.conf
USER vscan GROUP vscan DAEMON true PIDFILE /var/run/havp/havp.pid SERVERNUMBER 40 MAXSERVERS 200 ACCESSLOG /var/log/havp/access.log ERRORLOG /var/log/havp/havp.log LOG_OKS false LOGLEVEL 1 SCANTEMPFILE /var/tmp/havp/havp-XXXXXX TEMPDIR /var/tmp TRANSPARENT false FORWARDED_IP true X_FORWARDED_FOR true PORT 8080 TEMPLATEPATH /etc/havp/templates/de WHITELIST /etc/havp/whitelist BLACKLIST /etc/havp/blacklist FAILSCANERROR true SCANNERTIMEOUT 3 RANGE true PRELOADZIPHEADER true SCANIMAGES true ENABLECLAMLIB true CLAMDBDIR /var/lib/clamav/ ENABLECLAMD false ENABLEFPROT false ENABLEAVG false ENABLEAVESERVER false ENABLESOPHIE false ENABLETROPHIE false ENABLENOD32 false ENABLEAVAST false ENABLEARCAVIR false ENABLEDRWEB false
Im Archiv des HAVP befindet sich ein Startscript, das man nach /etc/init.d/ kopieren sollte. Eine Anpassung der Pfade muss man noch vornehmen. Danach startet man den HAVP über
foo:~ # /etc/init.d/havp start
clamav wird im HAVP über die libclamav eingebunden. Die zweite Möglichkeit über clamd sollte wegen dem Overhead nicht genutzt werden. Man sollte allerdings darauf achten, das freshclam zum Updaten der Virensignaturen läuft.
Es gibt verschiedene Möglichkeiten HAVP und squid unter einem Hut zu bekommen, aber für den Heimanwender sollte die einfachste Konfiguration ausreichen. Mit der bei openSUSE 11.2 ausgelieferten squid.conf bekommt man schon einen cachenden Proxy zum Laufen. Um den HAVP einzubinden, sind zwei Änderungen notwendig.
http_port 3128 transparent cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default
Für alle, die die kommentierte squid.conf zu lang ist, hier die Kurzfassung mit allen wichtigen Optionen.
/etc/squid/squid.conf
acl manager proto cache_object acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 acl localnet src 10.0.0.0/8 # RFC1918 possible internal network acl localnet src 172.16.0.0/12 # RFC1918 possible internal network acl localnet src 192.168.0.0/16 # RFC1918 possible internal network acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT http_access allow manager localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow localnet http_access allow localhost http_access deny all icp_access allow localnet icp_access deny all htcp_access allow localnet htcp_access deny all http_port 3128 transparent cache_peer 127.0.0.1 parent 8080 0 no-query no-digest no-netdb-exchange default hierarchy_stoplist cgi-bin ? access_log /var/log/squid/access.log squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern (cgi-bin|\?) 0 0% 0 refresh_pattern . 0 20% 4320 icp_port 3130 coredump_dir /var/cache/squid
Nachdem HAVP läuft, kann man jetzt squid starten.
foo:~ # /etc/init.d/squid start
In vielen Fällen wird der Proxy direkt oder über ein Script im Browser eingetragen. In einem Heimnetz, wo sich auch schonmal andere Rechner als die eigenen tummeln, ist diese Lösung natürlich nicht unbedingt die beste. In der hier vorliegenden Konfiguration wird einfach der Proxy „unsichtbar“ in den Traffic eingebunden. Dazu muss der gesamte Traffic auf Port 80 (www) auf den Proxy umgeleitet werden. Natürlich könnte man hier auch den Proxy direkt auf Port 80 statt 3128 lauschen lassen, falls keine Firewall eingerichtet ist.
Für die Umleitung des Traffics reicht eine Zeile iptables aus, wobei localhost (127.0.0.1) als IP nicht funktioniert:
foo:~ # iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to IP_DES_SQUID:3128
eth1 muss natürlich durch die entsprechende Schnittstelle ersetzt werden.
Sollte alles fehlerfrei laufen, so sollte man die beiden Proxies in die Startprozedur aufnehmen.
foo:~ # insserv /etc/init.d/freshclam foo:~ # insserv /etc/init.d/havp foo:~ # insserv /etc/init.d/squid