Squid + Clamav

Improvisa :: Noticias :: Squid  ClamavSi deseas añadir una protección antivírica a tu proxy-cache Squid, en este artículo te enseñamos cómo hacerlo.En concreto, veremos cómo redirigir todas las peticiones de tu red a Squid, que a su vez las filtrará por ClamAV,gracias al script Scavr (Squid Clamav redirector). Del mismo autor que «Servidor de Correo :: Postfix»

PROXY TRANSPARENTE: SQUID PYTHON-CLAMAV SCAVR CLAMAV

 

INTRODUCCIÓN:

Explicare la instalación del proxy transparente y como aplicarle una herramienta que sirva para que las páginas visitadas que contengan virus (imágenes, zip, rar, exe, …..) no se muestren y las redirija a una pagina que nos crearemos avisándonos de la pagina que tiene el virus y el virus contiene.

 

Las ventajas del proxy transparente no voy a contarlas aquí.

 

Las versiones que he utilizado han sido las siguientes:

 

Debian Sarge (estable a 11-abril-2006)

Squid 2.5.9-10sarge2

Python-Clamav 0.3.0-1 (de la versión inestable, no esta en la estable 🙁 )

Scavr 1.8.0

Clamav 0.88.1-0volatile

 

Para el código que veréis en el mini-howto utilizo lo siguiente: código que tecleo ( NEGRITA CURSIVA ).

Para el código que muestra la pantalla ( CURSIVA ).

 

INTALACIÓN DE SISTEMA :

La instalación de Debian ha sido la más básica de todas, ya iremos agregando paquetes. Lo único decir que como siempre he cogido la versión estable.

 

Editaremos el archivo de configuración del apt para que coja los archivos de clamav de otro repositorio:

 

squid2:~# vi /etc/apt/sources.list

 

deb ftp://ftp.rediris.es/debian stable main contrib non-free

 

deb http://ftp2.de.debian.org/debian-volatile sarge/volatile main

 

deb http://security.debian.org/ stable/updates main

 

La línea que he agregado es la segunda.

 

INSTALACION DE SQUID Y CONFIGURACION

La instalación de Squid es muy simple, algo mas complicado es su configuración, empecemos:

 

squid2:~# apt-get install squid squid-common

..

 

Una vez instalado configurémosle, decir que el squid es un proxy y como tal podemos utilizarlo de distintas formas, este manual configurara squid para que sea completamente transparente a los usuarios, es decir no tendremos que configurar nada en los usuarios de la red, todas las peticiones que reciba la maquina por el puerto 80 las redirigirá al puerto por defecto del squid, el 3218.

 

El archivo de configuración de Squid es /etc/squid/squid.conf, editémosle y veremos un gran archivo:

 

Echadle un vistazo para que veáis la multitud de opciones que tiene este proxy.

 

Yo os pondré la configuración del mío y explicare para que sirve cada opción.

 

squid2:~# vi /etc/squid/squid.conf

acl QUERY urlpath_regex cgi-bin ?

acl avi urlpath_regex -i .avi$

acl mpeg urlpath_regex -i .m1v$ .mpeg$ .mpg$

acl mpeg2 urlpath_regex -i .m2v$ .vob$

acl mpeg_audio urlpath_regex -i .mpa$ .mp2$ .mp3$ .aac$

acl asf urlpath_regex -i .asf$ .wma$ .asx$ .wmv$

no_cache deny avi

no_cache deny mpeg

no_cache deny mpeg2

no_cache deny mpeg_audio

no_cache deny asf

no_cache deny QUERY

cache_mem 16 MB

maximum_object_size 36864 KB

cache_dir ufs /var/spool/squid 25000 16 256

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

http_access allow manager localhost

http_access deny manager

http_access allow localhost

http_access allow all

cache_mgr administrador@tusitio.com

httpd_accel_host virtual

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

 

Perfecto, os voy explicando, en este archivo podemos ir haciendo diferentes listas (acl) y luego realizar una opción sobre ellas, véase " acl avi urlpath_regex -i .avi$" y luego "no_cache deny avi" estamos creando una lista que se llama avi donde se cogerán todos los archivos con extensión avi y no cachearemos el contenido de esa lista, es decir que nuestro proxy cache no almacenara AVI.

 

