ClamAV (Español)
Clam AntiVirus es un conjunto de herramientas de antivirus de código abierto (GPL) para UNIX. Proporciona una serie de utilidades que incluyen un demonio multiproceso flexible y escalable, un escáner de línea de órdenes y una herramienta avanzada para actualizaciones automáticas de las bases de datos. Debido a que el uso principal de ClamAV es en servidores de archivos/correos electrónicos para escritorios de Windows, detecta principalmente virus y malware de Windows con sus firmas incorporadas.
Instalación
Actualizar la base de datos
Actualice las definiciones de virus con:
# freshclam
Si está detrás de un proxy, edite /etc/clamav/freshclam.conf
y actualice HTTPProxyServer, HTTPProxyPort, HTTPProxyUsername y HTTPProxyPassword.
Los archivos de la base de datos se guardan en:
/var/lib/clamav/daily.cvd /var/lib/clamav/main.cvd /var/lib/clamav/bytecode.cvd
Inicie/active clamav-freshclam.service
para que las definiciones de virus se mantengan recientes.
Iniciar el demonio
freshclam
antes de iniciar el servicio por primera vez o se encontrará con errores que evitarán que ClamAV se inicie correctamente.El servicio se llama clamav-daemon.service
. Inicie y active el servicio para que se inicie en el arranque del sistema.
Comprobar el software
Para asegurarse de que ClamAV y las definiciones están instaladas correctamente, escanee el archivo de prueba EICAR[enlace roto 2022-09-17] (una firma inofensiva sin código de virus) con clamscan.
$ curl https://www.eicar.org/download/eicar.com.txt[enlace roto 2024-01-13] | clamscan -
La salida debe incluir:
stdin: Eicar-Test-Signature FOUND
De lo contrario, lea la sección sobre #Solución de problemas o solicite ayuda en Arch Forums.
Añadir más repositorios de firmas/base de datos
ClamAV puede usar bases de datos/firmas de otros repositorios o proveedores de seguridad.
Para añadir los más importantes en un solo paso, instale clamav-unofficial-sigsAUR.
Esto agregará firmas/bases de datos de, por ejemplo, MalwarePatrol, SecuriteInfo, Yara, Linux Malware Detect, etc. Para ver la lista completa de bases de datos, vea la descripción del repositorio de GitHub.
Configurar clamav-unofficial-sigs
Active clamav-unofficial-sigs.timer
.
Esto actualizará regularmente las firmas no oficiales basadas en los archivos de configuración presentes en el directorio /etc/clamav-unofficial-sigs
.
Para actualizar las firmas manualmente, ejecute lo siguiente:
# clamav-unofficial-sigs.sh
Para cambiar cualquier configuración predeterminada, remítase y modifique /etc/clamav-unofficial-sigs/user.conf
.
clamav-freshclam.service
iniciado para tener actualizaciones de las firmas oficiales de los servidores de réplicas de ClamAV.Base de datos MalwarePatrol
Si desea utilizar la base de datos de MalwarePatrol, regístrese para obtener una cuenta en https://www.malwarepatrol.net/free-guard-upgrade-option[enlace roto 2023-07-30].
En /etc/clamav-unofficial-sigs/user.conf
, cambie lo siguiente para activar esta funcionalidad:
malwarepatrol_receipt_code="SU-NÚMERO-DE-RECIBO" # Introduzca su número de recibo aquí. malwarepatrol_product_code="8" # Utilice «8» si tiene una cuenta gratuita o «15» si es un cliente Premium. malwarepatrol_list="clamav_basic" # clamav_basic o clamav_ext malwarepatrol_free="yes" # Establezca «yes» si tiene una cuenta gratuita o «no» si es un cliente Premium.
Fuente: https://www.malwarepatrol.net/clamav-configuration-guide/
Analizar en busca de virus
clamscan
se puede usar para escanear ciertos archivos, directorios como /home o un sistema completo:
$ clamscan miarchivo $ clamscan --recursive --infected /home $ clamscan --recursive --infected --exclude-dir='^/sys|^/dev' /
Si desea que clamscan
elimine el archivo infectado, agregue la opción --remove
a la orden, o puede usar --move=/directorio
para ponerlos en cuarentena.
También es posible que desee utilizar clamscan
para escanear archivos más grandes. En este caso, añada las opciones --max-filesize=4000M
y --max-scansize=4000M
a la orden. «4000M» es el mayor valor posible y puede reducirse según sea necesario.
El uso de la opción -l /ruta/al/archivo
imprimirá los registros de clamscan
en un archivo de texto para poder localizar las infecciones notificadas.
Utilizar milter
Milter escaneará su servidor sendmail en busca de correos electrónicos que contengan virus. Copie /etc/clamav/clamav-milter.conf.sample
en /etc/clamav/clamav-milter.conf
y ajústelo a sus necesidades. Por ejemplo:
/etc/clamav/clamav-milter.conf
MilterSocket /run/clamav/clamav-milter.sock MilterSocketMode 660 FixStaleSocket yes User clamav PidFile /run/clamav/clamav-milter.pid TemporaryDirectory /tmp ClamdSocket unix:/var/lib/clamav/clamd.sock LogSyslog yes LogInfected Basic
Cree /etc/systemd/system/clamav-milter.service
:
/etc/systemd/system/clamav-milter.service
[Unit] Description='ClamAV Milter' After=clamav-daemon.service [Service] Type=forking ExecStart=/usr/bin/clamav-milter --config-file /etc/clamav/clamav-milter.conf [Install] WantedBy=multi-user.target
Active e inicie clamav-milter.service
.
OnAccessScan
El análisis en acceso (o análisis en tiempo real) requiere que el kernel se haya compilado con el módulo del kernel fanotify (kernel >= 3.8). Compruebe si fanotify está activado antes de habilitar escáner «On-Access».
$ zgrep FANOTIFY /proc/config.gz
El monitoreo en tiempo real analizará el archivo mientras lo lee, escribe o ejecuta.
Primero, edite el archivo de configuración /etc/clamav/clamd.conf
añadiendo lo siguiente al final del archivo (también puede cambiar cada opción de forma individual):
/etc/clamav/clamd.conf
# Permite la exploración en acceso, requiere la ejecución de clamav-daemon.service ScanOnAccess true # Establezca el punto de montaje donde realizar el análisis de forma recursiva, # esto podría consistir en cada ruta o ruta múltiple (una línea por ruta) OnAccessMountPath /usr OnAccessMountPath /home/ OnAccessExcludePath /var/log/ # Marca fanotify para bloquear cualquier evento # en los archivos monitoreados para realizar el análisis OnAccessPrevention false # Realizar monitoreos en archivos recién creados, movidos o renombrados OnAccessExtraScanning true # Verificar el UID del evento de fanotify OnAccessExcludeUID 0 # Especificar una acción a realizar cuando clamav detecte un archivo malicioso, # también es posible especificar una orden en línea VirusEvent /etc/clamav/detected.sh # ADVERTENCIA: clamd debe ejecutarse como root User root
A continuación, cree el archivo /etc/clamav/detected.sh
y añada lo siguiente. Esto le permite cambiar/especificar el mensaje de depuración de errores cuando el servicio de análisis en tiempo real de clamd haya detectado un virus:
/etc/clamav/detected.sh
#!/bin/bash PATH=/usr/bin alert="Firma detectada: $CLAM_VIRUSEVENT_VIRUSNAME en $CLAM_VIRUSEVENT_FILENAME" # Enviar la alerta al registro de systemd si existe, de lo contrario a /var/log if [[ -z $(command -v systemd-cat) ]]; then echo "$(date) - $alert" >> /var/log/clamav/detections.log else # Esto podría hacer que su entorno de escritorio muestre una alerta visual. Sucede en Plasma, pero la siguiente alerta visual es mucho mejor. echo "$alert" | /usr/bin/systemd-cat -t clamav -p emerg fi # Enviar una alerta a todos los usuarios de la interfaz gráfica. XUSERS=($(who|awk '{print $1$NF}'|sort -u)) for XUSER in $XUSERS; do NAME=(${XUSER/(/ }) DISPLAY=${NAME[1]/)/} DBUS_ADDRESS=unix:path=/run/user/$(id -u ${NAME[0]})/bus echo "run $NAME - $DISPLAY - $DBUS_ADDRESS -" >> /tmp/testlog /usr/bin/sudo -u ${NAME[0]} DISPLAY=${DISPLAY} \ DBUS_SESSION_BUS_ADDRESS=${DBUS_ADDRESS} \ PATH=${PATH} \ /usr/bin/notify-send -i dialog-warning "clamAV" "$alert" done
Si está utilizando AppArmor, también es necesario permitir que clamd se ejecute como root:
# aa-complain clamd
Reinicie el servicio clamav-daemon.service
.
Fuente: https://blog.clamav.net/2016/03/configuring-on-access-scanning-in-clamav.html
Solución de problemas
Error: Clamd was NOT notified
Si recibe los siguientes mensajes después de ejecutar freshclam:
WARNING: Clamd was NOT notified: Cannot connect to clamd through /var/lib/clamav/clamd.sock connect(): No such file or directory
Añada un archivo sock para ClamAV:
# touch /var/lib/clamav/clamd.sock # chown clamav:clamav /var/lib/clamav/clamd.sock
Luego, edite /etc/clamav/clamd.conf
y descomente esta línea:
LocalSocket /var/lib/clamav/clamd.sock
Guarde el archivo y reinicie clamav-daemon.service
.
Error: No supported database files found
Si obtiene el siguiente error al iniciar el demonio:
LibClamAV Error: cli_loaddb(): No supported database files found in /var/lib/clamav ERROR: Not supported data format
Esto sucede debido a la falta de coincidencia entre la configuración de DatabaseDirectory
de /etc/clamav/freshclam.conf
y la configuración de DatabaseDirectory
de /etc/clamav/clamd.conf
. El archivo /etc/clamav/freshclam.conf
apunta a /var/lib/clamav
, pero /etc/clamav/clamd.conf
(directorio por defecto) apunta a /usr/share/clamav
, o a otro directorio. Edite /etc/clamav/clamd.conf
y reemplace con el mismo DatabaseDirectory que el de /etc/clamav/freshclam.conf
. Después de eso, clamav se iniciará con éxito.
Error: Can't create temporary directory
Si obtiene el siguiente error, junto con una 'HINT' que contiene un UID y un número GID:
# can't create temporary directory
Corrija los permisos:
# chown UID:GID /var/lib/clamav & chmod 755 /var/lib/clamav
Consejos y trucos
Ejecutar en múltiples hilos
Utilizar clamscan
Al escanear un archivo o directorio desde la línea de órdenes usando clamscan
solo se usa un hilo de la CPU. Esto puede estar bien en los casos en que el tiempo no es crítico o no desea que el equipo se ralentice. Si es necesario escanear carpetas grandes o unidades USB rápidamente, podría utilizar todas las CPU disponibles para acelerar el proceso.
clamscan
está diseñado para usarse en un solo subproceso, pero esto no es obvice para que con el argumento xargs
se puede utilizar para ejecutar escaneos en paralelo:
$ find /home/archie -type f -print | xargs -P $(nproc) clamscan
En este ejemplo, el parámetro -P
para xargs
ejecuta clamscan
en tantos procesos como CPU existan (según informa nproc
) al mismo tiempo. Las opciones --max-lines
y --max-args
permitirán un control aún más preciso de los procesamientos por lotes de la carga de trabajo entre los distintos hilos.
Utilice la siguiente versión si los nombres de archivos pueden contener espacios u otros caracteres especiales (como suelen hacer las unidades USB y otras antiguas de Windows):
$ find /home/archie -type f -print0 | xargs -0 -P $(nproc) clamscan
Utilizar clamdscan
Si ya tiene el demonio clamd
ejecutandose, clamdscan
puede usarse en su lugar (vea #Iniciar el demonio):
$ clamdscan --multiscan --fdpass /home/archie
Aquí el parámetro --multiscan
permite que clamd
escanee el contenido del directorio en paralelo utilizando los hilos disponibles. El parámetro --fdpass
es necesario para pasar los permisos del descriptor del archivo a clamd
ya que el demonio se ejecuta bajo el usuario y grupo clamav
.
El número de subprocesos disponibles para clamdscan
se determina en /etc/clamav/clamd.conf
a través del parámetro MaxThreads
de clamd.conf(5). Aunque puede ver que el número de MaxThreads
especificado es más de uno (el valor predeterminado actual es 10), cuando inicia la exploración utilizando clamdscan
desde la línea de órdenes y no especifica --multiscan
, solo se usará un hilo de CPU efectivo para escanear.