Solo para visitantes de nuestro blog Obtenga 3 meses adicionales gratis + 10% de descuento en el plan trianual YSBLOG10
Agarra el trato

Cómo optimizar ClamAV en un servidor Linux: guía completa

Última actualización: marzo 7, 2026 9 minutos de lectura Prahlada Prajapati
Optimizar ClamAV en el servidor Linux

Para optimizar ClamAV en un servidor Linux, Ejecutar el demonio (clamd) en lugar de clamscan, mantener las firmas actualizadas con freshclam, ajustar los subprocesos y los límites de escaneo, excluir rutas ruidosas, programar escaneos inteligentes (en acceso más incrementales diarios), almacenar en caché las bases de datos en almacenamiento rápido y monitorear los registros para equilibrar la velocidad, la precisión y CPU/RAM uso.

Por qué es importante optimizar ClamAV en servidores Linux

ClamAV es un motor antivirus confiable de código abierto para Linux, pero su configuración predeterminada es conservadora. Si desea análisis más rápidos, menos falsos positivos y menor... CPU Para evitar picos de tráfico, es necesario optimizar ClamAV en servidores Linux de la manera correcta. Esta guía abarca la optimización práctica que utilizamos en servidores de producción para mantener un rendimiento óptimo sin sacrificar la seguridad.

Victorias rápidas: Lista de verificación 80/20

  • Utilice clamd + clamdscan (no clamscan) para escaneo persistente y multiproceso.
  • Actualice las firmas con frecuencia con freshclam; considere un espejo local a escala.
  • Excluye rutas efímeras como /proc, /sys, /dev y directorios de caché pesados ​​en los que confíes.
  • Ajuste MaxThreads, StreamMaxLength y los límites de tamaño de escaneo para su carga de trabajo.
  • Coloque DatabaseDirectory y TemporaryDirectory en un almacenamiento rápido (SSD/tmpfs).
  • Utilice escaneo en tiempo real (clamonacc) para protección en tiempo real, además de incrementales programados.
  • Supervise los registros y las métricas de clamd; ajústelas cuando vea cuellos de botella o falsos positivos.

Comprenda su carga de trabajo antes de realizar ajustes

Los patrones de escaneo varían según la función del servidor. Un servidor de alojamiento web gestiona muchas cargas pequeñas; una puerta de enlace de correo procesa flujos de datos; un servidor de archivos almacena archivos comprimidos de gran tamaño. Tenga en cuenta el tamaño promedio de los archivos, la concurrencia máxima y los límites de E/S. Esto determina la cantidad de subprocesos, los límites de tamaño de escaneo y la estrategia de exclusión. La optimización depende del contexto, no es una solución universal.

Instalar y mantener ClamAV actualizado

Instala el motor, el demonio y el actualizador usando los paquetes de tu distribución. Asegúrate de que los repositorios de tu sistema operativo no estén obsoletos para obtener una versión reciente de ClamAV.

# Debian/Ubuntu
sudo apt update
sudo apt install clamav clamav-daemon clamav-freshclam

# RHEL/CentOS/Alma/Rocky
sudo dnf install clamav clamd clamav-update

# openSUSE
sudo zypper install clamav clamav-daemon clamav-freshclam

Habilitar servicios y realizar una actualización inicial de la base de datos.

sudo systemctl enable --now clamav-freshclam
sudo systemctl enable --now clamav-daemon   # may be named clamd@scan or clamd

# If the database is empty, you may need:
sudo freshclam

Cambiar a clamd + clamdscan (la mayor aceleración)

clamscan carga firmas en la memoria en cada ejecución. clamd las mantiene calientes en RAM y atiende múltiples solicitudes de escaneo simultáneamente. Use clamdscan para comunicarse con el demonio a través de socket o TCP para obtener mejoras significativas en la velocidad y un menor consumo de recursos. CPU batir.

# /etc/clamav/clamd.conf (path may differ by distro)

# Socket (preferred) or TCP
LocalSocket /run/clamd.scan/clamd.sock
FixStaleSocket true

# Threads and queue - tune for your CPU and I/O
MaxThreads 8
MaxQueue 100

