GNU/Linux: cómo configurar el antivirus ClamAV con auto-escaneo de ficheros

2021-02-01 - Categorías: General / GNU/Linux

ClamAV es un excelente antivirus gratis Open Source que está disponible para GNU/Linux. Viene sin interfaz de usuario por defecto, porque inicialmente se creó para ejecutarse desde línea de comandos. En GNU/Linux por otro lado hay muchos entornos de escritorio. Con lo que con esto, podemos encontrar el porqué quizá hace falta darle una vuelta de tuerca, para ponerlo a funcionar como los demás antivirus de pago.

Es uno de los principales antivirus usado para bloquear la propagación de códigos maliciosos por Internet hoy en día. Se usa por defecto en varias distribuciones o paquetes de software para gestión de servidores de correo, alojamientos web, etcétera..

Este post es un howto para conseguir que ClamAV se auto-actualice, y para que realice escaneos automáticos, ya sea programados o cuando accedemos a los ficheros.

Unos ficheros de virus para probar

Dejo aquí unos enlaces que nos pueden servir para hacer saltar las alarmas en nuestro PC. Así podemos probar que todo queda funcionando. No los arranques, son sólo para probar en tu PC 😉 es broma..
https://www.eicar.org/?page_id=3950

Instalando ClamAV

En GNU/Linux, con el gestor de paquetes APT, bastaría con ejecutar lo siguiente:

sudo apt install clamav clamav-freshclam

..si todo ha ido bien ya lo tenemos instalado en el sistema, pero no podemos ejecutarlo nada más que desde línea de comandos con sus parámetros. Podemos lanzar lo siguiente, y veremos toda la ayuda disponible:

clamscan -h

Por ejemplo al entrar en Ubuntu al escritorio y ejecutar sólo el directorio actual, se puede hacer así:

cd /home/usuario/Escritorio/
clamscan -v .

Esto escanea el directorio actual, con la opción -v (verbose), que mostraría más información de la ejecución por pantalla. El resultado en mi escritorio con unos virusos de pruebas es así, tú deberías de ver algo parecido:

ClamAV desde linea de comandos
ClamAV desde línea de comandos detectando unos virusos de pruebas..

Si nos fijamos, en la prueba ha detectado los 4 virusos, de un total de 23 ficheros, hay 8689032 definiciones de virus, 1 directorio escaneado, etc..

Una interfaz de usuario para escanear a demanda

Una interfaz para Ubuntu es el Clamtk. Es una GUI para ClamAV sobre la que escribí en un post anterior.

Te permite hacer muchas cosas que también podemos hacer desde línea de comandos. Desde línea de comandos no tendremos límite ya que podremos hacer uso de todas las funcionalidades. Pero quizá es un poco difícil tener que recordar los comandos. Con ClamTk es fácil lanzar escaneos a demanda recursivamente sobre directorios, ver los resultados, etc..

El auto-actualizador de las definiciones de virus

Lo siguiente para mantener la eficacia del antivirus, es mantenerlo actualizado. Es importante mantener actualizado todo, tanto el propio antivirus como las definiciones de virus.

Las definiciones de virus, o también llamadas firmas, son los listados que permiten a los antivirus hacer las detecciones. Hay antivirus o sistemas de detección que usan la heurística, con lo que sin tener necesariamente una definición exacta de cierto virus, son capaces de detectar nuevos virus.

El comando para actualizar las definiciones es freshclam y se puede ejecutar así:

sudo freshclam

..quizá nos sale un error, porque puede que otro proceso ya esté ejecutándolo. Podemos matarlo el proceso y al ejecutarlo en línea de comandos se tiene que ver algo como esto:

ClamAV freshclam actualizando definiciones de virus
ClamAV freshclam, actualizando definiciones de virus..

Programando la actualización automática de ClamAV

Freshclam se instala como servicio de sistema, con lo que se encargará de actualizar las definiciones de virus. Tenemos disponible este fichero de configuraciones:

sudo nano /etc/clamav/freshclam.conf

Lanzar manualmente el actualizador al mismo tiempo que el servicio de actualización está funcionando entra en conflicto. Para ver si tenemos el servicio de actualización automática activado tenemos que lanzar lo siguiente desde un terminal:

sudo service clamav-freshclam status

Alternativamente, una forma sencilla de programar la actualización automática de ClamAV podría ser simplemente el añadir el comando:

freshclam

..al programador de tareas del sistema. Si lo ejecutamos desde línea de comandos como root lo podemos hacer ejecutando:

sudo crontab -e

..seguimos las instrucciones, y bastaría con añadir una línea con lo siguiente:

0 8 * * * freshclam > /home/usuario/clamav-last-update.log