La línea maxium_object_size indica cual será el objeto mas grande que almacenaremos, en mi casa de 35 mb, todo lo que le supere no se cacheara.

Otra línea muy importante es cache_dir:

 

Os pongo lo que dice el manual sobre esta línea para que así podáis decidir como hacer vuestra base de datos:

 

# TAG: cache_dir

# Usage:

#

# cache_dir Type Directory-Name Fs-specific-data [options]

#

# You can specify multiple cache_dir lines to spread the

# cache among different disk partitions.

#

# Type specifies the kind of storage system to use. Only "ufs"

# is built by default. To eanble any of the other storage systems

# see the –enable-storeio configure option.

#

# ‘Directory’ is a top-level directory where cache swap

# files will be stored. If you want to use an entire disk

# for caching, this can be the mount-point directory.

# The directory must exist and be writable by the Squid

# process. Squid will NOT create this directory for you.

#

# The ufs store type:

#

# "ufs" is the old well-known Squid storage format that has always

# been there.

#

# cache_dir ufs Directory-Name Mbytes L1 L2 [options]

#

# ‘Mbytes’ is the amount of disk space (MB) to use under this

# directory. The default is 100 MB. Change this to suit your

# configuration. Do NOT put the size of your disk drive here.

# Instead, if you want Squid to use the entire disk drive,

# subtract 20% and use that value.

#

# ‘Level-1’ is the number of first-level subdirectories which

# will be created under the ‘Directory’. The default is 16.

#

# ‘Level-2’ is the number of second-level subdirectories which

# will be created under each first-level directory. The default

# is 256.

#

# The aufs store type:

#

# "aufs" uses the same storage format as "ufs", utilizing

# POSIX-threads to avoid blocking the main Squid process on

# disk-I/O. This was formerly known in Squid as async-io.

#

# cache_dir aufs Directory-Name Mbytes L1 L2 [options]

#

# see argument descriptions under ufs above

#

# The diskd store type:#

# "diskd" uses the same storage format as "ufs", utilizing a

# separate process to avoid blocking the main Squid process on

# disk-I/O.

#

# cache_dir diskd Directory-Name Mbytes L1 L2 [options] [Q1=n] [Q2=n]

#

# see argument descriptions under ufs above

#

# Q1 specifies the number of unacknowledged I/O requests when Squid

# stops opening new files. If this many messages are in the queues,

# Squid won’t open new files. Default is 64

#

# Q2 specifies the number of unacknowledged messages when Squid

# starts blocking. If this many messages are in the queues,

# Squid blocks until it receives some replies. Default is 72

#

# When Q1 < Q2 (the default), the cache directory is optimized

# for lower response time at the expense of a decrease in hit

# ratio. If Q1 > Q2, the cache directory is optimized for

# higher hit ratio at the expense of an increase in response

# time.

#

# The coss store type:

#

# block-size=n defines the "block size" for COSS cache_dir’s.

# Squid uses file numbers as block numbers. Since file numbers

# are limited to 24 bits, the block size determines the maximum

# size of the COSS partition. The default is 512 bytes, which

# leads to a maximum cache_dir size of 512<<24, or 8 GB. Note

# you should not change the coss block size after Squid

# has written some objects to the cache_dir.

#

# Common options:

#

# read-only, this cache_dir is read only.

#

# max-size=n, refers to the max object size this storedir supports.

# It is used to initially choose the storedir to dump the object.

# Note: To make optimal use of the max-size limits you should order

# the cache_dir lines with the smallest max-size value first and the

# ones with no max-size specification last.

#

# Note that for coss, max-size must be less than COSS_MEMBUF_SZ

# (hard coded at 1 MB).

#

#Default:

# cache_dir ufs /var/spool/squid 100 16 256

 

Yo he utilizado el sistema de archivos UFS, la he dejado en /var/spool/squid y he utilizado 25 gb en 16 niveles con 256 subniveles cada nivel. Cada nivel primario me ocupa 1,5 gb.

 