# Limits (protect your server from huge or deeply nested files)
MaxScanSize 750M
MaxFileSize 250M
MaxRecursion 30
MaxFiles 20000
StreamMaxLength 750M

# Performance
ConcurrentDatabaseReload yes
ReadTimeout 300
Bytecode yes
BytecodeSecurity TrustSigned
BytecodeTimeout 120000

# Exclusions (example; adapt to your environment)
ExcludePath ^/proc/
ExcludePath ^/sys/
ExcludePath ^/dev/
ExcludePath ^/run/
ExcludePath ^/var/log/
ExcludePath ^/var/cache/

# Logging
LogFile /var/log/clamav/clamd.log
LogTime yes

# Temporary and DB paths - put on fast storage when possible
TemporaryDirectory /tmp
DatabaseDirectory /var/lib/clamav

Establezca MaxThreads cerca (pero no por encima) del número de CPU núcleos que puede destinar al escaneo. Mantenga espacio libre para la web, MySQL, PHP-FPM y servicios de correo. Si usted anfitrión ocupado sitios, comience con 4 a 8 subprocesos, realice una evaluación comparativa y luego itere.

Sintoniza freshclam y gestión de firmas

freshclam extrae bases de datos oficiales (principal, diaria, bytecode). La frecuencia de actualización debe ser responsable: una exposición demasiado baja a riesgos; una limitación demasiado alta. De seis a doce comprobaciones diarias es adecuada para la mayoría de los servidores; las puertas de enlace de correo pueden ser más frecuentes.

# /etc/clamav/freshclam.conf

DatabaseMirror database.clamav.net
Checks 8
DNSDatabaseInfo current.cvd.clamav.net

# Networking
ConnectTimeout 30
ReceiveTimeout 30

# Logging
UpdateLogFile /var/log/clamav/freshclam.log
LogTime yes

# If you run a private mirror for multiple servers:
# PrivateMirror your-mirror.example.com
# ScriptedUpdates yes

Si manage Docenas de servidores alojan un espejo local y apuntan todos los nodos hacia él. Esto reduce el ancho de banda, acelera las actualizaciones y evita los límites de velocidad de los espejos públicos.

Excluir caminos ruidosos y seguros

Escanear pseudosistemas de archivos o cachés de alta rotación supone un desperdicio. CPUExcluya las rutas que no puedan contener malware real o en las que ya confíe. Mantenga dentro del alcance las cargas, las colas de correo y las raíces web.

  • Es seguro excluir: /proc, /sys, /dev, /run, cachés de paquetes, registros del sistema.
  • Opcional: montajes de respaldo que son inmutables o ya escaneados en un nodo de prueba.
  • Tenga cuidado con: /tmp, /var/tmp, /home, /var/www, /var/mail — generalmente manténgalos incluidos.

Utilice ExcludePath en clamd.conf o –exclude/–exclude-dir con clamscan/clamdscan para minimizar el ruido y acelerar los trabajos.

Programación inteligente: escaneos en tiempo real, incrementales y completos

Combine el análisis en acceso para obtener protección instantánea con análisis programados ligeros. Esto evita la persistencia del malware y mantiene la carga rutinaria predecible.

Habilitar el escaneo en acceso (fanotify)

# Start clamonacc with clamd. Adjust paths to watch.
sudo clamonacc --fdpass 
  --log=/var/log/clamav/onaccess.log 
  --include-path=/var/www 
  --include-path=/var/mail 
  --exclude-path=/proc --exclude-path=/sys --exclude-path=/dev

El escaneo en tiempo real requiere un kernel moderno (fanotify). Ejecútelo como root o con un usuario con privilegios suficientes. Inícielo mediante systemd o un supervisor para persistencia.

Programe escaneos diarios/semanales

# Daily quick incremental scan (changes in last 24h)
0 2 * * * root find /var/www -type f -mtime -1 -print0 | 
  xargs -0 -r clamdscan --fdpass --multiscan --log=/var/log/clamav/daily-www.log

# Weekly full scan off-peak
30 3 * * 0 root clamdscan --fdpass --multiscan --log=/var/log/clamav/full.log /