Esto por ejemplo ejecutaría a las 8:00 cada día el comando anterior, y guardaría registro de la salida por pantalla de la última actualización en el fichero indicado.

El auto-escaneo

Si has seguido todo el post, lo siguiente es automatizar escaneos del sistema. Esto lo podemos hacer de dos formas:

  • Programando en el programador de tareas escaneos a demanda en ciertos momentos.
  • Escaneando automáticamente los ficheros a los que vayamos accediendo.

Lo primero es lo más fácil, basta con abrir el crontab como en el apartado anterior y definir los escaneos, uno por línea, de los directorios que queramos. Podemos definir por parámetros si borramos infecciones, tratamos de limpiar los ficheros, etc.. lo que queramos.

Lo segundo necesita una vuelta de tuerca con lo que lo vemos en el siguiente apartado..

El auto-escaneo según vayamos accediendo a los ficheros, On-Access

El auto-scan on-access es la mejor opción. Este escaneo al acceder a los ficheros, se instalará en el núcleo de GNU/Linux, en el kernel. Lo primero que hay que hacer es instalar el servicio del sistema para esto, o también llamado demonio del sistema. Desde línea de comandos:

sudo apt install clamav-daemon

Para configurar el demonio de clamav podemos editar este fichero:

sudo nano /etc/clamav/clamd.conf

..en donde tendremos un montón de configuraciones disponibles. Este demonio del sistema usa la librería del ClamAV para escanear ficheros. Es la mejor opción para realizar escaneos en paralelo, sin afectar demasiado al rendimiento del sistema. Este servicio es el que usará el clamonacc para engancharse a los accesos al sistema de ficheros que realiza el kernel de Linux.

Ya podemos lanzar el comando del sistema clamonacc, pero antes conviene configurarlo. Para esto tenemos que configurar el fichero anterior clamd.conf. Para esto podemos poner algo como lo siguiente al final:

...
#ScanOnAccess yes # deprecated
OnAccessMaxFileSize 5M
#OnAccessMountPath /home/usuario/Escritorio
OnAccessIncludePath /home/usuario/Escritorio
OnAccessIncludePath /home/usuario/Descargas
OnAccessIncludePath /home/usuario/Documentos
OnAccessExcludeUname root
OnAccessExcludeUname clamav
OnAccessPrevention yes
#OnAccessExtraScanning yes
#OnAccessExcludeRootUID yes
#OnAccessRetryAttempts 3
#VirusEvent /home/usuario/virusDetected.sh

¡CUIDADO! Con las rutas que incluyas en el path de revisiones, porque si incluímos ficheros que el mismo Antivirus modifica cuando hace escaneos, puede entrar en un bucle infinito y bloquear todo el sistema.

Lo siguiente es lanzar el comando clamonacc, pero mejor si lo configuramos como servicio del sistema. Esto podemos hacerlo añadiendo un fichero /etc/systemd/system/clamonacc.service parecido o igual al siguiente:

[Unit]
Description=ClamAV On Access
Requires=clamav-daemon.service
After=clamav-daemon.service syslog.target nss-lookup.target network.target

[Service]
Type=simple
User=root
ExecStart=/usr/sbin/clamonacc -F --log=/var/log/clamav/clamonacc.log --move=/home/usuario/quarantine
Restart=on-failure
RestartSec=20s

[Install]
WantedBy=multi-user.target

Si no arranca, puede ser porque la ruta no sea correcta. Se puede probar de lanzar desde root el comando indicado en el ExecStart. Ahora queda reiniciar el sistema, o arrancar los servicios manualmente, para comprobar que todo funciona:

sudo systemctl daemon-reload
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon
sudo systemctl enable clamonacc
sudo systemctl start clamonacc

Si algo no funciona o queremos probar configuraciones hay que hacer:

sudo systemctl daemon-reload ; sudo systemctl restart clamav-daemon ; sudo systemctl restart clamonacc

Hay que esperar a que arranque clamonacc. Entonces con la configuración anterior, si descargamos ficheros con virus a la carpeta /home/usuario/Escritorio los moverá a /home/usuario/quarantine. Para hacer una prueba se podría hacer algo tal que así:

wget https://secure.eicar.org/eicar.com

Terminando

Sólo me queda redirigirte a la documentación oficial para más información:
https://www.clamav.net/
https://www.clamav.net/documents/on-access-scanning

2 respuestas a “GNU/Linux: cómo configurar el antivirus ClamAV con auto-escaneo de ficheros”

  1. Victor J. Vega dice:

    Gracias por ampliar y clarificar algunos conceptos de este antivirus.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

© 2022 JnjSite.com - MIT license

Sitio hecho con WordPress, diseño y programación del tema por Jnj.