Instalar ClamAV en Debian 11

Instalar ClamAV en Debian 11

En este tutorial, vamos a aprender cómo instalar ClamAV en Debian 11. ClamAV es un motor antivirus de código abierto para detectar troyanos, virus, malware, adware, rootkits y otras amenazas maliciosas.

Algunas de las características de ClamAV incluyen;

  • soporte incorporado para varios formatos de archivo, incluidos Zip, Tar, Gzip, Bzip2, OLE2, Cabinet, CHM, BinHex, SIS y otros.
  • soporte integrado para casi todos los formatos de archivo de correo
  • soporte integrado para ejecutables ELF y archivos Portable Executable comprimidos con UPX, FSG, Petite, NsPack, wwpack32, MEW, Upack y ofuscados con SUE, Y0da Cryptor y otros;
  • soporte incorporado para formatos de documentos populares, incluidos archivos de Microsoft Office y Mac Office, HTML, RTF y PDF.
  • Admite múltiples lenguajes de firma, como coincidencia de firma basada en hash, comodines, lógica booleana y cualquier regla escrita personalizada en lenguaje Bytecode.

ClamAV incluye un demonio de análisis de subprocesos múltiples, utilidades de línea de comandos para el análisis de archivos bajo demanda y actualizaciones automáticas de firmas. Uno de sus usos principales es en los servidores de correo como un escáner de virus de correo electrónico del lado del servidor.

Instalar ClamAV en Debian 11

Actualizar caché de paquetes del sistema

Para empezar, actualice la memoria caché del paquete del sistema.

Te puede interesar:

5 razones prácticas para aprender Linux en 2023

apt update

Instalar ClamAV en Debian 11

En el momento de escribir este artículo, los repositorios predeterminados de Debian 11 garantizan la versión de ClamAV: 0.103.2.

apt-cache policy clamav clamav-daemon
clamav:  Installed: 0.103.2+dfsg-2  Candidate: 0.103.2+dfsg-2  Version table: *** 0.103.2+dfsg-2 500        500 http://deb.debian.org/debian bullseye/main amd64 Packages        100 /var/lib/dpkg/statusclamav-daemon:  Installed: 0.103.2+dfsg-2  Candidate: 0.103.2+dfsg-2  Version table: *** 0.103.2+dfsg-2 500        500 http://deb.debian.org/debian bullseye/main amd64 Packages        100 /var/lib/dpkg/status

La versión estable actual es la versión 0.104.0.

Por lo tanto, para asegurarse de que está funcionando la última versión de ClamAV, debe compilar e instalar desde las fuentes.

Descargar ClamAV

Instalar ClamAV desde fuentes en Debian 11

Instale las dependencias de paquetes requeridos y las herramientas de compilación.

apt install -y gcc make pkg-config python3 python3-pip python3-pytest valgrind check libbz2-dev libcurl4-openssl-dev libjson-c-dev libmilter-dev sudo libncurses5-dev libpcre2-dev libssl-dev libxml2-dev zlib1g-dev cmake

Crear cuenta de servicio ClamAV;

useradd -r -M -d /var/lib/clamav -s /bin/false -c "Clam Antivirus" clamav

Vaya a la página de descargas de clamav.net y descargue el código fuente. Puede ejecutar el siguiente comando para descargarlo en la versión de lanzamiento estable actual a partir de este escrito.

VER=0.104.0
wget https://www.clamav.net/downloads/production/clamav-$VER.tar.gz

Instalar ClamAV en Debian 11

Extrae el código fuente, compila e instala ClamAV en Debian 11.

tar xzf clamav-$VER.tar.gz

Compile e instale ClamAV;

cd clamav-$VER
mkdir build && cd build
cmake ..     -D CMAKE_INSTALL_PREFIX=/usr     -D CMAKE_INSTALL_LIBDIR=lib     -D APP_CONFIG_DIRECTORY=/etc/clamav     -D DATABASE_DIRECTORY=/var/lib/clamav     -D ENABLE_JSON_SHARED=OFF
cmake --build .
ctest

Salida de muestra;