Use –multiscan para paralelizar entre subprocesos. Prefiera clamdscan a clamscan para mayor velocidad. Ejecute análisis completos durante periodos de poco tráfico.

Ajuste de recursos: CPUE/S, Memoria

  • Subprocesos: Comience con un máximo de subprocesos del 50 al 75 % de los núcleos disponibles. Mida y ajuste.
  • Límites de escaneo: limite MaxScanSize y StreamMaxLength para evitar que archivos gigantes bloqueen los subprocesos.
  • TemporaryDirectory: apunta a un disco rápido o tmpfs, pero asegúrate de que haya suficiente espacio libre.
  • DatabaseDirectory: Mantener en SSD. Lecturas de firmas más rápidas, optimizando el inicio y las recargas.
  • Planificación de E/S: Si los escaneos compiten con las bases de datos, considere ionice/CPU acciones para clamd.
# Example: start clamd with lower I/O priority
sudo ionice -c2 -n6 systemctl start clamav-daemon

Supervise el uso de memoria durante los escaneos completos. Si el kernel comienza a usar el intercambio de memoria, reduzca MaxThreads o mueva TemporaryDirectory de tmpfs a un disco con más espacio.

Ejemplos prácticos de comandos clamscan/clamdscan

# Scan uploads directory and show only infected files
clamdscan --fdpass --multiscan --infected /var/www/html/wp-content/uploads

# Exclude specific patterns
clamdscan --fdpass --multiscan 
  --exclude-dir='^/var/www/cache/' 
  --exclude='.log$' 
  /var/www

# Quarantine strategy (move, don't delete)
INFECTED=/quarantine
mkdir -p "$INFECTED"
clamscan -r --move="$INFECTED" --infected /home

En producción, es preferible mover los archivos infectados a una carpeta de cuarentena en lugar de eliminarlos. Esto preserva la evidencia y reduce el riesgo de falsos positivos.

Registro, monitoreo y alertas

  • Centralizar registros: clamd.log, freshclam.log, onaccess.log.
  • Alertas: reenvíe eventos “ENCONTRADOS” a su SIEM, correo electrónico o chat a través de rsyslog o un pequeño script contenedor.
  • Métricas: use clamdtop para monitorear la cola, los subprocesos y el rendimiento en tiempo real.
# Quick alert on detection (example)
tail -Fn0 /var/log/clamav/clamd.log | 
  awk '/FOUND/ {system("mail -s "ClamAV detection" [email protected] <<< ""$0""")}'

Reducir los falsos positivos y gestionar las anulaciones

  • Tenga cuidado con las aplicaciones potencialmente no deseadas (PUA). Habilítelas solo si necesita detecciones más rigurosas.
  • Utilice ExcludePath para cachés de software confiables y artefactos de compilación.
  • Para un falso positivo único, cree una entrada de ignorar usando local.ign2 en DatabaseDirectory.
# Example ignore file (one signature per line)
# /var/lib/clamav/local.ign2
Win.Trojan.Example:abcdef1234567890abcdef1234567890

Ignorar solo después de verificar con varios escáneres y hashes. Documentar cada anulación para auditorías.

Errores Comunes que se deben Evitar

  • Ejecutar clamscan para trabajos de rutina (demasiado lento) en lugar de clamdscan.
  • Escanear /proc, /sys o realizar grandes montajes de copia de seguridad innecesariamente.
  • Habilitar controles excesivos en freshclam que provocan limitación.
  • Eliminar archivos infectados automáticamente sin cuarentena.
  • Ignorar los registros y asumir que los valores predeterminados son "configurar y olvidar".

Ejemplos de optimización por rol de servidor

Servidores de alojamiento web

  • Acceso para cargas y raíces web.
  • Escaneos incrementales diarios de /var/www y de los hogares de los usuarios.
  • Excluir cachés (cachés de imágenes, plantillas compiladas).
  • Hilos: 4–8 dependiendo de PHP-Carga de FPM/DB.

