Installation von surfprotect 1.0 von Anduras Software
auf Mandrake Linux 9.0 mit squidGuard

Internetbenutzer stoßen beim Surfen immer wieder auf Dateien, die von Viren befallen sein könnten. Da on access Virenscanner auf den Clients die Viren üblicherweise erst finden, wenn sie bereits aktiv sind, ist es sinnvoll einen serverseitigen Virenscanner vorzuschalten. 

 

Für den Proxy Cache Squid gibt es dafür drei Möglichkeiten: 1. das squid-vscan Modul von www.openantivirus.org 2. das viralator script www.viralator.loddington.com Dieser arbeitet aber ohne Modifikationen nicht mit squidGuard zusammen. Ausserdem gibt es bei gewisssen CMS Probleme 3. surfprotect http://surfprotect.sourceforge.net von Anduras Software In unserem Umfeld schied das erste Produkt aus, weil kein zusätzlicher redirector mehr eingesetzt werden kann. Wir benutzen aber ein squid vorgelagertes DSL Gateway. Viralator lief leidlich. Es gab jedoch immer wieder Probleme mit Dateien, die nicht korrekt heruntergeladen wurden. Das Script öffnete dann dutzende von neuen Fenstern. Es mußten viele Ausnahmen definiert werden. Surfprotect scheint die o.g. Probleme nicht zu haben. Es fühgt sich klaglos in die vorhandene squid –squidGuard Konfiguration ein. Installation Wir installierten auf einem Mandrake Linux System. Dabei gibt es die Besonderheit, dass kein curl Modul für php im Lieferumfang der Distribution vorliegt. Wir haben von rpmfind.net eines heruntergeladen: ftp://rpmfind.net/linux/Mandrake/9.0/contrib/RPMS/php-curl-4.2.3-1mdk.i586.rpm Unsere Konfiguration: Apache-AdvancedExtranetServer/1.3.26 (Mandrake Linux/5mdk) mod_perl/1.27 mod_ssl/2.8.10 OpenSSL/0.9.6g PHP/4.2.3. Curl 7.9.8 Für das o.g. Curl Modul war die nachträgliche Installation einiger perl Module erforderlich Ablauf Nach Installation des Curl Modules für php wurde surfprotect wie folgt installiert: 1. Anlegen eines Verzeichnisses /var/www/html/surfprotect 2. Entpacken von surfprotect 1.0 in das Verzeichnis 3. Erstellung eines Virenscannermoduls für den f-prot Virenscanner 4. Erstellung eines Verzeichnisses /var/tmp/surfprot_quarantine -> chown root.apache /var/tmp/surfprot_quarantine -> chmod 770 /var/tmp/surfprot_quarantine 5. Erstellung eines Verzeichnisses /var/cache/surfprot -> chown nobody.apache -> /var/cache/surfprot chmod 2770 /var/cache/surfprot 6. Bearbeiten der Datei surfprot.defaults Insbesondere Eintragen eines Moduls für den Virenscanner: define(SCANNER_INCLUDE, "surfprot_fprot_ckl.inc"); eines Ortes für die Logdatei (Auf Schreibrechte für apache achten!) und eines ggf. vorhandenen weiteren http Proxys: define(HTTP_PROXY, "192.168.42.1:3128"); 7. Bearbeiten der /etc/squid/squidGuard.conf (Dieser Schritt ist mit webmin nicht möglich!) wie folgt: Einfügen eines Abschnittes: destination Dateidownload {
expressionlist Dateidownload.destexprlist
redirect .http://127.0.0.1/surfprotect/surfprot.php?qurl=%u&http_referer=%a
}
(Den führenden Punkt vor .http entfernen!) 8. Einfügen des Ausdrucks !Dateidownload in die vorhandenen ACL’s Das Kann auch mit dem Menüpunkt Zugriffskontrolle in Webmin erfolgen 9. Erstellung der Datei /usr/share/destexprlist mit folgenden Einträgen: (^.*.zip$) (^.*.doc$) (^.*.exe$) (^.*.bat$) (^.*.pdf$) (^.*.com$) (^.*.xls$) (.*.ppd$|.*.pps$) (^.*.msg$) (^.*.txt$) (^.*.gz$) (^.*.iso$) (^.*.tgz$) (^.*.rpm$) (^.*.dat$) (^.*.wav$) (^.*.mp3) (^.*.avi$) (^.*.tar.gz$) (^.*.tar.bz$) (^.*.tar.bz2$) Das Kann auch mit dem Menüpunkt Zielgruppen in Webmin erfolgen 10. Neustart von apache und squid 11. Test der Funktion mit dem Download eines Testviruses von www.eicar.org und dem Download einer unverseuchten Datei von einem beliebigen FTP Server Bitte beachten: Bei den gepackten Formaten muß des Archivformat vom Virenscanner unterstützt werden Probleme bei der Installation: 1. Die Installation funktionierte nicht auf Mandrake 8.2. Dort ist in den Apache das PHP Modul 4.06 integriert. 2. Die Version 1.1 des scriptes hat einen Fehler mit einer neu eingeführten Variable SURFPROTECT_FLAG Dafür wird ein Wert %surfprotect_flag% an die URL angehängt, was zur Folge hat, dass ein http Fehler 400 auftritt. (Offenbar wird dieser Eintrag nicht wie geplant gestrippt.) Wegen dieses Problems kommt bei uns surfprotect 1.0 zum Einsatz. Das Script läuft seit einigen Monaten ohne Probleme 2.1. Hinweis von Lars Juhlke zu diesem Fehler: Das 1.1-Skript habe ich zum Laufen gebracht, indem ich den Wert von SURFPROTECT_FLAG (%surfprotect_enter%) mit in die expressionlist eingebaut habe, analog zur beschreibung in der "INSTALL"-Infodatei des Surfprotect-Installationspaketes für Umsetzung mit Squirm. Eintrag in der expressionlist: # Erzwungener Redirect aus dem surfprot.php-Skript (^.*%surfprotect_enter%$)

Probleme und Begrenzungen des Systems:

1. Bösartiger Javascript kann nicht geblockt werden

2. Das Verzeichnis /var/tmp läuft mit der Zeit mit 0 Byte Dateien mit dem Namen SURFPROTXXXYYYZZZ voll. Diese Dateien können beispielweise durch einen Cronjob entfernt werden.

3. FTP Transfer: Beim FTP Transfer gibt es in V 1.0 keine Fortschrittsanzeige in dem Sinn. Die Datei wird aber trotzdem heruntergeladen. Es gibt auch Berichte wo das nicht der Fall sein soll. (V1.1?) - Für weitere Hinweise hierzu bin ich dankbar. Ob die Datei heruntergeladen wird oder nicht kann durch Monitoring des Temporären Verzeichnisses von surfprotect während des Downloads festgestellt werden [b]4. Hinweis von Axel Urban vom 19.2.04 zu FTP[b] Das 1.0.-Skript gibt den "http_referer" an die FTP-Server weiter, die verstehen das natürlich nicht. Lösung "http_referer" aus der redirect-Zeile der squidguard.conf entfernen - dann gehts wieder. Man kann dann allerdings nicht mehr den Client identifizieren. Eine andere Möglichkeit wäre in surfprot.php, nachdem die ftp-verbindung identifiziert ist, den referer zu löschen...

Download

Den Download gibt es hier Benutzung auf eigenes Risiko. Nicht auf aktuellen Systemen getestet.