Test project /root/clamav-0.104.0/build      Start  1: libclamav 1/10 Test  #1: libclamav ........................   Passed    8.22 sec      Start  2: libclamav_valgrind 2/10 Test  #2: libclamav_valgrind ...............   Passed   67.93 sec      Start  3: clamscan 3/10 Test  #3: clamscan .........................   Passed    2.64 sec      Start  4: clamscan_valgrind 4/10 Test  #4: clamscan_valgrind ................   Passed   35.01 sec      Start  5: clamd 5/10 Test  #5: clamd ............................   Passed   10.02 sec      Start  6: clamd_valgrind 6/10 Test  #6: clamd_valgrind ...................   Passed   46.44 sec      Start  7: freshclam 7/10 Test  #7: freshclam ........................   Passed    2.03 sec      Start  8: freshclam_valgrind 8/10 Test  #8: freshclam_valgrind ...............   Passed   20.16 sec      Start  9: sigtool 9/10 Test  #9: sigtool ..........................   Passed    0.46 sec      Start 10: sigtool_valgrind10/10 Test #10: sigtool_valgrind .................   Passed    1.23 sec100% tests passed, 0 tests failed out of 10Total Test time (real) = 194.14 sec
cmake --build . --target install

Configuración de ClamAV

Una vez finalizada la instalación, debe configurar ClamAV.

Hay tres configuraciones principales;

  • freshclam.conf requerido para FreshClam
  • clamd.conf requerido por ClamD
  • clamav-milter.conf requerido por ClamAV-Milter si habilitó el soporte de ClamAV para el filtrado de correo (no lo hicimos en esta configuración).

Desde nuestra instalación, configuramos ClamAV para almacenar las configuraciones en /etc/clamav.

ls -1 /etc/clamav/
clamav-milter.conf.sampleclamd.conf.samplefreshclam.conf.sample

Actualice estas configuraciones de la siguiente manera;

cat > /etc/clamav/freshclam.conf << 'EOL'DatabaseOwner clamavUpdateLogFile /var/log/clamav/freshclam.logLogVerbose falseLogSyslog falseLogFacility LOG_LOCAL6LogFileMaxSize 0LogRotate trueLogTime trueForeground falseDebug falseMaxAttempts 5DatabaseDirectory /var/lib/clamavDNSDatabaseInfo current.cvd.clamav.netConnectTimeout 30ReceiveTimeout 0TestDatabases yesScriptedUpdates yesCompressLocalDatabase noBytecode trueNotifyClamd /etc/clamav/clamd.confChecks 24DatabaseMirror db.local.clamav.netDatabaseMirror database.clamav.netEOL
cat > /etc/clamav/clamd.conf << 'EOL'LocalSocket /var/run/clamav/clamd.ctlFixStaleSocket trueLocalSocketGroup clamavLocalSocketMode 666User clamavScanMail trueScanArchive trueArchiveBlockEncrypted falseMaxDirectoryRecursion 15FollowDirectorySymlinks falseFollowFileSymlinks falseReadTimeout 180MaxThreads 12MaxConnectionQueueLength 15LogSyslog falseLogRotate trueLogFacility LOG_LOCAL6LogClean falseLogVerbose falsePreludeEnable noPreludeAnalyzerName ClamAVDatabaseDirectory /var/lib/clamavOfficialDatabaseOnly falseSelfCheck 3600Foreground falseDebug falseScanPE trueMaxEmbeddedPE 10MScanOLE2 trueScanPDF trueScanHTML trueMaxHTMLNormalize 10MMaxHTMLNoTags 2MMaxScriptNormalize 5MMaxZipTypeRcg 1MScanSWF trueExitOnOOM falseLeaveTemporaryFiles falseAlgorithmicDetection trueScanELF trueIdleTimeout 30CrossFilesystems truePhishingSignatures truePhishingScanURLs truePhishingAlwaysBlockSSLMismatch falsePhishingAlwaysBlockCloak falsePartitionIntersection falseDetectPUA falseScanPartialMessages falseHeuristicScanPrecedence falseStructuredDataDetection falseCommandReadTimeout 30SendBufTimeout 200MaxQueue 100ExtendedDetectionInfo trueOLE2BlockMacros falseAllowAllMatchScan trueForceToDisk falseDisableCertCheck falseDisableCache falseMaxScanTime 120000MaxScanSize 100MMaxFileSize 25MMaxRecursion 16MaxFiles 10000MaxPartitions 50MaxIconsPE 100PCREMatchLimit 10000PCRERecMatchLimit 5000PCREMaxFileSize 25MScanXMLDOCS trueScanHWP3 trueMaxRecHWP3 16StreamMaxLength 25MLogFile /var/log/clamav/clamav.logLogTime trueLogFileUnlock falseLogFileMaxSize 0Bytecode trueBytecodeSecurity TrustSignedBytecodeTimeout 60000OnAccessMaxFileSize 5MEOL