Puertas de enlace de correo

  • Controles altos para freshclam (por ejemplo, 12–24), pero respeta las políticas de espejo.
  • Escaneo de flujo a través de clamd con integración MTA.
  • StreamMaxLength y MaxFileSize ajustados para mantener un alto rendimiento.

Servidores de archivos

  • Escaneo en acceso en montajes compartidos.
  • Análisis completo semanal fuera de temporada con cuarentena.
  • Considere excluir archivos inmutables de gran tamaño, pero escanearlos durante las ventanas de mantenimiento.

Solución de problemas de rendimiento

  • Alto CPU Todo el día: Reduzca MaxThreads o disminuya el alcance en el acceso.
  • Respuestas web lentas durante los escaneos: reduzca la prioridad de ionice o programe los escaneos fuera de horas pico.
  • El escaneo se interrumpe en archivos grandes: aumente MaxScanSize/StreamMaxLength y asegúrese de que TemporaryDirectory tenga espacio.
  • Errores de Freshclam: Compruebe el cortafuegos/DNS, ajuste las comprobaciones o utilice un espejo cercano.

Notas de seguridad y cumplimiento

  • Retención en cuarentena y cadena de custodia para respuesta a incidentes.
  • Controles de acceso a registros y directorios de cuarentena.
  • Verificación periódica de la frescura de la firma y el tiempo de actividad del demonio con comprobaciones de estado de systemd.
# Simple systemd health probe (service override snippet)
# /etc/systemd/system/clamav-daemon.service.d/override.conf
[Service]
ExecStartPost=/bin/sh -c 'sleep 5 && /usr/bin/clamdscan --version || systemctl restart clamav-daemon'

¿Necesita endurecimiento administrado? YouStable Puedes Ayudarnos

Si prefiere que expertos configuren y mantengan ClamAV, YouStable, manageEl alojamiento Linux incluye refuerzo de seguridad, escaneo en tiempo real, perfiles de clamd optimizados y monitoreo proactivo. Optimizamos su carga de trabajo (WordPress, correo, recursos compartidos de archivos) y mantenemos un rendimiento estable mientras cumple con sus requisitos. mejores prácticas de seguridad.

Preguntas frecuentes: Optimización de ClamAV en servidores Linux

1. ¿Es clamd más rápido que clamscan?

Sí. clamd carga las firmas en la memoria una vez y atiende múltiples solicitudes simultáneamente. clamscan vuelve a leer las bases de datos en cada ejecución, lo que es más lento y CPU-pesado. Para producción, utilice clamd + clamdscan para obtener mejoras de rendimiento significativas.

2. ¿Con qué frecuencia debo utilizar freshclam?

Para la mayoría de los servidores, se realizan de 6 a 12 comprobaciones diarias para equilibrar la frescura y la imparcialidad del servidor. Las puertas de enlace de correo o los entornos de alto riesgo pueden aumentar este porcentaje. Si... manage Muchos servidores crean un espejo local y apuntan freshclam hacia él para evitar limitaciones.

3. ¿Qué directorios debo excluir de los análisis de ClamAV?

Excluya pseudosistemas de archivos (/proc, /sys, /dev, /run), registros del sistema y cachés de confianza. Mantenga los datos de usuario, las cargas, las raíces web, los spools de correo y los directorios temporales dentro del alcance. Las exclusiones deben justificarse y documentarse.

4. ¿Cómo puedo reducir los falsos positivos de forma segura?

Verifique con múltiples escáneres y hashes. Prefiera ExcludePath para ubicaciones seguras conocidas. Para firmas específicas, agregue una línea a local.ign2 para ignorarlas. Evite omisiones generalizadas que oculten futuras amenazas.

5. ¿Debo habilitar el escaneo en acceso en todas las rutas?

No. Empiece con rutas de alto riesgo (subidas, inicios de usuarios, correo). Los accesos rápidos pueden aumentar la sobrecarga. Combine el acceso rápido específico con análisis incrementales programados y un análisis completo semanal para equilibrar la protección y el rendimiento.

Deja Tu Comentario

Su dirección de correo electrónico no será publicada. Las areas obligatorias están marcadas como requeridas *

Ir al Inicio