No utilicéis todo el disco para cache, ya que su rendimiento bajara de una manera considerable y en vez de ganar, perderemos tiempo. Según dice el manual debemos usar el 80%, yo he usado el 85%.

 

Mas cosas que tenemos que comentar sobre el archivo de configuración de Squid, a quien le damos permisos para utilizar nuestra cache. Yo se lo permito a toda mi red con las líneas

 

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

http_access allow manager localhost

http_access deny manager

http_access allow localhost

http_access allow all

cache_mgr administrador@tusitio.com

httpd_accel_host virtual

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

 

Para realizar cambios sobre la configuración miraros bien el archivo inicial squid.conf, ya que se pueden conseguir muchas cosas, como por ejemplo que todas las mañanas visite una pagina (por ejemplo la de noticias del google) o compartir caches con otros servidores, un largísimo etcétera.

 

Después de dejar como queremos el fichero de configuración reiniciaremos el demonio de squid:

 

squid2:/# /etc/init.d/squid restart

Restarting proxy server: squid.

 

 

 

CONFIGURACION DE IPTABLES

Utilizaremos el iptable que lleva nuestro kernel para redirigir todo lo que llega a nuestro puerto 80 al puerto del Squid 3128.

 

Crearemos el archivo que contendrá nuestra configuración:

 

squid2:~# vi /etc/init.d/firewall.sh

#!/bin/sh

##ScripT de Iptables para hacer forward del puerto 80 y mandarlo al squid

 

# Binario Iptables

IPTABLES="iptables"

 

# Redes

REDLOCAL="10.19.4.0/24"

 

# Interfaces

IF_LOC=eth0

 

# IP’s

IP_LOC=`ifconfig $IF_LOC | grep inet | cut -d : -f 2 | cut -d -f 1`

 

####################################

##### FUNCION ‘FLUSH_IPTABLES’ #####

####################################

flush_iptables() {

 

echo "Limpiando posibles configuraciones previas…"

#

# reset the default policies in the filter table.

#

$IPTABLES -P INPUT ACCEPT

$IPTABLES -P FORWARD ACCEPT

$IPTABLES -P OUTPUT ACCEPT

#

# reset the default policies in the nat table.

#

$IPTABLES -t nat -P PREROUTING ACCEPT

$IPTABLES -t nat -P POSTROUTING ACCEPT

$IPTABLES -t nat -P OUTPUT ACCEPT

 

#

# reset the default policies in the mangle table.

#

$IPTABLES -t mangle -P PREROUTING ACCEPT

$IPTABLES -t mangle -P OUTPUT ACCEPT

 

#

# flush all the rules in the filter and nat tables.

#

$IPTABLES -F

$IPTABLES -t nat -F

$IPTABLES -t mangle -F

#

# erase all chains that’s not default in filter and nat table.

#

$IPTABLES -X

$IPTABLES -t nat -X

$IPTABLES -t mangle -X

} # Fin función flush iptables

 

####################################

##### FUNCION ‘START_IPTABLES’ #####

####################################

start_iptables()

