ClamAV: configurar antivirus no Linux

Em espanhol, encontrei a melhor orientação para a configuração do Antivirus Clamav no Linux.

É do site Geektheory. Abaixo, segue a reprodução do site, sem tradução, porque não é necessária. A leitura está bastante acessível.

https://geekytheory.com/instalacion-y-uso-de-clamav-el-antivirus-de-linux

Creo que estamos todos de acuerdo en que la seguridad de un sistema es muy importante, por lo que en cualquier sistema operativo deberíamos tener un antivirus. Sí, también en GNU/Linux. No me vale de nada que digáis que en Linux no existen virus o que es imposible que nos infecten, porque no es así. ¿Habéis escuchado el dicho “más vale prevenir que curar”? Pues aplicadlo a vuestros equipos y servidores. He hecho una pregunta en Twitter sobre si debemos utilizar antivirus en Linux y he tenido varias respuestas que afirmaban que es mejor usar antivirus. Obvio.

Un ejemplo que da que pensar es el de tener un servidor de correo electrónico con unos cuantos usuarios, como es el caso de Geeky Theory. Será mejor analizar los correos enviados y recibidos en busca de cualquier virus, ¿no? Si no, cualquiera podría infectarse. Como no queremos eso, vamos a aprender a instalar ClamAV en nuestro sistema GNU/Linux. En este caso, lo haré en una máquina virtual con Ubuntu 14.04.
Paso 1: Instalación

Para instalar ClamAV, tendremos que introducir los siguientes comandos:

Antes de nada, actualizar el sistema:

$ sudo apt-get update && sudo apt-get upgrade -y

Tras esto, instalamos:

$ sudo apt-get install clamav clamav-daemon -y

Paso 2: Actualizar la base de datos de virus

Para que ClamAV pueda detectar virus, debe tener su base de datos actualizada.

$ sudo freshclam

Obtenemos algo parecido a esto:

ClamAV update process started at Sun Feb 8 17:24:00 2015
main.cvd is up to date (version: 55, sigs: 2424225, f-level: 60, builder: neo)
daily.cvd is up to date (version: 20045, sigs: 1320886, f-level: 63, builder: neo)
bytecode.cvd is up to date (version: 245, sigs: 43, f-level: 63, builder: dgoddard)

Paso 3: Escanear un directorio

Ya sea desde la raíz o desde cualquier carpeta, vamos a realizar un análisis de los archivos en un directorio de forma recursiva. Por ejemplo, para analizar la carpeta /home/mario, introducimos lo siguiente:

$ sudo clamscan -r /home/mario

En mi caso, obtengo este resultado:

/home/mario/.bash_history: OK
/home/mario/.bashrc: OK
/home/mario/archivo.txt: OK
/home/mario/.cache/motd.legal-displayed: Empty file
/home/mario/.bash_logout: OK
/home/mario/.profile: OK
/home/mario/LEEME.txt: OK

———– SCAN SUMMARY ———–
Known viruses: 3739593
Engine version: 0.98.6
Scanned directories: 2
Scanned files: 6
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 7.047 sec (0 m 7 s)

Se han analizado 6 archivos y no se ha encontrado ninguno infectado.

¿Qué pasaría si tuviéramos un virus? Vamos a descargar de esta página un archivo “infectado” para comprobar si el antivirus funciona:

$ wget http://www.eicar.org/download/eicar_com.zip

Acabamos de descargar un archivo ZIP que, si todo vabien, ClamAV detectará como malicioso:

$ sudo clamscan -r /home/mario

Obteniendo el siguiente resultado tras realizar el análisis:

/home/mario/.bash_history: OK
/home/mario/.bashrc: OK
/home/mario/archivo.txt: OK
/home/mario/.cache/motd.legal-displayed: Empty file
/home/mario/.bash_logout: OK
/home/mario/.profile: OK
/home/mario/LEEME.txt: OK
/home/mario/eicar_com.zip: Eicar-Test-Signature FOUND

———– SCAN SUMMARY ———–
Known viruses: 3739593
Engine version: 0.98.6
Scanned directories: 2
Scanned files: 7
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 8.265 sec (0 m 8 s)

Paso 4: Eliminar archivos infectados

Para eliminar el archivo comprimido que ClamAV ha detectado como malicioso, introducimos lo siguiente:

$ sudo clamscan –infected –remove –recursive /home/mario

Con estos parámetros, obtendremos como salida únicamente los archivos infectados, los cuales serán eliminados:

/home/mario/eicar_com.zip: Eicar-Test-Signature FOUND
/home/mario/eicar_com.zip: Removed.

———– SCAN SUMMARY ———–
Known viruses: 3739593
Engine version: 0.98.6
Scanned directories: 2
Scanned files: 7
Infected files: 1
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 9.651 sec (0 m 9 s)

Paso 5: Ejecutar demonios

Para que no tengamos que estar continuamente analizando carpetas, vamos a ejecutar un daemon en segundo plano, tanto de ClamAV como de Freshclam:

$ sudo /etc/init.d/clamav-daemon start
$ sudo /etc/init.d/clamav-freshclam start

Si da error al ejecutar los daemon, es posible que no tengáis suficiente RAM. A mi me daba error en una máquina virtual con 512 MB, pero he ampliado y ya funciona correctamente.
Paso 6: Estudiar posibles configuraciones de ClamAV

ClamAV tiene bastante parámetros de configuración. Para conocerlos todos, introducid el siguiente comando:

$ clamscan –help

Clam AntiVirus Scanner 0.98.6
By The ClamAV Team: http://www.clamav.net/about.html#credits
(C) 2007-2009 Sourcefire, Inc.

