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. | Sí |
| Limpio | Escaneado sin encontrar ninguna amenaza. | Sí |
| 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.