{

 

echo "Configuración existente de interfaces de red:"

echo " – Interfaz LAN: $IF_LOC – $IP_LOC"

 

#RESETEO IPTABLES

flush_iptables

 

#POLITICAS POR DEFECTO

iptables -P INPUT ACCEPT

iptables -P OUTPUT ACCEPT

iptables -P FORWARD ACCEPT

iptables -t nat -P PREROUTING ACCEPT

iptables -t nat -P POSTROUTING ACCEPT

 

#OPCIONES DE SYSCTL

echo "Configurando las opciones sysctl…"

#Habilita el forwarding en el kernel

echo 1 > /proc/sys/net/ipv4/ip_forward

#Deshabilita ataques de IP Spoofing

echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter

#No responde a broadcast dirigidos (Smurf-Amplifier-Protection)

echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#Bloquea source routing

echo 0 > /proc/sys/net/ipv4/conf/all/accept_source_route

#Elimina timestamps

echo 0 > /proc/sys/net/ipv4/tcp_timestamps

#Habilita SYN Cookies

#echo 1 > /proc/sys/net/ipv4/tcp_syncookies

#Elimina redirects

#echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

#Habilita bad error message protection

echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#Log martians (paquetes con direcciones no validas)

echo 1 > /proc/sys/net/ipv4/conf/all/log_martians

#Set out local port range

echo "32768 61000" > /proc/sys/net/ipv4/ip_local_port_range

#Reduce la posbilidad de ataques DoS reduciendo timeouts

echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout

echo 2400 > /proc/sys/net/ipv4/tcp_keepalive_time

echo 0 > /proc/sys/net/ipv4/tcp_window_scaling

echo 0 > /proc/sys/net/ipv4/tcp_sack

 

#REGLAS

iptables -t nat -A PREROUTING -s 0/0 -d 0/0 -p tcp –dport 80 -j REDIRECT –to-port 3128

 

} # Fin función start_iptables

 

 

case "$1" in

stop)

echo "Parando el Firewall… "

flush_iptables

echo "HECHO"

;;

status)

echo ""

echo "###################"

echo "## Tabla: filter ##"

echo "###################"

$IPTABLES –list

echo ""

echo "################"

echo "## Tabla: nat ##"

echo "################"

$IPTABLES -t nat –list

echo ""

echo "###################"

echo "## Tabla: mangle ##"

echo "###################"

$IPTABLES -t mangle –list

echo ""

;;

restart|reload)

$0 stop $2

$0 start $2

;;

start)

echo "Arrancando el Firewall… "

start_iptables

echo "HECHO"

;;

*)

echo "Modo de uso: $0 (start|stop|restart|status)"

exit 1

;;

esac

 

 

La única regla que aplico es la redirección de HTTP, no FTP, ni HTTPS (seria ir añadiendo líneas como la que veis con el dport que deseemos). El script parece un poco complicado pero ahora podemos usarlo con /etc/init.d/firewall.sh (start|stop|restart|status)

 

Lo único que hace este router es esto, redirigir lo que entra por el 80, todo lo demás se lo pasara a su puerta de enlace, en mi caso al router que me puso telefónica. Por que digo esto, porque todos los usuarios tendrán que tener como puerta de enlace la maquina squid que estamos creando. Si un usuario visita google, squid2 (la maquina que estamos creando) realizara la petición a google (no nuestro usuario) la almacenara en la cache y se la dacha a nuestro usuario. Si por ejemplo pide una archivo en un servidor ftp, squid simplemente redirigirá la petición al siguiente router.

 

Le damos permisos de ejecución al script que hemos creado:

 

squid2:/# chmod x /etc/init.d/firewall.sh

 

Debemos iniciar el firewall cada vez que se inicie la maquina, se puede añadir en mil sitios yo lo he hecho de esta forma, creo un link a /etc/init.d/firewall.sh en /etc/rc2.d

 

squid2:/# ln -s /etc/init.d/firewall.sh /etc/rc2.d/S95firewall.sh

 

Perfecto cada vez que iniciemos nos deberá arrancar el firewall nuevo.

 

Comprobemos que el firewall funciona:

 

squid2:/# /etc/init.d/firewall.sh restart

Parando el Firewall…

Limpiando posibles configuraciones previas…

HECHO

Arrancando el Firewall…

Configuración existente de interfaces de red:

– Interfaz LAN: eth0 – 10.19.4.25

Limpiando posibles configuraciones previas…

Configurando las opciones sysctl…

HECHO

 

squid2:/# iptables -L

Chain INPUT (policy ACCEPT)

target prot opt source destination

 

Chain FORWARD (policy ACCEPT)

target prot opt source destination

 

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

 

squid2:/# iptables -t nat -L

Chain PREROUTING (policy ACCEPT)

target prot opt source destination

REDIRECT tcp — anywhere anywhere tcp dpt:www redir ports 3128

 

Chain POSTROUTING (policy ACCEPT)

target prot opt source destination

 