Dado que no compilamos ClamAV con soporte de filtrado de correo, las configuraciones anteriores son suficientes.

Cree los directorios de registro, base de datos y socket para FreshClam.

mkdir /var/log/clamav/ /var/lib/clamav /var/run/clamav/

Establezca la propiedad de los directorios de registro, base de datos y socket en Clamav usuario.

chown clamav: /var/log/clamav/ /var/lib/clamav /var/run/clamav/

Actualice la base de datos de firmas de ClamAV

Para que el escaneo funcione, necesita una base de datos de virus actualizada. Hay dos opciones para actualizar la base de datos de ClamAV:

  • clamav-freshclam: actualiza la base de datos desde Internet. Esto se recomienda con acceso a Internet.
  • Offline update para sistemas sin acceso directo a Internet.

Actualizar base de datos de firmas con clamav-freshclam

Si tiene acceso a Internet, puede utilizar clamav-freshclam para actualizar la base de datos de firmas de virus de ClamAV.

Luego actualice la base de datos de virus;

sudo -u clamav freshclam

El comando extraerá las actualizaciones de la base de datos y es posible que obtenga un resultado similar al siguiente.

Tue Sep 14 22:29:35 2021 -> ClamAV update process started at Tue Sep 14 22:29:35 2021Tue Sep 14 22:29:35 2021 -> daily database available for download (remote version: 26294)Time:  1m 18s, ETA:    0.0s [========================>]   55.56MiB/55.56MiBTue Sep 14 22:30:55 2021 -> Testing database: '/var/lib/clamav/tmp.6d40b4137a/clamav-ec762c472f7babc64cd6617646a05aa9.tmp-daily.cvd' ...Tue Sep 14 22:31:02 2021 -> Database test passed.Tue Sep 14 22:31:02 2021 -> daily.cvd updated (version: 26294, sigs: 1972718, f-level: 90, builder: raynman)Tue Sep 14 22:31:02 2021 -> main database available for download (remote version: 61)Time:  4m 00s, ETA:    0.0s [========================>]  160.41MiB/160.41MiBTue Sep 14 22:35:05 2021 -> Testing database: '/var/lib/clamav/tmp.6d40b4137a/clamav-f2c7c5efaa09e11ebb5085cbd4abe3f3.tmp-main.cvd' ...Tue Sep 14 22:35:13 2021 -> Database test passed.Tue Sep 14 22:35:13 2021 -> main.cvd updated (version: 61, sigs: 6607162, f-level: 90, builder: sigmgr)Tue Sep 14 22:35:13 2021 -> bytecode database available for download (remote version: 333)Time:    2.0s, ETA:    0.0s [========================>]  286.79KiB/286.79KiBTue Sep 14 22:35:15 2021 -> Testing database: '/var/lib/clamav/tmp.6d40b4137a/clamav-60d878c5920160c4068f0a9a43fc214e.tmp-bytecode.cvd' ...Tue Sep 14 22:35:15 2021 -> Database test passed.Tue Sep 14 22:35:15 2021 -> bytecode.cvd updated (version: 333, sigs: 92, f-level: 63, builder: awillia2)Tue Sep 14 22:35:15 2021 -> ^Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.ctl: No such file or directory

freshclam descarga las bases de datos ClamAV, CVD y los coloca debajo, /var/lib/clamav/.

ls -1 /var/lib/clamav/
bytecode.cvddaily.cvdfreshclam.datmain.cvd

Crear servicio FreshClam;

cat > /etc/systemd/system/clamav-freshclam.service << EOL[Unit]Description=ClamAV virus database updaterDocumentation=man:freshclam(1) man:freshclam.conf(5) https://www.clamav.net/documents# If user wants it run from cron, don't start the daemon.ConditionPathExists=!/etc/cron.d/clamav-freshclamWants=network-online.targetAfter=network-online.target[Service]User=clamavGroup=clamavExecStart=/usr/bin/freshclam -d --foreground=trueStandardOutput=syslog[Install]WantedBy=multi-user.targetEOL

Cree e inició el servicio demonio ClamAV;

