<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>TommyBlue.it &#187; proxy</title>
	<atom:link href="http://www.tommyblue.it/tag/proxy/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.tommyblue.it</link>
	<description>Bombardare per la pace è un po' come trombare per la verginità...</description>
	<lastBuildDate>Tue, 24 Jan 2012 09:34:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Scansione antivirus on-the-fly attraverso il proxy</title>
		<link>http://www.tommyblue.it/2006/05/07/scansione-antivirus-on-the-fly-attraverso-il-proxy/</link>
		<comments>http://www.tommyblue.it/2006/05/07/scansione-antivirus-on-the-fly-attraverso-il-proxy/#comments</comments>
		<pubDate>Sun, 07 May 2006 09:06:27 +0000</pubDate>
		<dc:creator>TommyBlue</dc:creator>
				<category><![CDATA[How-To]]></category>
		<category><![CDATA[Informatica]]></category>
		<category><![CDATA[antivirus]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[clamav]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[squid]]></category>

		<guid isPermaLink="false">http://www.tommyblue.it/?p=412</guid>
		<description><![CDATA[Introduzione Lo scopo della guida è configurare la scansione antivirus dei dati passanti per il proxy web. Gli strumenti saranno il proxy Squid, il redirector SquidGuard e l&#8217;antivirus Clamav. Ad essi si aggiunge Apache2, a cui si appoggia lo script in Perl Viralator, che permette tutto il giochetto. Infine useremo una semplice regola di iptables. [...]]]></description>
			<content:encoded><![CDATA[<div>
<h2>Introduzione</h2>
<p>Lo scopo della guida è configurare la scansione antivirus dei dati passanti per il proxy web.<br />
Gli strumenti saranno il proxy Squid, il redirector SquidGuard e l&#8217;antivirus Clamav. Ad essi si aggiunge Apache2, a cui si appoggia lo script in Perl Viralator, che permette tutto il giochetto. Infine useremo una semplice regola di iptables.</p>
<h2>Installazione degli strumenti necessari</h2>
<p>Con Debian i pacchetti da installare sono: <strong>clamav-base clamav squid squidguard apache2</strong>.</p>
<h2>Configurazione</h2>
<h3>Apache2</h3>
<p>Apache deve gestire la scansione dei files da parte di Clamav attraverso lo script di Viralator.<br />
L&#8217;unica modifica che ho apportato nel file di configurazione di default è stata il cambiamento del path degli script cgi a <strong>/var/www/cgi-bin</strong> in cui metterò poi lo script di Viralator.</p>
<h3>Clamav</h3>
<p>Clamav non necessita di alcuna configurazione post-installazione.<br />
Potete provare la sua funzionalità con:</p>
<pre>truelite-server:~# clamscan /*
LibClamAV Warning: ********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.  ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/faq.html ***
LibClamAV Warning: ********************************************************
LibClamAV Warning: ********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.  ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/faq.html ***
LibClamAV Warning: ********************************************************
/bin/bash: OK
/bin/cat: OK
/bin/chgrp: OK
/bin/chmod: OK
/bin/chown: OK
[...]</pre>
<p>Non preoccupatevi dei messaggi minatori, vi avvertono solo che non avete l&#8217;ultima versione del programma (se, come me, usate Debian Sarge&#8230;)<br />
Una cosa molto utile è impostare l&#8217;auto aggiornamento del database antivirus. Il metodo che ho ritenuto più giusto in fase di installazione è &#8220;a mano&#8221;, altrimenti potete usare il demone, che però girerà di continuo sul pc (utile per i server).<br />
Per aggiornare a mano l&#8217;antivirus il comando è semplicemente:</p>
<pre>macondo:~# freshclam
ClamAV update process started at Wed Nov  2 16:09:56 2005
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.84 Recommended version: 0.87
DON'T PANIC! Read http://www.clamav.net/faq.html
main.cvd is up to date (version: 34, sigs: 39625, f-level: 5, builder: tkojm)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 4, recommended = 5
DON'T PANIC! Read http://www.clamav.net/faq.html
daily.cvd is up to date (version: 1158, sigs: 1300, f-level: 6, builder: diego)
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Current functionality level = 4, recommended = 6
DON'T PANIC! Read http://www.clamav.net/faq.html</pre>
<p>Anche qui niente panico, gli WARNING sono dovuti alla versione un po&#8217; obsoleta del pacchetto.</p>
<h3>SquidGuard</h3>
<p>Il file di configurazione di SquidGuard è <strong>/etc/squid/squidGuard.conf</strong>.<br />
La configurazione che vi propongo fa sì che la scansione avvenga solo su alcuni tipi di file.<br />
Ecco come:</p>
<pre>macondo:~# mkdir -p /etc/squid/squidGuard/db/deny
macondo:~# vi /etc/squid/squidGuard/db/deny/files</pre>
<p>Ecco il contenuto del file <strong>files</strong>:</p>
<pre>(\.exe$|\.com$|\.bat$|\.zip$|\.tgz$|\.gz$|\.bz2$)</pre>
<p>Aggiungete tutte le estensioni di cui volete effettuare la scansione.<br />
A questo punto modificate il file <strong>/etc/squid/squidGuard.conf</strong>:</p>
<pre>dbhome /etc/squid/squidGuard/db
logdir /var/log/squid

dest files {
        expressionlist deny/files
}

acl {
        default {
                pass !files all
                redirect

http://[PROXY]/cgi-bin/viralator.cgi?url=%u

        }
}</pre>
<p>Al posto di [PROXY] dovete mettere l&#8217;IP o l&#8217;hostname del proxy che provvederà a lanciare lo script viralator.cgi</p>
<h3>Squid</h3>
<p>Il file di configurazione di Squid è <strong>/etc/squid/squid.conf</strong>, il contenuto è questo:</p>
<pre>#
# Redirect verso SquidGuard
#

redirect_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
redirect_children 10

#
# Proxy trasparente
#

httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
httpd_accel_single_host off

#
# Resto della configurazione
#

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY
cache_mem 256 MB
maximum_object_size 204800 KB
maximum_object_size_in_memory 32 KB
cache_dir ufs /var/spool/squid  1000 16 256
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern .               0       20%     4320
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl to_localhost dst 127.0.0.0/8
acl Safe_ports port 80          # http
acl Safe_ports port 20          # ftp
acl Safe_ports port 21          # ftp
acl Safe_ports port 22          # ssh
acl Safe_ports port 443 563     # https, snews
acl Safe_ports port 70          # gopher
acl Safe_ports port 110         # pop3
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 Safe_ports port 631         # cups
acl Safe_ports port 873         # rsync
acl Safe_ports port 901         # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports

#
# ATTENZIONE: Modificare con l'ip della propria rete
#

acl our_networks src 192.168.10.0/255.255.255.0
http_access allow our_networks
http_access allow localhost
http_access deny all
http_reply_access allow all
icp_access allow all
coredump_dir /var/spool/squid
extension_methods REPORT MERGE MKACTIVITY CHECKOUT</pre>
<h3>Viralator</h3>
<p>A questo punto potete scaricare il pacchetto di Viralator da <a href="http://viralator.sourceforge.net/" target="_blank">http://viralator.sourceforge.net/</a> e scompattarlo.<br />
Ai file scaricati sostituite <a href="http://www.lilik.it/%7Etommyblue/modules/appunti/files/viralator.tar.bz2">questi</a> file che ho modificato per correggere alcuni errori (i file derivano dalla <strong>versione 0.9.4</strong>).</p>
<p>Quindi copiate il file <strong>viralator.cgi</strong> in <strong>/var/www/cgi-bin</strong> (o comunque nel path per gli script cgi che avete impostato in Apache 2) e la cartella <strong>etc/viralator</strong> in <strong>/etc/viralator</strong>.</p>
<pre>default_language -&gt; italian.txt
servername -&gt; [nome del server]
antivirus -&gt; CLAMAV
virusscanner -&gt; clamscan
scannerpath -&gt; /usr/bin
viruscmd -&gt; --verbose --stdout
alert -&gt; FOUND
scannersummary -&gt; true
downloads -&gt; /var/www/downloads
downloadsdir -&gt; /downloads
popupfast -&gt; false
popupback -&gt; true
popupwidth -&gt; 600
popupheight -&gt; 400
filechmod -&gt; 644
secret -&gt; [psw]
BAR -&gt; img/bar.png
PROGRESS -&gt; img/progress.png</pre>
<p>Da notare la cartella <strong>/var/www/downloads</strong> per il download temporaneo. Create questa cartella e datele i giusti permessi affinchè Viralator (quindi Apache) possa scriverci:</p>
<pre>macondo:~# mkdir /var/www/downloads
macondo:~# chown www-data.www-data /var/www/downloads
macondo:~# chmod 775 /var/www/downloads</pre>
<p>Tale cartella dovrà essere raggiungibile via browser col path <strong>/downloads</strong>.<br />
Controllate anche che i percorsi dei file di Clamav siano corretti e modificate anche <strong>[nome del server]</strong> e <strong>[psw]</strong>.<br />
Infine copiate i file <strong>bar.png</strong> e <strong>progress.png</strong> dalla cartella in cui avete scompattato Viralator ad una posizione raggiungibile dal browser.</p>
<h2>IpTables</h2>
<p>Eccoci alla fine, come preannunciato abbiamo bisogno solo di una semplice regola di IpTables. Il suo scopo è quello di creare un cosiddetto <strong>Proxy trasparente</strong>. Ovvero le richieste degli utenti saranno automaticamente girate verso la porta 3128 (Squid) senza che essi debbano configurare l&#8217;uso del proxy nel loro pc o browser.<br />
La regola è la seguente:</p>
<pre>macondo:~# iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.1.0/24 -d ! 192.168.1.0/24 --dport 80 -j REDIRECT --to-port 3128</pre>
<p>In questo esempio la rete è 192.168.1.0/24, il proxy sarà in ascolto sull&#8217;interfaccia eth0 e la redirezione avverrà solo sui pacchetti la cui provenienza sia la rete e la loro destinazione invece non lo sia.</p>
<h2>Riavvio e Test</h2>
<p>Riavviate Apache e Squid, quindi potete provare la funzionalità del marchingegno tentando di scaricare qualche file la cui estensione sia tra quelle che abbiamo impostato in <strong>/etc/squid/squidGuard/db/deny/files</strong>.<br />
Come potrete vedere sarà effettuata la scansione sul file e solo dopo vi sarà permesso di salvarlo sul vostro pc.<br />
Sul sito di Viralator è anche possibile scaricare un falso virus come test, provate anche questo.</p>
<h2>Errori comuni</h2>
<h3>Il file viene scaricato anche se infetto</h3>
<p>Se Viralator non trova l&#8217;antivirus Clamav si comporta in maniera un po&#8217; particolare, ovvero permette il download senza effettuare la scansione.<br />
Fate quindi attenzione che nel file <strong>/etc/viralator/viralator.conf</strong> sia il path che il nome dell&#8217;eseguibile siano corretti.<br />
Ad esempio nel file di configurazione originale viene cercato l&#8217;eseguibile clamdscan in /usr/local/bin. in Debian il file è clamscan e si trova il /usr/bin.</p>
<h3>&#8220;You cannot download from this site! The given url is not valid. Please contact your system administrator for details.&#8221;</h3>
<p>Le pagine indirizzate al vostro server proxy non devono essere girate dalla porta 80 alla 3128, state quindi attenti che nel comando di iptables l&#8217;opzione <strong>-d ! 192.168.1.0/24</strong> sia corretta e l&#8217;ip della rete sia quello corretto.</p>
<h3>FAQ</h3>
<p>Per qualunque altra domanda guardate le FAQ nel sito di Viralator <a href="http://viralator.sourceforge.net/" target="_blank">http://viralator.sourceforge.net/</a></p>
<h2>Un&#8217;alternativa: SCAVR</h2>
<p>Un analogo risultato dovrebbe essere ottenuto con SCAVR (Squid ClamAV Redirector, un progetto che non sembra essere molto maturo).<br />
Gli strumenti necessari sono: <strong>Python, PyClamav, Clamav, Squid e SCAVR</strong>.</p>
<h3>Python e PyClamav</h3>
<p>In Debian dovreste aver già installato Python, altrimenti potete installalo insieme agli strumenti necessari alla compilazione dei nuovi moduli con:</p>
<pre>macondo:~# apt-get install python2.3-setuptools</pre>
<p>Serve anche il pacchetto di sviluppo di Clamav:</p>
<pre>macondo:~# apt-get install libclamav-dev</pre>
<p>A questo punto scaricare PyClamav e scompattatelo (il pacchetto Debian in testing e unstable non funziona sulla versione stabile per alcune dipendenze mancate).<br />
Entrate quindi nella cartella, compilate e installate il modulo <strong>pyclamav</strong>:</p>
<pre>macondo:~# python setup.py build
running build
running build_ext
building 'pyclamav' extension
creating build
creating build/temp.linux-i686-2.3
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -I/usr/local/include -I/usr/include/python2.3 -c pyclamav.c -o build/temp.linux-i686-2.3/pyclamav.o
creating build/lib.linux-i686-2.3
gcc -pthread -shared build/temp.linux-i686-2.3/pyclamav.o -lclamav -o build/lib.linux-i686-2.3/pyclamav.so

macondo:~# python setup.py install
running install
running build
running build_ext
running install_lib
copying build/lib.linux-i686-2.3/pyclamav.so -&gt; /usr/lib/python2.3/site-packages</pre>
<p>A questo punto <a href="http://www.jackal-net.at/tiki-list_file_gallery.php?galleryId=3" target="_blank">scaricate il pacchetto di SCAVR</a> e sscompattatelo. Quindi spostate il file di configurazione nella cartella <strong>/etc/squid</strong> e lo script in una cartella di binari (es. <strong>/usr/local/bin</strong>).<br />
Assicuratevi che lo script abbia i giusti permessi:</p>
<pre>macondo:~# chmod +x /usr/local/bin/SquidClamAV_Redirector.py</pre>
<p>Bene, bisogna modificare il file di configurazione <strong>/etc/squid/SquidClamAV_Redirector.conf</strong> secondo le proprie esigenze.</p>
<p>Adesso si può provare il funzionamento provando a lanciare lo sript:</p>
<pre>macondo:~# /usr/local/bin/SquidClamAV_Redirector.py -c /etc/squid/SquidClamAV_Redirector.conf
LibClamAV Warning: ********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.  ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/faq.html ***
LibClamAV Warning: ********************************************************
LibClamAV Warning: ********************************************************
LibClamAV Warning: ***  This version of the ClamAV engine is outdated.  ***
LibClamAV Warning: *** DON'T PANIC! Read http://www.clamav.net/faq.html ***
LibClamAV Warning: ********************************************************
[Ctrl-D per uscire]</pre>
<p>Se non ricevete errori lo script sta funzionando.</p>
<p>Per finire non resta che configurare <strong>/etc/squid/squid.conf</strong> per la redirezione verso SCAVR, aggiungendo le righe seguenti:</p>
<pre>redirect_program /usr/local/bin/SquidClamAV_Redirector.py -c /etc/squid/SquidClamAV_Redirector.conf
redirect_children 5</pre>
<p>Finora non sono riuscito a farelo funzionare correttamente: lo script analizza effettivamente solo i file specificati ma, anche se contengono virus, vengono poi fatti scaricare sul client.</p>
<h2>Risorse</h2>
<p><a href="http://viralator.sourceforge.net/" target="_blank">Viralator</a><br />
<a href="http://www.clamav.net/" target="_blank">Clamav</a><br />
<a href="http://www.squid-cache.org/" target="_blank">Squid</a><br />
<a href="http://www.squidguard.org/" target="_blank">SquidGuard</a><br />
<a href="http://xael.org/norman/python/pyclamav/index.html" target="_blank">PyClamav</a><br />
<a href="http://www.jackal-net.at/tiki-read_article.php?articleId=1" target="_blank">SCAVR</a><br />
<a href="http://www.apache.org/" target="_blank">Apache</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.tommyblue.it/2006/05/07/scansione-antivirus-on-the-fly-attraverso-il-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