Chain OUTPUT (policy ACCEPT)

target prot opt source destination

 

Perfecto justo lo que queríamos.

 

Ya podemos comprobar si nos está haciendo de cache nuestro nuevo squid.

 

Cambiaremos la configuración en una maquina de algún usuario y le pondremos que el router por defecto es la maquina squid. Previamente le tendremos que haber dicho a nuestro squid que su puerta de enlace es la que nos de acceso a internet.

 

squid2:/# vi /etc/network/interfaces

# This file describes the network interfaces available on your system

# and how to activate them. For more information, see interfaces(5).

 

# The loopback network interface

auto lo

iface lo inet loopback

 

# The primary network interface

auto eth0

iface eth0 inet static

address 10.19.4.25

network 10.19.4.0

netmask 255.255.255.0

broadcast 10.19.4.255

gateway 10.19.4.172

 

squid2:/# /etc/init.d/networking restart

Setting up IP spoofing protection: rp_filter.

Reconfiguring network interfaces…SIOCDELRT: No such process

ifup: interface lo already configured

done.

 

Ahora debería funcionarnos a la perfección el proxy transparente.

 

Podemos ver como va creciendo la base de datos de squid con estos comandos:

 

squid2:~# du -hlsc /var/spool/squid/*

1,3M /var/spool/squid/00

1,1M /var/spool/squid/01

1,1M /var/spool/squid/02

1,1M /var/spool/squid/03

1,1M /var/spool/squid/04

1,1M /var/spool/squid/05

1,1M /var/spool/squid/06

1,1M /var/spool/squid/07

1,1M /var/spool/squid/08

1,1M /var/spool/squid/09

1,1M /var/spool/squid/0A

1,1M /var/spool/squid/0B

1,1M /var/spool/squid/0C

1,1M /var/spool/squid/0D

1,1M /var/spool/squid/0E

1,1M /var/spool/squid/0F

4,0K /var/spool/squid/swap.state

17M total

 

aquí vemos los 16 niveles del archivo de configuración.

 

Hasta aquí es la parte obligatoria para tener el proxy transparente con Squid, lo que cuento a partir de ahora es completamente opcional, pero recomendable, instalaremos Sarg para hacer la administración de los logs de Squid amigable, Sarg también nos dacha los porcentajes de visitas cacheadas así como las que ha tenido que salir a Internet a por nuestras peticiones. Instalaremos también el antivirus para los que tengan usuarios en windows.

 

INSTALACION DE APACHE Y SARG Y CONFIGURACION

 

Sarg como acabo de decir sirve para que visitemos y controlemos de una forma amigable de los logs de Squid. Al basarse en Web, necesitaremos instalar Apache en nuestro servidor de Squid y luego instalaremos Sarg.

 

Comencemos con la instalación de Apache, decir que instalare también php4, para su posterior utilización con clamav (antivirus) si no vais a realizar esta instalación no es necesario que instaléis php4:

 

squid2:/# apt-get install apache apache-common apache2-utils libapache-mod-php4 libapr0 libexpat1 libzzip-0-12 php4 php4-common ucf

 

Cuando instalemos apache nos preguntara si queremos utilizar suExec, yo le digo que no.

 

Ya podemos visitar nuestro nuevo servidor web, http://direccionip

 

Configurémoslo para que ejecute código php, editaremos el archivo de configuración de apache:

 

squid2:/# vi /etc/apache/httpd.conf

 

Buscaremos una línea que esta comentada y pone:

 

# And for PHP 4.x, use:

#

# AddType application/x-httpd-php .php

# AddType application/x-httpd-php-source .phps

 

Descomentaremos las dos ultimas líneas

 

Perfecto, nuestro servidor apache ya es capaz de ejecutar código php.

 

Instalaremos ahora Sarg:

 

squid2:/# apt-get install defoma libfreetype6 libgd2-noxpm libjpeg62 libpng12-0 sarg ttf-bitstream-vera

 

Para configurar Sarg editaremos su archivo de configuración y cambiaremos las siguientes líneas para dejarlas como las pongo aquí, las demás no las toquéis:

 

