Escaneo de malware con ClamAV

Este artículo se ha traducido del inglés mediante IA y puede contener errores. Sus comentarios nos ayudarán a mejorar.

A partir de la Versión 5.0.0, el Servidor Autogestionado de ActivityInfo puede escanear los archivos que los Usuarios cargan en los campos de datos adjuntos en busca de virus y otro malware utilizando ClamAV, un motor antivirus de código abierto ampliamente utilizado. Este artículo explica cómo funciona el escaneo y cómo instalar y configurar ClamAV junto con ActivityInfo.

Cómo funciona el escaneo

ActivityInfo no incluye ClamAV. En su lugar, se conecta a un demonio de ClamAV (clamd) que usted instala por separado, ya sea en la misma máquina o en otro Host accesible a través de la red. ActivityInfo se comunica con clamd a través de su socket de Dominio Unix local (el Predeterminado) o a través de una conexión TCP.

Cuando un Usuario carga un Archivo, ActivityInfo lo almacena y luego lo escanea en segundo plano. Cada dato adjunto tiene uno de los siguientes estados:

Estado Significado ¿Se sirve a los usuarios?
Pendiente Aún no escaneado, o en cola para un nuevo escaneo.
Limpio Escaneado sin encontrar ninguna amenaza.
Infectado ClamAV encontró una signatura de malware conocida. No
Error ClamAV se negó a procesar el archivo (por ejemplo, un archivo malformado o corrupto). No

Debido a que el escaneo ocurre justo después de que se completa la carga, hay un breve lapso en el que un Archivo recién cargado está Pendiente y aún es descargable. Si el escáner no está disponible temporalmente cuando se carga un Archivo, el Archivo permanece Pendiente; un barrido periódico en segundo plano vuelve a escanear automáticamente los datos adjuntos pendientes una vez que el escáner vuelve a estar disponible, por lo que no se pierden archivos y no es necesario volver a cargarlos.

El escaneo de malware está habilitado de forma predeterminada. Si no instala ClamAV, las cargas se realizan y se sirven correctamente, pero permanecen Pendientes (sin escanear) hasta que un escáner esté disponible. Para desactivar el escaneo por completo, establezca Enabled = False en la sección [Malware] de config.ini.

Instalar ClamAV en Debian / Ubuntu

Instale el demonio ClamAV desde el repositorio de paquetes de la distribución:

apt install -y clamav-daemon

Luego inicie ambos servicios:

systemctl enable --now clamav-freshclam
systemctl enable --now clamav-daemon

En Debian y Ubuntu, el demonio escucha en el socket Unix local /var/run/clamav/clamd.ctl, que es exactamente el Predeterminado de ActivityInfo. No se requiere ninguna configuración de [Malware]: una vez que el demonio esté en funcionamiento, reinicie ActivityInfo y el escaneo estará Activo.

Instalar ClamAV en Red Hat / RHEL

ClamAV se distribuye en el repositorio EPEL en RHEL 9 y sus derivados (AlmaLinux, Rocky Linux). Instale EPEL y los paquetes de ClamAV:

yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
yum -y install clamav clamd clamav-update

Tanto /etc/freshclam.conf como /etc/clamd.d/scan.conf se entregan con una línea centinela Example que impide que los servicios se inicien hasta que se elimine (o se comente).

Además, ActivityInfo necesita acceder a clamd a través de un socket TCP local. Edite /etc/clamd.d/scan.conf para que la línea Example desaparezca y las dos directivas TCP estén descomentadas y configuradas de la siguiente manera:

# /etc/clamd.d/scan.conf

# Elimine (o comente) la línea "Example" que viene con el paquete.

# Escuche en un socket TCP local para que ActivityInfo pueda conectarse.
TCPSocket 3310
TCPAddr 127.0.0.1

Luego descargue la base de datos de signaturas e inicie ambos servicios:

freshclam
systemctl enable --now clamav-freshclam
systemctl enable --now clamd@scan

Luego apunte ActivityInfo al socket TCP añadiendo una sección [Malware] a /opt/activityinfo/config.ini y reiniciando el servicio activityinfo:

[Malware]
Host=127.0.0.1
Port=3310

Ejecutar ClamAV como un sidecar de Docker

Si ejecuta ActivityInfo como un contenedor Docker, el enfoque más sencillo es ejecutar la Imagen oficial clamav/clamav como un servicio sidecar en la misma red Docker y apuntar ActivityInfo a ella por el nombre del servicio. Consulte la guía de Configuración de Traefik para ver un ejemplo completo de Docker Compose que ejecuta ActivityInfo y ClamAV juntos. Las variables de entorno relevantes son:

ACTIVITYINFO_MALWARE_ENABLED=true
ACTIVITYINFO_MALWARE_HOST=clamav
ACTIVITYINFO_MALWARE_PORT=3310

La Imagen clamav/clamav ejecuta freshclam en el primer inicio, que descarga la base de datos de signaturas y puede tardar unos minutos. Mientras se está descargando, el escáner informa que no está disponible y ActivityInfo mantiene los datos adjuntos recién cargados como Pendientes; el barrido en segundo plano los escanea una vez que ClamAV está listo, por lo que no se requiere un orden de inicio controlado por el estado.

Opciones de configuración

El escaneo se configura en la sección [Malware] de config.ini, y cada opción también puede proporcionarse como una variable de entorno. Consulte la sección [Malware] de la Referencia del Archivo de configuración para obtener la Lista completa de Opciones y sus valores predeterminados.

Verificar que el escaneo está Activo

ActivityInfo expone un punto final de estado no autenticado que informa si el escáner está accesible. La respuesta no contiene información sobre archivos o Usuarios específicos, solo si el escáner está en funcionamiento:

curl https://activityinfo.example.gov/resources/malware/status

El punto final devuelve uno de tres estados:

Estado Significado
DISPONIBLE El escáner está accesible y respondió a un ping.
INACCESIBLE El escaneo está habilitado pero el escáner no respondió. Compruebe que clamd se está ejecutando y que el socket o el Host y el puerto de PC configurados son correctos.
DESHABILITADO El escaneo está desactivado en la configuración ([Malware] Enabled = False).

Para Confirmar que la detección funciona de principio a fin, puede cargar el inofensivo Archivo de prueba EICAR en un campo de datos adjuntos. ClamAV lo reconoce como malware, por lo que en unos instantes el dato adjunto debería marcarse como Infectado y volverse no descargable.

Deshabilitar el escaneo

Para deshabilitar por completo el escaneo de malware, establezca lo siguiente en config.ini y reinicie ActivityInfo:

[Malware]
Enabled=False

Con el escaneo Deshabilitado, los datos adjuntos se aceptan y se sirven sin ser escaneados.

Siguiente elemento
Explicación