–help -h Print this help screen
–version -V Print version number
–verbose -v Be verbose
–archive-verbose -a Show filenames inside scanned archives
–debug Enable libclamav’s debug messages
–quiet Only output error messages
–stdout Write to stdout instead of stderr
–no-summary Disable summary at end of scanning
–infected -i Only print infected files
–suppress-ok-results -o Skip printing OK files
–bell Sound bell on virus detection

–tempdir=DIRECTORY Create temporary files in DIRECTORY
–leave-temps[=yes/no(*)] Do not remove temporary files
–database=FILE/DIR -d FILE/DIR Load virus database from FILE or load
all supported db files from DIR
–official-db-only[=yes/no(*)] Only load official signatures
–log=FILE -l FILE Save scan report to FILE
–recursive[=yes/no(*)] -r Scan subdirectories recursively
–allmatch[=yes/no(*)] -z Continue scanning within file after finding a match
–cross-fs[=yes(*)/no] Scan files and directories on other filesystems
–follow-dir-symlinks[=0/1(*)/2] Follow directory symlinks (0 = never, 1 = direct, 2 = always)
–follow-file-symlinks[=0/1(*)/2] Follow file symlinks (0 = never, 1 = direct, 2 = always)
–file-list=FILE -f FILE Scan files from FILE
–remove[=yes/no(*)] Remove infected files. Be careful!
–move=DIRECTORY Move infected files into DIRECTORY
–copy=DIRECTORY Copy infected files into DIRECTORY
–exclude=REGEX Don’t scan file names matching REGEX
–exclude-dir=REGEX Don’t scan directories matching REGEX
–include=REGEX Only scan file names matching REGEX
–include-dir=REGEX Only scan directories matching REGEX

–bytecode[=yes(*)/no] Load bytecode from the database
–bytecode-unsigned[=yes/no(*)] Load unsigned bytecode
–bytecode-timeout=N Set bytecode timeout (in milliseconds)
–bytecode-statistics[=yes/no(*)] Collect and print bytecode statistics
–detect-pua[=yes/no(*)] Detect Possibly Unwanted Applications
–exclude-pua=CAT Skip PUA sigs of category CAT
–include-pua=CAT Load PUA sigs of category CAT
–detect-structured[=yes/no(*)] Detect structured data (SSN, Credit Card)
–structured-ssn-format=X SSN format (0=normal,1=stripped,2=both)
–structured-ssn-count=N Min SSN count to generate a detect
–structured-cc-count=N Min CC count to generate a detect
–scan-mail[=yes(*)/no] Scan mail files
–phishing-sigs[=yes(*)/no] Signature-based phishing detection
–phishing-scan-urls[=yes(*)/no] URL-based phishing detection
–heuristic-scan-precedence[=yes/no(*)] Stop scanning as soon as a heuristic match is found
–phishing-ssl[=yes/no(*)] Always block SSL mismatches in URLs (phishing module)
–phishing-cloak[=yes/no(*)] Always block cloaked URLs (phishing module)
–partition-intersection[=yes/no(*)] Detect partition intersections in raw disk images using heuristics.
–algorithmic-detection[=yes(*)/no] Algorithmic detection
–scan-pe[=yes(*)/no] Scan PE files
–scan-elf[=yes(*)/no] Scan ELF files
–scan-ole2[=yes(*)/no] Scan OLE2 containers
–scan-pdf[=yes(*)/no] Scan PDF files
–scan-swf[=yes(*)/no] Scan SWF files
–scan-html[=yes(*)/no] Scan HTML files
–scan-archive[=yes(*)/no] Scan archive files (supported by libclamav)
–detect-broken[=yes/no(*)] Try to detect broken executable files
–block-encrypted[=yes/no(*)] Block encrypted archives
–nocerts Disable authenticode certificate chain verification in PE files
–dumpcerts Dump authenticode certificate chain in PE files

–max-filesize=#n Files larger than this will be skipped and assumed clean
–max-scansize=#n The maximum amount of data to scan for each container file (**)
–max-files=#n The maximum number of files to scan for each container file (**)
–max-recursion=#n Maximum archive recursion level for container file (**)
–max-dir-recursion=#n Maximum directory recursion level
–max-embeddedpe=#n Maximum size file to check for embedded PE
–max-htmlnormalize=#n Maximum size of HTML file to normalize
–max-htmlnotags=#n Maximum size of normalized HTML file to scan
–max-scriptnormalize=#n Maximum size of script file to normalize
–max-ziptypercg=#n Maximum size zip to type reanalyze
–max-partitions=#n Maximum number of partitions in disk image to be scanned
–max-iconspe=#n Maximum number of icons in PE file to be scanned
–enable-stats Enable statistical reporting of malware
–disable-pe-stats Disable submission of individual PE sections in stats submissions
–stats-timeout=#n Number of seconds to wait for waiting a response back from the stats server
–stats-host-id=UUID Set the Host ID used when submitting statistical info.

(*) Default scan settings
(**) Certain files (e.g. documents, archives, etc.) may in turn contain other
files inside. The above options ensure safe processing of this kind of data.

Esto es todo por este artículo. Recordad que la seguridad es importante y haced todo lo posible por evitar problemas que puedan afectar a los usuarios de vuestro servicio. ¡Saludos!
gnu linux servidor ubuntu seguridad Internet sistema clamav antivirus

Autor
Mario Pérez Esteso

Ingeniero de Telecomunicación especializado en telemática. Desarrollador cloud apasionado de la programación y del conocimiento libre. Fundador de Geeky Theory.