squid2:/# vi /etc/squid/sarg.conf

 

language Spanish

title "Informes de Acceso a Squid"

date_format e

 

Estas han sido las únicas que he tocado, podemos incluir nodos para que no los saque en el informe (archivo /etc/squid/squid.nodes), si queréis hacer mas cambios leeros el archivo de configuración de Sarg, tiene mas posibilidades.

 

Añadiremos al final del archivo de configuración de apache las siguientes líneas:

 

squid2:/# vi /etc/apache/httpd.conf

<Directory "/var/www/squid-reports">

AuthName "Informes de Acceso a Squid"

AuthType Basic

AuthUserFile /etc/.htpasswdsquidreports

require valid-user

Options Indexes FollowSymLinks

AllowOverride None

Order allow,deny

Allow from all

</Directory>

 

Reiniciaremos apache y squid

 

squid2:/# /etc/init.d/apache restart

squid2:/# /etc/init.d/squid restart

 

Tenemos que crear el password para poder entrar a visitar los reports, cambiad lo de USUARIO por el que vosotros queráis:

 

squid2:/# htpasswd -c -m /etc/.htpasswdsquidreports USUARIO

 

Después de haber tecleado la password ejecutemos SARG para que nos haga el primer report, si todo va bien deberías haber hecho un para de pruebas un poco mas arriba, pues debe crearnos el report con esas entradas.

 

squid2:/# sarg

 

Perfecto, lo hemos ejecutado, intentemos ahora visitar la web en http://ipservidorsquid/squid-reports/index.html

 

¿Todo bien?, deciros que la instalación de Sarg añade automáticamente una tarea que diariamente se ejecuta, es decir todas las mañanas tendremos nuestro nuevo informe.

INSTALACION DE CLAMAV

 

Ahora instalaremos el antivirus para su posterior actualización:

 

squid2:/#apt-get install clamav clamav-base clamav-daemon clamav-freshclam libclamav1 libcurl3 libgmp3 arj unzoo unrar lha

 

Editaremos el archivo de configuración de Clamav para añadir la línea ScanRAR y dejarlo como os lo pongo aquí abajo:

 

squid2:/# vi /etc/clamav/clamd.conf

#Automatically Generated by clamav-base postinst

#To reconfigure clamd run #dpkg-reconfigure clamav-base

#Please read /usr/share/doc/clamav-base/README.Debian.gz for details

LocalSocket /var/run/clamav/clamd.ctl

FixStaleSocket

User clamav

AllowSupplementaryGroups

ScanMail

ScanArchive

ScanRAR

ArchiveMaxRecursion 5

ArchiveMaxFiles 1000

ArchiveMaxFileSize 10M

ArchiveMaxCompressionRatio 250

ReadTimeout 180

MaxThreads 12

MaxConnectionQueueLength 15

LogFile /var/log/clamav/clamav.log

LogTime

LogFileMaxSize 0

PidFile /var/run/clamav/clamd.pid

DatabaseDirectory /var/lib/clamav

SelfCheck 3600

ScanOLE2

ScanPE

DetectBrokenExecutables

ScanHTML

ArchiveBlockMax

 

Podemos ver las actualizaciones de las firmas de virus editando el log de Freshclam, lo hara solo cada par de horas, la instalación añade en el cron la visita al servidor para su actualización:

 

squid2:/# vi /var/log/clamav/freshclam.log

————————————–

freshclam daemon 0.88.1 (OS: linux-gnu, ARCH: i386, CPU: i386)

ClamAV update process started at Tue Apr 11 20:52:16 2006

main.cvd is up to date (version: 37, sigs: 46700, f-level: 7, builder: ccordes)

daily.cvd updated (version: 1393, sigs: 3875, f-level: 7, builder: arnaud)

Database updated (50575 signatures) from db.es.clamav.net (IP: 194.65.79.153)

Clamd successfully notified about the update.

————————————–

 

 

 

INSTALACION DE PYTHON CLAMAV

 

Para esta instalación me he tenido que bajar el paquete deb de la versión testing, no esta en la estable 🙁

 

