GNU/Linux: el antivirus ClamAV con auto-escaneo

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. Es un poco continuación de un post antiguo en el que quedó la última parte del escaneo automático en el aire..

Unos ficheros de virus para probar

Dejo aquí unos enlaces que nos pueden servir para hacer saltar las alarmas en nuestro PC. Así podemos probarlo que todo queda funcionan. No los arranques, son sólo para probar en tu PC 😉
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. Ahora tenemos el comando clamscan con todos los parámetros. Podemos ejecutar 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í, tu 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. Pero 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, y muy importante, para mantener la eficacia del antivirus, es mantenerlo actualizado. Es importante mantener actualizado tanto el 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

A fecha de hoy, freshclam se instala como servicio de sistema, con lo que se puede encargar de actualizar las definiciones de virus. Tenemos disponible este fichero de configuraciones:

sudo nano /etc/clamav/freshclam.conf

Podemos configurarlo entonces, y habilitando el servicio se mantendrá actualizado. Esto puede entrar en conflicto con lanzar manualmente el actualizador.

Alternativamente, una forma sencilla de programar la actualización automática de ClamAV podría ser simplemente el añadir el comando anterior 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 linea 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 en el escritorio del usuario con nombre de usuario ‘usuario’ en el fichero de la ruta.

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. El escaneo on-access 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 siguente al final:

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

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/bin/clamonacc -F --log=/var/log/clamav/clamonacc.log --move=/home/usuario/quarantine
Restart=on-failure
RestartSec=60s

[Install]
WantedBy=multi-user.target

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 system-ctl 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 terminar el post:
https://www.clamav.net/
https://www.clamav.net/documents/on-access-scanning

Deja una respuesta

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

 

© 2021 JnjSite.com - MIT license

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