ClamAV Anti-Virus

Se integra con el escáner antivirus de código abierto ClamAV para analizar archivos subidos en busca de virus.

clamav
9,592 sites
31
drupal.org

Instalar

Drupal 11, 10 v2.1.0
composer require 'drupal/clamav:^2.1'
Drupal 9, 8 v2.0.3
composer require 'drupal/clamav:^2.0'

Overview

El módulo ClamAV proporciona integración entre Drupal y el escáner antivirus de código abierto ClamAV. Cuando los usuarios suben archivos al sitio, el módulo los analiza automáticamente en busca de virus y malware antes de permitir que se guarden. Los archivos infectados se bloquean durante la rutina de validación, evitando que se almacenen en el sistema.

El módulo soporta tres modos de escaneo: ejecutable directo, daemon TCP/IP y daemon Unix socket. Los modos daemon ofrecen un rendimiento significativamente mejor (aproximadamente 10,000 veces más rápido que el modo ejecutable) porque las definiciones de virus permanecen cargadas en memoria en lugar de recargarse para cada escaneo.

Los administradores del sitio pueden configurar qué stream wrappers se escanean, controlar el comportamiento cuando ClamAV no está disponible y habilitar el registro detallado. El módulo también proporciona un hook que permite a otros módulos incluir o excluir condicionalmente archivos específicos del escaneo basándose en criterios personalizados.

Features

  • Escaneo automático de virus en todos los archivos subidos durante el proceso de validación de archivos
  • Tres modos de escaneo: Ejecutable (clamscan directo), Daemon TCP/IP y Daemon Unix Socket para opciones de implementación flexibles
  • Modos daemon de alto rendimiento que son aproximadamente 10,000 veces más rápidos que el modo ejecutable
  • Comportamiento configurable cuando ClamAV no está disponible: bloquear archivos no verificados o permitir su subida
  • Filtrado de esquemas de stream wrapper para controlar qué sistemas de archivos se escanean (local vs remoto)
  • Sistema de hooks extensible que permite a otros módulos controlar qué archivos se escanean
  • Comando Drush para escaneo por lotes de todos los archivos gestionados existentes en el sistema
  • Registro completo con modos verbose y debug para resolución de problemas
  • Integración con el informe de estado del sistema mostrando la versión de ClamAV y el estado de conexión
  • Integración transparente con el sistema de eventos de validación de archivos de Drupal

Use Cases

Protección de subidas de usuarios en un sitio comunitario

En sitios web donde los usuarios pueden subir archivos (como foros, redes sociales o plataformas de compartición de documentos), habilita ClamAV para escanear automáticamente todos los archivos subidos antes de guardarlos. Esto previene que usuarios maliciosos suban archivos infectados que podrían dañar a otros usuarios que los descarguen.

Asegurar la gestión de documentos privados

Para intranets o sistemas de gestión de documentos que manejan archivos sensibles, configura ClamAV con el modo daemon Unix socket para un rendimiento óptimo. Establece el comportamiento ante interrupciones en 'Bloquear archivos no verificados' para asegurar que ningún archivo sin escanear pueda subirse incluso si ClamAV está temporalmente no disponible.

Archivos adjuntos en comercio electrónico

En sitios de comercio electrónico donde los clientes suben archivos para pedidos personalizados (imprentas, servicios de diseño), usa ClamAV para escanear todos los adjuntos. Habilita el registro verbose para mantener un registro de auditoría de todos los archivos escaneados.

Escaneo retroactivo de archivos existentes

Después de instalar ClamAV en un sitio existente, usa el comando 'drush clamav:scan-files' para escanear por lotes todos los archivos previamente subidos e identificar cualquier contenido infectado que pueda existir ya en el sistema.

Excluir tipos de archivo específicos del escaneo

Implementa hook_clamav_file_is_scannable() para omitir el escaneo de tipos de archivo confiables (como imágenes de fuentes verificadas) o archivos subidos por administradores, mientras se mantiene el escaneo completo para contenido subido por usuarios.

Implementación multi-servidor con escaneo centralizado

En un entorno de clúster web, configura todos los servidores web para usar el modo Daemon TCP/IP apuntando a un servidor ClamAV central, asegurando un escaneo consistente en todos los nodos sin requerir la instalación de ClamAV en cada servidor web.