En la pagina http://packages.debian.org/testing/python/python-clamav podéis ver las dependencias que tiene este paquete, las cumplimos todas, la librería libc6.1 no la tenemos pero no pasa nada tira perfectamente, no hace falta nada mas que bajarnos el paquete deb e instalarlo, yo he bajado la de la versión testing para i386

 

squid2:/# dpkg -l libc6

Desired=Unknown/Install/Remove/Purge/Hold

| Estado=No/Instalado/Config-files/Unpacked/Failed-config/Half-installed

|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: mayúsc.=malo)

||/ Nombre Versión Descripción

===============

ii libc6 2.3.2.ds1-22 GNU C Library: Shared libraries and Timezone data

 

squid2:/# dpkg -l libclamav1

Desired=Unknown/Install/Remove/Purge/Hold

| Estado=No/Instalado/Config-files/Unpacked/Failed-config/Half-installed

|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: mayúsc.=malo)

||/ Nombre Versión Descripción

===============

ii libclamav1 0.88.1-0volatile2 virus scanner library

 

squid2:/cosas# mkdir /cosas

squid2:/cosas# cd /cosas

squid2:/cosas# wget http://ftp.es.debian.org/debian/pool/main/p/python-clamav/python-clamav_0.3.0-1_i386.deb

squid2:/cosas# dpkg -i python-clamav_0.3.0-1_i386.deb

Seleccionando el paquete python-clamav previamente no seleccionado.

(Leyendo la base de datos …

24321 ficheros y directorios instalados actualmente.)

Desempaquetando python-clamav (de python-clamav_0.3.0-1_i386.deb) …

Configurando python-clamav (0.3.0-1) …

 

INSTALACION DE SCAVR

 

Ahora nos toca bajarnos el Script de la pagina del autor de Scavr http://www.jackal-net.at/tiki-list_file_gallery.php?galleryId=3

 

Mirar a ver cual es la ultima versión y os la bajáis. Una vez descomprimida en nuestro servidor tendremos que hacer lo siguiente:

 

squid2:/cosas/SCAVR# cp SquidClamAV_Redirector.py /usr/local/bin

squid2:/cosas/SCAVR# chmod x /usr/local/bin/SquidClamAV_Redirector.py

squid2:/cosas/SCAVR# cp SquidClamAV_Redirector?.conf /etc/squid/

squid2:/cosas/SCAVR# cp SquidClamAV_Redirector.conf /etc/squid/

squid2:/cosas/SCAVR# chown proxy:proxy /etc/squid/SquidClamAV_Redirector.conf

 

Editaremos ahora el archivo de configuración

squid2:/ vi /etc/squid/SquidClamAV_Redirector.conf

 

Yo los únicos cambios que he hecho aquí han sido las redirecciones, si no os la queréis currar podéis dejar las que vienen por defecto, aun así como tenemos servidor web por el SARG, utilicémosle y creemos la pagina php.

 

squid2:/# vi /var/www/infeccion.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<title>!!! Pagina INFECTADA ¡¡¡</title>

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<style type="text/css">

<!–

.Estilo1 {font-family: Verdana, Arial, Helvetica, sans-serif}

.Estilo2 {

color: #FF0000;

font-weight: bold;

}

