Para instalar ClamAV, habilitaremos el repositorio debian-volatile. Patra ello. introducimos la siguiente línea en /etc/apt/sources.list:
deb http://volatile.debian.org/debian-volatile etch/volatile main contrib non-freeActualizamos las fuentes:
apt-get updateInstalamos ClamAV. Necesitamos instalar tanto la posibilidad de ejecución explícita, a través de la librería compartida, como la versión demonio, con comunicacióbn TCP/IP. Para instalarlo:
apt-get install clamav clamav-daemon libclamav-dev unzoo lha unrar arj gzipEn las últimas versiones de ClamAV, la configuración por defecto está establecida muy de acorde con nuestras necesidades. De todos modos vamos a realizar unos cambios en el fichero de configuración del demonio clamd, que está en /etc/clamav/clamd.conf. Vamos a subir el tamaño máximo de los ficheros adjuntos a analizar a 15MB. Además le vamos a indicar que use el puerto 3310, pero sólo para las conexiones de la misma máquina. El fichero deberá tener las siguientes líneas (además de otras):
LogFileMaxSize 3MAVISO: Aunque en las últimas versiones no aparece, si lo hiciera, debemos comentar el uso de sockets unix. Sólo podemos utilizar un tipo de sockets, y vamos a utilizar los TCP/IP. Quedaría así:
#LocalSocket /var/run/clamav/clamd.cltAhora reiniciamos el sistema:
/etc/init.d/clamav-daemon restart
Actualizamos la base de datos de viruses
freshclam
Ya tenmemos ClamAV listo para su uso. El servicio freshclam mira cada hora si hay nuevas definiciones de virus. En caso de haberlas, las descarga y le indica al demonio clamd, de que rehaga su base de datos.
Tener en cuenta a la hora de actualizar ClamAV, que hemos modificado el ficheros de configuración. Esto quiere decir que al preguntarnos si deseamos que instale el nuevo, debemos de decirle que no. Como recomendación, hacer una copia de /etc/clamav/clamd.conf antes de actualizar.
msrbl y ClamAV
Aunque no sea propiamente su tarea, es interesante dotar a ClamAV de otrsas herramientas amén de las firmas de virus. Entre otras están las firmas digitales de ficheros e imágenes que contiene virus o SPAM. Vamos a instalar un sistema de estos en ClamAV. Para descargar los ficheros de firmas vamos a utilizar un script. He aquí cómo descargar e instalar el script.
wget -P /var/www/lhpaiak http://www.sanesecurity.co.uk/clamav/ss-msrbl.shAhora vamos a crear una tarea cron que se encarque diariamente de descargar los ficheros acualizadoz, ejecutando este script. Creamos en el direcotiro /etc/cron.d, un fichero llamado msrbl-cron con le siguiente contenido:
53 04 * * * /var/lib/clamav/ss-rbl.sh &> /dev/null
Ahora reiniciamos el demonio cron.
/etc/init.d/cron restartComo la descarga de ficheros de firmas se realiza a través de rsync, debemos habilitar el puerto TCP 873 en el cortafuegos.
Source |
Destination |
Service |
Action |
---|---|---|---|
perimetroko antibirusa / antivirus perimetral |
Internet |
rsync(TCP) (873) |
Accept |
AVISO: Verifica el comportamiento de ClamAV. No se puede uno fiar a ciegas de estos sistemas. Estás advertido.
MailScanner
Para utilizar MailScanner necesitamos tener instalados:
PERLSe supone que tenemos todo instalado, asi que adelante. Pasamos a instalar MailScanner.
apt-get install mailscanner tnefNos instala SpamAssassin automáticamente.
Konfigurazioa ez da hain automatikoa. Pila bat gauza aldatu behar ditugu /etc/MailScanner/MailScanner.conf fitxategian. Lehenengo, ClamAV-rekin lan egiteko egokituko dugu.
Virus Scanning = yesEn el fichero /etc/MailScanner/virus.scanner.conf debe aparecer esto:
Ahora lo modificamos para trabajar con Postfix. La instalación por defecto en Debian supone que el servidor de correo es Exim4. MailScanner se ejecutará con el usuario postfix.
MTA = postfixCreamos
los directorios para los mensajes entrantes y en
cuarentena, y les cambiamos el propietario.
Cambiamos el propietario de los directorios de MasilScanner.
chown postfix:postfix /var/lib/MailScannerVamos ahora a configurar los mensajes de MailScanner. Que aparezca el nombre de nuestra escuela en los mensajes de aviso. ¡Cuidado con el nombre corto! No poner '.' ni espacios ni '_'. En el nombre largo, \n significa salto de línea.
Le diremos que dé los mensajes en castellano.
Cada cuánto tiempo debe intentar revisar los mensajes entrantes? Pondremos 6 segundos. Valor por defecto.
Le diremos que use SpamAssassin y que registre el spam.
En la configuración por defecto, MailScanner no nortifica a lor remitentes, de que su correo ha sido bloqueado. Vamos a indicarle que lo haga. De todos modos, por defecto no notifica a los remitentes de virus, pues hoy en día ello es inútil.
Entre los mensajes que usa para avisar de la comprobación de los correos hay uno que sólo es un aviso de comprobación. Es decir: incluso aunque no encuentre nada malo, pone aviso en el mensaje de correo. Esto no hace mas que molestar al receptor, y, por tanto, lo quitaremos. Para ello, lo pondremos de esta forma:
Finalmente definiremos las puntuaciones de SpamAssassin y lo que debe hacer con ellas. Le diremos que considere spam los mensajes que obtengan 4 puntos. Que considere como puntuación alta superar los 7 puntos, y que los mensajes que obtengan esta puntuación sean puestos en cuarentena. Además le diremos que no analice mensajes de más de 40KB. Los mensajes de spam no suelen ser tan grandes. Las siguientes líneas quedarían así:
Max SpamAssassin Size = 40kRequired SpamAssassin Score = 4Vamos a configurar también, que SpamAssassin utilice las listas negras. Aunque hay innumerables listas, vamos a utilizar aquí la que más me gusta, que es la ZEN de spamhaus. Podemos encontrar más en el fichero /etc/MailScanner/spam.lists.conf. Podemos utilizar todas las que deseemos, pero hay que tener en cuenta que lleva su tiempo procesarlas, pues han de realizarse conexiones a servidores de Internet. La siguiente línea debe quedar como sigue:
Spam List = spamhaus-ZEN
AVISO: La utilización de listas en desuso, puede acarrearnos graves problemas.
Ahora que está todo configurado, vamos a permitir su uso, y hacer una pequeña modificación. En el fichero /etc/default/mailscanner, han de quedar estas dos líneas, como sigue:
q_days=15Ahora podemos iniciar MailScanner.
/etc/init.d/mailscanner startSpamAssassin
SpamAssassin requiere pocos cambios una vez instalado. Una cosa que le tenemos que decir a SpamAssassin es que ignore las cabeceras de nuestra organización cuando realice el análisis bayesiano. En /etc/MailScanner/spam.assassin.prefs.conf, aproximadamente en la línea 116 y siguientes, donde pone unconfigured-debian-site, tenemos que poner el nombre corto de nuestra organización que pusimos en /etc/MailScanner/MailScanner.conf, en la variable %org-name%. Deberá de quedar de esta guisa:
bayes_ignore_header NireEskola-MailScannerDebemos hacer que SpamAssassin no utilice las redes Razor o Pyzor, pues no nos interesa. En el fichero /etc/MailScanner/spam.assassin.prefs.conf, aprozimadamente en la línes 160, quitamos el signo de comentario a las siguientes líneas que quedarán de la siguiente forma:
use_razor2 0Otra cosa interesante. SpamAssassin tiene la capacidad de puntuar de diferente manera los mensajes de diferentes idiomas. Esto es, los mensajes de un determinado idioma obtienen una puntuación de spam, más baja. Vamos a seleccionar el euskera y castellano, pues casi todo el spam nos llega en inglés. La siguiente línea quedará como sigue:
ok_locales eu es
Para detectar los idiomas euskera y castellano, se requiere el plugin TextCat. Hemos de habilitar el plugin en el fichero /etc/spamassassin/v310.pre. Quedará de esta forma:
loadplugin Mail::SpamAssassin::Plugin::TextCat
Ahora que está configuradio, indicamos en /etc/default/spamassassin, que se puede utilizar. La siguiente línea se debe poner a 1.
ENABLED=1Verificamos que SpamAssassin funciona correctamente.
spamassassin -p /etc/MailScanner/spam.assassin.prefs.conf --lintNo debería de dar errores.
Ahora podemos iniciar SpamAssassin.
/etc/init.d/spamassassin startSpamAssassin consigue su mayor éxito con la utilización de listas negras. Hay muchas. Muchas de ellas están incluídas en el fichero /etc/MailScanner/spam.lists.conf. Al configurar MailScanner hemos seleccionado spamhaus-ZEN. Esta lista no se encuentra entre las que vienen con la versión de SpamAssassin que se encuentra en los repositorios de Debian que hemos utilizado para su instalación. Vamos a habilitarla. Patra ello, en el fichero /etc/MailScanner/spam.lists.conf añadiremos lo siguiente (no olvidar el punto final):
spamhaus-ZEN zen.spamhaus.org.
Listo.
FuzzyOCR y SpamAssassin
Hoy en día mucho del spam que nos llega, tiene un dibiujo como contenido. El dibujo representa texto. Los métodos tradicionales no sirven para detectar es spam. Para analizar estos dibujos, y extraer el texto, se necesita un OCR. Tennemos un plugin para SpamAssassin, llamado FuzzyOCR. Para ahorrar caoacidad de proceso, recuerda los dibujos analizados. Además, es capaz de detectar pequeñas diferencias entre estos dibujos. Para poder utilizarlo necesitamos SpamAssassin 3.1.4 o superior.
Instalémoslo. Primeramente los paquetes que necesita FuzzyOCR.
apt-get install netpbm gifsicle libungif-bin gocr ocrad libstring-approx-perl libmldbm-perl libmldbm-sync-perlAhora vamos a descargar FuzzyOCR. Se recomienda la versión de desarrollo, pues la estable es muy antigua.
wget -P /var/wwwlhpaiak http://users.own-hero.net/~decoder/fuzzyocr/fuzzyocr-3.5.1-devel.tar.gz
Descomprimir y copiar los ficheros al directorio /etc/spamassassin.
cd /var/www/lhpaiakEl fichero de configuración es /etc/spamassassin/FuzzyOcr.cf. Le vamos a indicar en qué fichero se encuuentran las palabras que ha de buscar. Si lo consideramos conveniente, podemos añadir otras palabras a este fichero.
focr_global_wordlist /etc/spamassassin/FuzzyOcr.words
Ahora le indicamos las aplicaciones que ha de usar para su trabajo. Debe quedar así (todo en una línea):
focr_bin_helper pnmnorm, pnminvert, convert, ppmtopgm, tesseract
Donde buscar estas aplicaciones:
# Search path for locating helper applications
focr_path_bin /usr/local/netpbm/bin:/usr/local/bin:/usr/bin ?????
focr_preprocessor_file /etc/spamassassin/FuzzyOcr.preps
focr_scanset_file /etc/spamassassin/FuzzyOcr.scansets
Habilitar la base de datos de los hash de los dibujos.
focr_enable_image_hashing 2
focr_digest_db /etc/spamassassin/FuzzyOcr.hashdb
focr_db_hash /etc/spamassassin/FuzzyOcr.db
focr_db_safe /etc/spamassassin/FuzzyOcr.safe.db
Le vanmos a indicar que utilice el fichero /var/log/FuzzyOcr.log como registro.
Vamos a crear el fichero de registro.
touch /var/log/FuzzyOcr.logTenemos que rotar el registro para que no crezca indefinidamente. Vamos crear un fichero /etc/logrotate.d/fuzzyocr con el siguiente conteniddo:
/var/log/FuzzyOcr.log {
rotate 12
weekly
notifempty
compress
delaycompress
create 666 root root
}
Seguidamente reiniciamos SpamAssassin y comprobamos si todo ha ido bien. No? Podemos encontrarnos con algún error. Si nos falta el modulo Logger.pm, puede ser que esté instalado en un directorio que no se encuentra. Lo copiamos al directorio correcto.
cp /usr/share/perl5/Log/Agent/Logger.pm /usr/share/perl5/Mail/SpamAssassin/Otro problema que podemos encontrarnos es con la librería Timeout.pm. Si no se encuentra, nos hemos de descargar la versión completa de SpamAssassin de Internet, y rescatar la mencionada librería.
wget -P /var/www/lhpaiaki http://apache.rediris.es/spamassassin/source/Mail-SpamAssassin-3.1.8.tar.gzVamos a instalar otras bibliotecas de PERL. Lo vamos a hacer de los repositorios CPAN. Si nos pregunta si deseamos realizar la configuración CPAN a mano, se diremos que no.
cpan -i String::Approx Time::HiRes Log::Agent
Probemos a ver si funciona FyzzyOCR. En el directorio descargado tenemos varios dibujos a modo de ejemplo.
spamassassin --debug FuzzyOcr < /var/www/lhpaiaki/FuzzyOcr-3.5.1/samples/ocr-gif.eml > /dev/nullSi todo va bien, debemos ver algo como:
[10025] dbg: FuzzyOcr:Listo! FuzzyOCR funcionando!
Enseñando a SpamAssassin
MailScanner y Postfix juntos
Le diremos a Postfix que compruebe los encabezamientos del correo con los contenidos que hay en el archivo header_checks. Para ello, añadir lo siguiente en el fichero /etc/postfix/main.cf.
En este fichero pondremos que todos los correos entrantes los mueva al directorio HOLD. Para ello pondremos lo siguiente en el fichero /etc/postfix/header_checks.
Reiniciamos MailScanner y Postfix
/etc/init.d/mailscanner restartConsideraciones acerca de MailScanner
MailScanner, además de servir como armazón para utilizar productos antivirus y antiespan, posee gran capacidad de filtrado de contenidos con potencial peligroso. Estos contenidos suelen ser ficheros .pif, .exe... pero también otros. Los ficheros DOC (Word) pueden contener macros peligrosas. Los ficheros WMF (Windows MetaFile) pueden utilizarse para explotar una vulnerabilidad 0day.exploit en las DLL que tratan estos formatos (incluido BMP). Otro vector de ataque a Windows son los fichero ANI, de cursores animados. Hay que eliminarlos.
Esto hace que nos bloquee estos ficheros y nuestros usuarios no entiendad la "peligrosidad" de un formato que utilizan habitualmente. En nuestras manos queda el relajar las políticas de seguridad. En el fichero /etc/MailScanner/filename.rules.conf podemos deshabilitar los formatos que necesitemos. Después de ello, reiniciar Mailscanner.
Puede ser necesario deshabilitar los WMF y BMP si nuestros usuarios envían dibujos de programas de windows incrustados en documentos OpenOffice.
En el mismo sitio tenemos el fichero filetype.rules.conf, con una funcionalidad similar para con los tipos de fichero.
En el servidor DNS al que accede el antivirus, hemos de poner su nombre como intercambiador de correo (registro MX), con menos prioridad que el servidor de correo con buzones. Es decir, con número más alto.
En el cortafuegos habremos de hacer NAT, no al servidor original, si no a la dirección del antivirus.