Tips

  • Usa el modo Daemon (Unix socket o TCP/IP) en lugar del modo Ejecutable para un rendimiento significativamente mejor - los modos daemon son aproximadamente 10,000 veces más rápidos.
  • El modo daemon Unix socket es ligeramente más rápido que el modo TCP/IP porque evita la sobrecarga de red, pero el modo TCP/IP es más flexible para implementaciones distribuidas.
  • Habilita el registro verbose temporalmente cuando estés solucionando problemas para ver logs de todos los archivos escaneados, no solo los infectados.
  • Mantén las definiciones de virus de ClamAV actualizadas regularmente usando freshclam para asegurar la detección de las últimas amenazas.
  • Considera las implicaciones de seguridad de la configuración 'Permitir archivos no verificados' - úsala solo si tienes otras medidas de seguridad implementadas para manejar posibles interrupciones de ClamAV.
  • Usa el comando Drush periódicamente para escanear archivos existentes, especialmente después de actualizar las definiciones de virus.

Technical Details

Admin Pages 1
Configuración de ClamAV /admin/config/media/clamav

Configura los ajustes de integración de ClamAV anti-virus incluyendo modo de escaneo, parámetros de conexión, comportamiento ante interrupciones y opciones de registro.

Permisos 1
Administrar ClamAV Anti-Virus

Permite a los usuarios configurar los ajustes de ClamAV incluyendo modo de escaneo, parámetros de conexión y opciones de registro.

Hooks 1
hook_clamav_file_is_scannable

Permite a los módulos controlar si un archivo específico debe ser escaneado por ClamAV. Los módulos pueden forzar el escaneo, prevenir el escaneo o no afectar la decisión.

Drush Commands 1
drush clamav:scan-files

Escanea todos los archivos permanentes gestionados existentes en el sistema en busca de virus usando ClamAV. Procesa archivos por lotes para evitar problemas de timeout.

Troubleshooting 5
Error de conexión de ClamAV en el informe de estado

Verifica que el daemon de ClamAV esté ejecutándose y accesible. Para modo TCP/IP, comprueba que el nombre de host y puerto sean correctos. Para modo Unix socket, asegúrate de que el archivo socket exista y tenga los permisos adecuados. Para modo ejecutable, verifica que la ruta a clamscan sea correcta.

Los archivos se bloquean pero no aparece mensaje de virus

Esto típicamente indica que ClamAV no está disponible y 'Bloquear archivos no verificados' está habilitado. Revisa los logs de Drupal para errores de conexión y verifica el estado del servicio ClamAV.

Los escaneos son muy lentos

Cambia del modo Ejecutable al modo Daemon (TCP/IP o Unix socket). Los modos daemon son aproximadamente 10,000 veces más rápidos porque las definiciones de virus permanecen cargadas en memoria.

Errores de permiso denegado

Asegúrate de que el usuario del servidor web tenga permiso para acceder al archivo socket de ClamAV (para modo Unix socket) o ejecutar el binario clamscan (para modo ejecutable). Verifica los permisos de archivos y las políticas de SELinux/AppArmor.

Los archivos grandes causan timeout durante la subida

Aumenta max_execution_time y post_max_size de PHP. Considera usar el modo daemon para un escaneo más rápido. Para archivos muy grandes, implementa hook_clamav_file_is_scannable() para omitir el escaneo basándose en el tamaño del archivo.

Security Notes 5
  • Siempre mantén las definiciones de virus de ClamAV actualizadas usando freshclam o el servicio clamav-freshclam para proteger contra las últimas amenazas.
  • Considera establecer outage_action en 'Bloquear archivos no verificados' en entornos de producción para prevenir que archivos potencialmente infectados se suban cuando ClamAV no está disponible.
  • El módulo solo escanea archivos durante la subida - no monitorea continuamente los archivos después de que se guardan. Ejecuta escaneos por lotes periódicos usando el comando Drush.
  • Los archivos almacenados en stream wrappers remotos (como almacenamiento S3 o CDN) no se escanean por defecto. Habilita esquemas remotos específicos solo si es necesario y si soportan el mecanismo de escaneo.
  • El escaneo de virus añade latencia a las subidas de archivos. Para sitios de alto tráfico, asegúrate de que tu infraestructura ClamAV pueda manejar la carga usando el modo daemon y potencialmente escalando horizontalmente.