.Estilo3 {color: #FF0000}

–>

</style>

</head>

 

<body>

<div align="center">

<p><img src="http://virus.jackal-net.at/clam.png" width="200" height="200"><br>

<br>

<span class="Estilo2">¡¡¡ RESTRINGIDO !!!</span></span></p>

<p class="Estilo1">Esta URL<span class="Estilo3"> <?php

if ($_GET) { print $_GET[‘url’]; } ?>

</span>esta infectada con este virus:<span class="Estilo3"> <?php

if ($_GET) { print $_GET[‘virus’]; } ?>

</span></p>

<p class="Estilo1">Ponte en contacto conmigo: <a href="mailto:administrador@tusitio.com">Administrador</a> </p>

</div>

</body>

</html>

 

Ahora tenemos que decirle a Squid que redirija las paginas al antivirus, lo único que tenemos que hacer es añadir las siguientes líneas a /etc/squid/squid.conf debajo de acl localhost ……

 

squid2:/# vi /etc/squid/squid.conf

redirect_program /usr/local/bin/SquidClamAV_Redirector.py -c /etc/squid/SquidClamAV_Redirector.conf

redirect_children 5

redirector_access deny localhost

http_reply_access allow all

 

Reiniciaremos Squid:

 

squid2:/# /etc/init.d/squid restart

 

Ahora añadiremos la siguiente línea (local6.=…..) en /etc/syslog.conf, justo debajo de la línea (mail,news.none -/var/log/messages) para que nos cree el log de Scavr, dejo puesta la línea que hay que añadir y unas cuantas mas de arriba para que ubiquéis el sitio sin problema.

 

squid2:/# vi /etc/syslog.conf

#

# Some `catch-all’ logfiles.

#

*.=debug;

auth,authpriv.none;

news.none;mail.none -/var/log/debug

*.=info;*.=notice;*.=warn;

auth,authpriv.none;

cron,daemon.none;

mail,news.none -/var/log/messages

## La que esta aquí debajo es la que he añadido

local6.=info /var/log/squid/SquidClamAV_redirector.log

 

Reiniciemos el servicio para la creación de logs

 

squid2:/# /etc/init.d/sysklogd restart

 

Comprobemos que todo funciona, visitad esta pagina http://heanet.dl.sourceforge.net/sourceforge/bo2k/bo2k_1_0.zip y mirad a ver que os dice, tendria que ser algo así:

 

 

¡¡¡ RESTRINGIDO !!!

Esta URL http://heanet.dl.sourceforge.net/sourceforge/bo2k/bo2k_1_0.zip esta infectada con este virus: Trojan.Orifice2K.PI_

Ponte en contacto conmigo: administrador

 

 

Podemos visitar el log:

 

squid2:/# vi /var/log/squid/SquidClamAV_redirector.log

Apr 12 14:51:32 localhost SquidClamAV: Url: http://www.google.es/search?hl=es&q=Hola&meta= Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/sourceforge/bo2k/ Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/icons/blank.gif Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/icons/binary.gif Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/icons/back.gif Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/icons/compressed.gif Status OKAY

Apr 12 14:51:37 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/icons/unknown.gif Status OKAY

Apr 12 14:51:40 localhost SquidClamAV: Url: http://heanet.dl.sourceforge.net/sourceforge/bo2k/bo2k_1_0.zip Status Infected Trojan.Orifice2K.PI_#1

Apr 12 14:51:40 localhost SquidClamAV: Url: http://10.19.4.5/clam.png Status OKAY

 

 

 

ACLARACIONES

 

En algunas paginas tengo el siguiente problema, que si alguien es capaz de solucionarlo que me mande un mail ;-), al entrar por ejemplo en www.invertia.com por ejemplo en algunas de sus paginas me pone lo siguiente:

 

Apr 12 14:54:51 localhost SquidClamAV: Unable to get Size from Url http://www.ibercajadirecto.com?home=1: (‘http error’, 400, ‘Bad Request’, <httplib.HTTPMessage instance at 0x402d980c>)

Apr 12 14:54:51 localhost SquidClamAV: Ignored Request http://www.ibercaja.es/redireccion_externo.php?url=http://www.ibercajadirecto.com?home=1 10.19.4.34/- – GET

Apr 12 14:54:51 localhost SquidClamAV: Enforced restriction set

Apr 12 14:54:51 localhost SquidClamAV: Url: http://10.19.4.5/clam.png Status OKAY

Apr 12 14:55:41 localhost SquidClamAV: Url: http://www.google.es/ Status OKAY

 

Y me dice que tiene un virus 🙁

 

 

DESPEDIDA Y CIERRE

 

Pues nada ya esta acabado, espero que lo disfrutéis y esto valga para algo. Gracias al creador del script SCAVR, por crear el script jeje y a Alfonso de Microalcarria por su ayuda en esto del linux ;-).

 

Saludos.

 

Juanmi.