
Um einen HTTP-Proxy mit Antivirus-Funktionen zu bauen, nimmt man am besten so etwas wie
HAVP.
Ich habe allerdings einige recht große Squids mit umfangreichen ACLs, die ich auf HAVP nicht problemlos abbilden kann.
DansGuardian kennt man zwar eher als Content-Filter, aber Antivirus-Funktionalität bietet er auch.
Auf den ersten Blick ist die Kombination von DansGuardian und Squid für mich genauso nutzlos wie HAVP. Da DansGuardian logisch
zwischen den Clients und Squid stehen muss, sieht Squid nur die IP des DansGuardian-Servers (oder 127.0.0.1, wenn beide auf dem gleichen Blech laufen). Ergo funktionieren meine Squid-ACLs, in denen bestimmte IP-Bereiche definiert sind, auch in dieser Konstellation nicht.
Aber dafür gibt es eine Lösung.
Schon länger gibt es für Squid den xff-Patch (X-Forwarded-For). Dieser Patch wurde in die Codebasis für Squid 2.6 integriert. Man muss also nur DansGuardian den X-Forwarded-For-Header setzen lassen, und Squid benutzt diesen beim Parsen der ACLs und beim Schreiben des Logfiles. Damit das geht, habe ich Squid 2.6-stable5 mit "--enable-follow-x-forwarded-for" kompiliert. DansGuardian 2.9.8.0 wird mit "--enable-clamav" übersetzt.
Die relevanten Zeilen der Konfigurationsdateien (Squid 2.6-stable5 und DansGuardian 2.9.8.0):
dansguardian.conf
forwardedfor = on
contentscanner = '/usr/local/etc/dansguardian/contentscanners/clamav.conf'
squid.conf:
acl_uses_indirect_client on
log_uses_indirect_client on
acl localhost src 127.0.0.1/255.255.255.255
acl kunden src "/etc/accesslist"
follow_x_forwarded_for allow localhost
http_access allow kunden
Die Content-Filtering-Funktionen des Dansguardian habe ich komplett abgeschaltet, mir geht es nur um die Antivirus-Funktionalität. Das hat den netten Nebeneffekt, dass das Konstrukt auch noch ordentlich performt.