cat > /etc/systemd/system/clamav-daemon.service << EOL[Unit]Description=Clam AntiVirus userspace daemonDocumentation=man:clamd(8) man:clamd.conf(5) https://www.clamav.net/documents/# Check for database existenceConditionPathExistsGlob=/var/lib/clamav/main.{c[vl]d,inc}ConditionPathExistsGlob=/var/lib/clamav/daily.{c[vl]d,inc}[Service]User=clamavGroup=clamavExecStart=/usr/sbin/clamd --foreground=true# Reload the databaseExecReload=/bin/kill -USR2 $MAINPIDStandardOutput=syslogTimeoutStartSec=420[Install]WantedBy=multi-user.targetEOL

Vuelva a cargar el demonio systemd y asegúrese de que los servicios estén habilitados para ejecutarse en el arranque del sistema;

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

Escaneo ClamAV

Opciones de la CLI de Clamscan y ejemplo de uso

Clamscan se utiliza para escanear archivos y directorios en busca de virus. Desde las páginas man, la sintaxis del comando clamscan es:

clamscan [options] [file/directory/-]

Algunas de las opciones del comando clamscan y su ejemplo de uso se ilustran a continuación;

Imprimir información de ayuda usando -h o --help opción.

clamscan -h

No un: Opciones marcadas con [=yes/no(*)] puede ser seguido opcionalmente por =si o = no. Si son llamados sin el argumento booleano, el escáner asumirá ‘sí’. El asterisco marca la configuración interna predeterminada para una opción determinada.

Escanea un directorio o archivo especifico;

clamscan /home/

Resultados de muestra

Loading:    16s, ETA:   0s [========================>]    8.56M/8.56M sigs       Compiling:   3s, ETA:   0s [========================>]       41/41 tasks ----------- SCAN SUMMARY -----------Known viruses: 8564637Engine version: 0.104.0Scanned directories: 1Scanned files: 0Infected files: 0Data scanned: 0.00 MBData read: 0.00 MB (ratio 0.00:1)Time: 20.375 sec (0 m 20 s)Start Date: 2021:09:14 23:14:15End Date:   2021:09:14 23:14:35
clamscan /home/filename.docx

No mostrar el resumen al final del escaneo.

clamscan --no-summary /home/

Imprimir solo archivos establecidos (-i, --infected);

clamscan -i /

Omitir la impresión de archivos OK (-o, --suppress-ok-results);

clamscan -o /home/

Hacer sonar una campana en la deteccion de virus (--bell);

clamscan --bell -i /home

Escanear directorios recursivamente (-r, --recursive).

clamscan --bell -i -r /home

Guardar informe de escaneo en ARCHIVO (-l FILE, --log=FILE);

clamscan --bell -i -r /home -l home-scan.txt

Escanee los archivos enumerados línea por línea en ARCHIVO (-f FILE,--file-list=FILE).

clamscan -i -f /tmp/scan

Eliminar ficheros activados (--remove[=yes/no(*)]). Tenga cuidado ya que esto elimina el archivo por completo.

clamscan -r --remove /home/USER

Mover archivos realizados a DIRECTORIO (--move=DIRECTORY). El directorio debe tener permisos de escritura para el usuario o el usuario sin privilegios que ejecuta clamscan.

clamscan -r -i --move=/home/USER/infected /home/

Copie los archivos obtenidos en el DIRECTORIO (–copy=DIRECTORIO). El directorio debe tener permisos de escritura para el usuario o el usuario sin privilegios que ejecuta clamscan.

clamscan -r -i --copy=/home/USER/infected /home/

Hay una lista bastante larga de opciones para varios usos de clamscan. consultar man clamscan para más detalles.

Códigos de retorno ClamAV

Los siguientes son los códigos de retorno de salida para ClamAV.

  • 0 : No se encontró ningún virus.
  • 1 : Virus(es) encontrado(s).
  • 2: Ocurrieron algunos errores.

Limitación del uso de la CPU de Clamscan

clamscan puede hacer un uso intensivo de la CPU, especialmente si escanea un directorio grande.

Para limitar el tiempo de CPU de clamscan a ciertos niveles, puede utilizar dos herramientas;

  • nice: reduce la prioridad de clamscan (limita el tiempo de CPU relativo).
  • cpulimit: limita el tiempo de CPU absoluto.

Para usar un buen comando,

nice -n 15 clamscan && clamscan -ir /

Siempre que ningún otro proceso requiera tiempo de CPU, clamscan lo maximizará. Pero tan pronto como otro proceso con una prioridad más alta necesita tiempo de cpu, clamscan lo perderá.

Usando cpulimit;

cpulimit -z -e clamscan -l 20 & clamscan -ir /

Limita el tiempo de CPU de clamscan al 15 % al escanear todo el directorio raíz.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *