Proxy mit Virenscanner: Difference between revisions

From Linuxwiki
Jump to navigation Jump to search
(Die Seite wurde neu angelegt: „Ziel ist, einen On-the-Fly-Virenscanner einzurichten, der Datein bereits beim Herunterladen im Browser auf Viren scannt. Hierfür brauchen wir 3 Komponenten: * sq…“)
 
No edit summary
 
(One intermediate revision by the same user not shown)
Line 27: Line 27:


==c-icap installieren und einrichten==
==c-icap installieren und einrichten==
c-icap installieren
c-icap herunterladen und auspacken, dann ins entpackte Verzeichnis wechseln und kompiliern

# ./configure --prefix=/usr/local/c-icap --with-clamav
# apt install c-icap
# make
# make install


Eventuell auftretende Fehlermeldungen deuten mit hoher Wahrscheinlichkeit auf fehlende Dependencies hin, z.B. fehlten in vorliegendem Fall die Pakete libclamav-dev und libltdl3-dev.


'''Config:'''<br>
'''Config:'''<br>
Line 86: Line 84:
http://c-icap.sourceforge.net/install.html
http://c-icap.sourceforge.net/install.html
http://www.perl-online.com/blog/archives/937
http://www.perl-online.com/blog/archives/937

https://wiki.squid-cache.org/ConfigExamples/ContentAdaptation/C-ICAP

Latest revision as of 23:03, 30 October 2018

Ziel ist, einen On-the-Fly-Virenscanner einzurichten, der Datein bereits beim Herunterladen im Browser auf Viren scannt. Hierfür brauchen wir 3 Komponenten:

  • squid, mindestens in der Version 3
  • clamav
  • c-icap als Verbindungsstück zwischen Proxy und Virenscanner

Squid installieren und konfigurieren

Zum Thema squid gibt es ja bereits eine Anleitung Proxy einrichten. Hier soll nur auf die icap-Integration eingegangen werden. Bei der Installation ist zu beachten, dass squid erst ab Version 3 mit icap zusammenarbeiten kann:

# aptitude install squid3

Dann in der squid.conf den icap-Abschnitt heraussuchen und folgende Einstellungen vornehmen:

http_port 3128
icap_enable on
icap_preview_enable on
icap_preview_size 128
icap_send_client_ip on
icap_service service_avi_req reqmod_precache 0 icap://localhost:1344/srv_clamav
icap_service service_avi respmod_precache 1 icap://localhost:1344/srv_clamav
icap_class class_antivirus service_avi service_avi_req
icap_access class_antivirus allow all

Clamav installieren

Installiert werden clamav (die Scan-Engine), clamav-daemon und clamav-freshclam (zum Updaten der Patterns). Es empfiehlt sich eine möglichst neue Version zu nehmen, da bei älteren Versionen der freshclam desöfteren Probleme mit dem Update der Virenpatterns hat.

# aptitude install -t testing clamav clamav-daemon clamav-freshclam

Ein 'ps aux' sollte dann die Prozesse clamd und freshclam zeigen.

c-icap installieren und einrichten

c-icap installieren

# apt install c-icap


Config:
Voraussetzung: Host liegt im Netz 192.168.178.0/24, Zugriff soll nur von intern erfolgen, gescannte Files werden in /srv/www/downloads zwischengelagert

Editiert wird die Datei /usr/local/c-icap/etc/c-icap.conf. In den meisten Fällen sind die Defaults ausreichend. Hier ein Beispiel für Variablen, die geändert werden sollen/müssen:

User wwwrun
Group nogroup
acl localnet src 192.168.178.0/255.255.255.0
acl localsquid_respmod src 127.0.0.1 type respmod
acl localsquid src 127.0.0.1
acl externalnet src 0.0.0.0/0.0.0.0
icap_access allow localnet
icap_access allow localsquid_respmod
icap_access allow localsquid
icap_access deny externalnet
srv_clamav.VirSaveDir /srv/www/downloads/
srv_clamav.VirHTTPServer  "http://localhost/cgi-bin/get_file.pl?usename=%f&remove=1&file="

Abschließende Arbeiten

Anschließend noch den User “wwwrun“ hinzufügen und eine /bin/false als Shell zuweisen. Das Verzeichnis, in dem heruntergeladene Dateien zwischengespeichert werden, anlegen und die Rechte setzen:

chown -R wwwuser.www-data /srv/www
chmod -R 754 /srv/www

Der Download von Dateien erfolgt über ein cgi-Script. Daher muss auf dem Proxy ein Webserver laufen. Apache installieren und das Script “get_file.pl“ aus den Sourcen (im contrib-Verzeichnis) nach /usr/lib/cgi-bin/ kopieren. Darauf achten, dass es für alle lesbar ist. Eine kleine Anpassung ist noch an das Script zu machen: Die filename-Variable muss auf den in die c-icap.conf eingetragenen Wert gesetzt werden, in unserem Fall also statt

$filename="/srv/www/htdocs/downloads/".$args{"file"};

den aktuellen Pfad

$filename="/srv/www/downloads/".$args{"file"};

Danach den icap-Dienst starten. Für den Anfang kann man ihn erstmal nicht als Daemon und mit hohem debug-Level starten:

# bin/c-icap -D -N -d 10

Ein Neustart erfolgt mittels

pkill c-icap && bin/c-icap

Da dies nicht sehr elegant ist, empfiehlt sich die Verwendung eines Startscripts. Hierfür lässt sich die Vorlage unter /etc/init.d/skeleton verwenden. Ein Beispielscript ist unter c-icap.sh hinterlegt. Dann muss das Initscript noch in die einzelnen Runlevel verlinkt werden:

# update-rc.d  c-icap defaults

Danach noch squid, c-icap und clamav durchstarten, den Proxy im Browser eintragen (localhost:3128) und testweise Dateien, z.B. den altbewährten eicar-Testvirus [[1]], herunterladen (letztere sollte die Fehlermeldung “Virus found“ hervorrufen).

Sollte etwas nicht funktionieren, wird man im in ServerLog angegebenen Logfile fündig. Default ist /usr/local/c-icap/var/log/server.log .

Anmerkungen

Ein Problem ist, dass https-Dateien nicht gescannt werden, s. z.B. https://secure.eicar.org/eicar.com.txt

Außerdem sollte ein cronjob eingerichtet werden, der regelmäßig die Files im c-icap-Cache löscht. Hier ein Beispiel für die Verweildauer von 100 Tagen:

find /srv/www/downloads/ -mtime +100 | xargs rm

Nützliche Links

http://sourceforge.net/projects/c-icap/
http://www.freebsdonline.com/content/view/345/354/
http://c-icap.sourceforge.net/install.html
http://www.perl-online.com/blog/archives/937

https://wiki.squid-cache.org/ConfigExamples/ContentAdaptation/C-ICAP