Con unos sencillos pasos (esta entrada está basada en este artículo de wiki.cpaneldirect.net) es posible integrar el servidor ftp pure-ftpd con el antivirus clamav. Gracias a esto automatizaremos la revisión en busca de virus en todos los ficheros que se suban por FTP.
Lo primero que debemos hacer es instalar clamav. Si el sistema es RHEL, CentOS, etc podemos instalarlo por yum (tendremos que tener el repositorio DAG):
# yum install clamav
Damos por supuesto que pure-ftpd está instalado y configurado, así que entramos directamente en materia. Lo primero es modificar la configuración de pure-ftpd y habilitar la llamada de scripts cuando se realicen subidas al servidor:
# vim /etc/pure-ftpd.conf
Descomentamos la línea CallUploadScript yes:
# If your pure-ftpd has been compiled with pure-uploadscript support, # this will make pure-ftpd write info about new uploads to # /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and # spawn a script to handle the upload. CallUploadScript yes
Ahora tenemos que modificar el script de arranque de pure-ftpd para añadir la llamada al binario encargado de esta tarea (pure-uploadscript).
Justo debajo de la línea (sección START):
$DAEMONIZE $fullpath /etc/pure-ftpd.conf -O clf:/var/log/xferlog $OPTIONS --daemonize
Añadimos:
$DAEMONIZE /usr/sbin/pure-uploadscript -B -r /var/run/pure-ftpd/clamscan.sh
Y justo debajo de esta (sección STOP):
kill $(cat /var/run/pure-ftpd.pid)
Añadimos esta:
kill $(cat /var/run/pure-ftpd/pure-uploadscript.pid)
Ahora creamos el script encargado de revisar los ficheros en busca de virus, lo llamaremos /var/run/pure-ftpd/clamscan.sh, y contendrá lo siguiente.
#!/bin/sh # /usr/local/bin/clamdscan is faster if clamd is running CLAMLOC='/usr/local/bin/clamscan'; if [ ! -x $CLAMLOC ]; then echo 'clamscan not found'; exit; fi if [ "$1" = "" ]; then echo 'Variable is blank'; exit; fi if [ ! -f "$1" ]; then echo "$1 file not found" exit; fi # maybe you would prefer --move=/DIRECTORY instead of remove $CLAMLOC --remove $1
Como podéis ver, en este script los ficheros que se detecten como maliciosos se eliminan, si queremos que los mueva a una ruta distinta en lugar de borrar usamos –move=/DIRECTORY.
Personalmente veía de gran utilidad que me avisara por correo electrónico, así que podéis usar esta variación del script si queréis en la que el fichero no se toca y si se detecta que es un virus se avisa por correo:
#!/bin/bash # /usr/local/bin/clamdscan is faster if clamd is running CLAMLOC='/usr/bin/clamscan'; if [ ! -x $CLAMLOC ]; then echo 'clamscan not found'; exit; fi if [ "$1" = "" ]; then echo 'Variable is blank'; exit; fi if [ ! -f "$1" ]; then echo "$1 file not found" exit; fi EMAIL="test@micorreo.com" # Aqui pon tu dirección de correo electronico # maybe you would prefer --move=/DIRECTORY instead of remove $CLAMLOC $1 2>/dev/null | grep "FOUND" if [ "$?" == "0" ]; then echo "Script $1 subido por $UPLOAD_USER." | mail -s "[$(hostname)] Upload de fichero malicioso" $EMAIL fi
Modificamos los permisos del script a 755:
# chmod 755 /var/run/pure-ftpd/clamscan.sh
Y reiniciamos pure-ftpd:
# /etc/init.d/pure-ftpd restart
Ahora solo queda esperar o probar, podéis subir por FTP un fichero malicioso (shell en php, código ofuscado, etc) para verificar el funcionamiento.
———————— AUTHENTICATION MODULES ————————…Since release 1.0.8 anyone can add new custom authentication methods to.Pure-FTPd without recompiling anything using authentication modules …To enable it you must . configure with –with-extauth or.–with-everything. Linux binary packages have it enabled by default…Heres how they are working ..1 A client connects to the FTP server and issues a login password pair…2 The FTP server connects to a local separate daemon called pure-authd..Data transmitted to that daemon is users login users password the IP.address that user connected to the local port that user connected to and.the users remote IP address…3 pure-authd spawns an authentication program.
Hola, no he podido continuar desde aquí:
———
Ahora tenemos que modificar el script de arranque de pure-ftpd para añadir la llamada al binario encargado de esta tarea (pure-uploadscript).
———
donde esta el archivo o hay que crearlo?
Lo tendrás en /etc/init.d/pure-ftpd
algun script o archivo malicioso para hacer la prueba? o como saber si esta funcionando correctamente?
subi uno para probar pero clamscan no lo reconoce como malicioso…
Puedes probar subiendo un fichero con la EICAR String, es un falso positivo de ClamAV para testing.
Saludos
http://en.wikipedia.org/wiki/EICAR_test_file
Saludos, gracias por el dato, funciona perfecto, al menos reconocio el archivo malicioso y envió el mensaje correctamente.
Espero que pueda detectar la mayoría de los archvos maliciosos…