Usando Linux para muchas cosas y disfrutando de videojuegos, en dispositivos moviles, consolas y pc. Using Linux for many things and enjoying video games, mobile devices, consoles and pc

Como instalar Clamav y usarlo en Linux paso a paso

DriveMeca instalando ClamAV y usandolo en Linux paso a paso
Nunca tendremos la certeza de si un archivo tiene o no virus y mas hoy en el día en que Internet, la red de redes, juega un papel importante en las comunicaciones diarias de todos. Uso Linux me dirás, muy bien, te felicito, pero aun nuestro OS favorito puede sufrir un ataque por un virus, troyano, etc y es en ese momento que tenemos que estar preparados para poder salir del problema sin inconvenientes. Como?, sencillo, usando Clamav, un popular antivirus multiplataforma (ya dije que es opensource?) el cual hoy te mostrare paso a paso como instalarlo y configurarlo en varias distribuciones Linux populares del momento. Para este tutorial en español he escogido Centos / RedHat y Ubuntu desktop / Ubuntu Server (para mis, las mas usadas en el ámbito empresarial) pero esto no quiere decir que la configuracion en otras no sea algo parecida.


Requerimientos para instalar Clamav

  • Linux Ubuntu Desktop o Linux Ubuntu server
  • Linux Centos 7.x o Linux RedHat 7.x
  • Conectividad a internet


Todos los comandos se ejecutaran desde una consola y debemos tener acceso a la cuenta root o privilegios de root independientemente de la distro que usemos

Instalamos Clamav en Centos / RedHat

-Instalamos el repositorio Epel
yum install epel-release

-Instalamos Clamav
yum install clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd

-Creeríamos que si están los rpms, clamav debería funcionar al instalarlo. No es asi, debemos hacer unos cambios. Primero copiamos el conf de clamd.conf a /etc/clamd.d (donde normalmente lo busca el daemon)
cp /usr/share/clamav/template/clamd.conf /etc/clamd.d/clamd.conf


Configuramos Clamd y Freshclam en Linux Ubuntu

-Editamos el conf, normalmente los valores por default son suficientes pero listare los importantes. Es buena practica verificarlos todos y si necesitamos habilitar o deshabilitar alguno, lo hagamos documentando que hicimos para mas adelante poder ver donde hay un posible error
vi /etc/clamd.d/clamd.conf
#Comentamos esta linea para poder ejecutarlo
#Example

LogFile /var/log/clamd
LogFileMaxSize 2M
LogTime yes
LogRotate yes
ExtendedDetectionInfo yes
#Usuario que ejecutara clamav
User clamscan
#Donde se creara el socket
LocalSocket /var/run/clamd.scan/clamd.sock
FixStaleSocket yes
SelfCheck 600

-Editamos el conf de freshclam, el servicio encargado de descargar las firmas de virus actualizadas para el uso de clamav
vi /etc/freshclam.conf
#
#Example
DatabaseDirectory /var/lib/clamav
UpdateLogFile /var/log/freshclam.log
LogFileMaxSize 2M
LogTime yes
LogRotate yes
DatabaseOwner clamupdate

-Cambiamos el dueño y grupo (owner y group) del conf para que pueda ser leído por el servicio
chown clamscan.clamscan /etc/freshclam.conf

-Verificamos que el archivo para ejecutar el servicio exista y tenga el siguiente contenido
vi /usr/lib/systemd/system/clam-freshclam.service
[Unit]
Description = freshclam scanner
After = network.target
[Service]
Type = forking
ExecStart = /usr/bin/freshclam -d -c 4
Restart = on-failure
PrivateTmp = true
[Install]
WantedBy=multi-user.target

-Activamos el servicio de freshclam (clam-freshclam) y lo iniciamos. Apenas se ejecuta, descargara las firmas de virus actualizadas a /var/lib/clamav
systemctl enable clam-freshclam
systemctl start clam-freshclam

-Verificamos el servicio este ejecutándose correctamente
systemctl status clam-freshclam
● clam-freshclam.service - freshclam scanner
   Loaded: loaded (/usr/lib/systemd/system/clam-freshclam.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2016-07-30 19:33:41 COT; 43s ago
  Process: 17245 ExecStart=/usr/bin/freshclam -d -c 4 (code=exited, status=0/SUCCESS)
 Main PID: 17246 (freshclam)
   CGroup: /system.slice/clam-freshclam.service
           └─17246 /usr/bin/freshclam -d -c 4

jul 30 19:33:41 cen7.test.com systemd[1]: Starting freshclam scanner...
jul 30 19:33:41 cen7.test.com freshclam[17246]: freshclam daemon 0.99.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
jul 30 19:33:41 cen7.test.com freshclam[17246]: ClamAV update process started at Sat Jul 30 19:33:41 2016
jul 30 19:33:41 cen7.test.com systemd[1]: Started freshclam scanner.
jul 30 19:33:41 cen7.test.com freshclam[17246]: main.cvd is up to date (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
jul 30 19:34:09 cen7.test.com freshclam[17246]: getfile: daily-21724.cdiff not found on database.clamav.net (IP: 128.199.133.36)
jul 30 19:34:09 cen7.test.com freshclam[17246]: getpatch: Can't download daily-21724.cdiff from database.clamav.net

-Corregimos el archivo de ejecución del servicio clamd. En el rpm viene con .@ y no lo encontrara sino lo arreglamos
mv /usr/lib/systemd/system/clamd@.service /usr/lib/systemd/system/clamd.service

-Verificamos el archivo de ejecusion del servicio de clamd, debe contener lo siguiente
vi /usr/lib/systemd/system/clamd.service
[Unit]
Description = clamd scanner (%i) daemon
After = syslog.target nss-lookup.target network.target

[Service]
Type = simple
ExecStart = /usr/sbin/clamd -c /etc/clamd.d/clamd.conf --foreground=yes
Restart = on-failure
PrivateTmp = true

[Install]
WantedBy=multi-user.target

-Creamos un archivo para los logs de clamd y le damos permisos de clamscan (owner y group)
touch /var/log/clamd
chown clamscan.clamscan /var/log/clamd

-Activamos el servicio clamd y lo ejecutamos
systemctl enable clamd
systemctl start clamd

-Verificamos este ejecutandose correctamente
systemctl status clamd
● clamd.service - clamd scanner () daemon
   Loaded: loaded (/usr/lib/systemd/system/clamd.service; enabled; vendor preset: disabled)
   Active: active (running) since sáb 2016-07-30 19:51:45 COT; 4s ago
 Main PID: 17408 (clamd)
   CGroup: /system.slice/clamd.service
           └─17408 /usr/sbin/clamd -c /etc/clamd.d/clamd.conf --foreground=yes

jul 30 19:51:45 cen7.test.com systemd[1]: Started clamd scanner () daemon.
jul 30 19:51:45 cen7.test.com systemd[1]: Starting clamd scanner () daemon...
jul 30 19:51:45 cen7.test.com clamd[17408]: Received 0 file descriptor(s) from systemd.
jul 30 19:51:45 cen7.test.com clamd[17408]: clamd daemon 0.99.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
jul 30 19:51:45 cen7.test.com clamd[17408]: Running as user clamscan (UID 995, GID 993)
jul 30 19:51:45 cen7.test.com clamd[17408]: Log file size limited to 2097152 bytes.
jul 30 19:51:45 cen7.test.com clamd[17408]: Reading databases from /var/lib/clamav
jul 30 19:51:45 cen7.test.com clamd[17408]: Not loading PUA signatures.
jul 30 19:51:45 cen7.test.com clamd[17408]: Bytecode: Security mode set to "TrustSigned".

-Es buena politica verificar logs para certificar que todo este ejecutandose correctamente. Comenzamos mirando el log de freshclam para estar seguros de que se descargaron las firmas de virus
cat /var/log/freshclam.log
Sat Jul 30 19:33:41 2016 -> --------------------------------------
Sat Jul 30 19:33:41 2016 -> freshclam daemon 0.99.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
Sat Jul 30 19:33:41 2016 -> ClamAV update process started at Sat Jul 30 19:33:41 2016
Sat Jul 30 19:33:41 2016 -> main.cvd is up to date (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
Sat Jul 30 19:34:09 2016 -> WARNING: getfile: daily-21724.cdiff not found on database.clamav.net (IP: 128.199.133.36)
Sat Jul 30 19:34:09 2016 -> WARNING: getpatch: Can't download daily-21724.cdiff from database.clamav.net
Sat Jul 30 19:34:40 2016 -> nonblock_connect: connect timing out (30 secs)
Sat Jul 30 19:34:40 2016 -> Can't connect to port 80 of host database.clamav.net (IP: 104.131.196.175)
Sat Jul 30 19:34:40 2016 -> Trying host database.clamav.net (69.12.162.28)...
Sat Jul 30 19:34:40 2016 -> WARNING: getfile: daily-21724.cdiff not found on database.clamav.net (IP: 69.12.162.28)
Sat Jul 30 19:34:40 2016 -> WARNING: getpatch: Can't download daily-21724.cdiff from database.clamav.net
Sat Jul 30 19:34:40 2016 -> Trying host database.clamav.net (64.22.33.90)...
Sat Jul 30 19:34:41 2016 -> WARNING: getfile: daily-21724.cdiff not found on database.clamav.net (IP: 64.22.33.90)
Sat Jul 30 19:34:41 2016 -> WARNING: getpatch: Can't download daily-21724.cdiff from database.clamav.net
Sat Jul 30 19:34:41 2016 -> WARNING: Incremental update failed, trying to download daily.cvd
Sat Jul 30 19:34:59 2016 -> Downloading daily.cvd [100%]
Sat Jul 30 19:35:00 2016 -> daily.cvd updated (version: 21999, sigs: 468291, f-level: 63, builder: neo)
Sat Jul 30 19:35:01 2016 -> Downloading bytecode-279.cdiff [100%]
Sat Jul 30 19:35:01 2016 -> Downloading bytecode-280.cdiff [100%]
Sat Jul 30 19:35:02 2016 -> Downloading bytecode-281.cdiff [100%]
Sat Jul 30 19:35:02 201apt-get install clamav-daemon6 -> Downloading bytecode-282.cdiff [100%]
Sat Jul 30 19:35:03 2016 -> Downloading bytecode-283.cdiff [100%]
Sat Jul 30 19:35:03 2016 -> bytecode.cld updated (version: 283, sigs: 53, f-level: 63, builder: neo)
Sat Jul 30 19:35:07 2016 -> Database updated (4687134 signatures) from database.clamav.net (IP: 194.8.197.22)
Sat Jul 30 19:35:07 2016 -> --------------------------------------

-Miramos el contenido del log de clamd
cat /var/log/clamd 
Sat Jul 30 19:53:34 2016 -> +++ Started at Sat Jul 30 19:53:34 2016
Sat Jul 30 19:53:34 2016 -> Received 0 file descriptor(s) from systemd.
Sat Jul 30 19:53:34 2016 -> clamd daemon 0.99.2 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
Sat Jul 30 19:53:34 2016 -> Running as user clamscan (UID 995, GID 993)
Sat Jul 30 19:53:34 2016 -> Log file size limited to 2097152 bytes.
Sat Jul 30 19:53:34 2016 -> Reading databases from /var/lib/clamav
Sat Jul 30 19:53:34 2016 -> Not loading PUA signatures.
Sat Jul 30 19:53:34 2016 -> Bytecode: Security mode set to "TrustSigned".


Instalamos Clamav en Linux Ubuntu server o Linux Ubuntu Desktop

-Abrimos una consola e instalamos clamav
sudo apt install clamav-daemon


Instalamos Clamav en Linux Ubuntu

-Verificamos la configuracion de freshclam. Los defaults por lo general funcionaran muy bien
sudo vi /etc/clamav/freshclam.conf

-Descargamos por primera vez las firmas de virus usadas por clamav. Sin las firmas, clamav no ejecutara y mostrara un error comentandolo
sudo freshclam
ClamAV update process started at Mon Aug  1 12:42:01 2016
WARNING: Your ClamAV installation is OUTDATED!
WARNING: Local version: 0.99 Recommended version: 0.99.2
DON'T PANIC! Read http://www.clamav.net/support/faq
Downloading main.cvd [100%]
main.cvd updated (version: 57, sigs: 4218790, f-level: 60, builder: amishhammer)
Downloading daily.cvd [100%]
daily.cvd updated (version: 22009, sigs: 473001, f-level: 63, builder: neo)
Downloading bytecode.cvd [100%]
bytecode.cvd updated (version: 283, sigs: 53, f-level: 63, builder: neo)
Database updated (4691844 signatures) from db.local.clamav.net (IP: 200.236.31.1)
WARNING: Clamd was NOT notified: Can't connect to clamd through /var/run/clamav/clamd.ctl: No such file or directory

-Verificamos ya tengamos las firmas de virus descargadas
ls -la /var/lib/clamav/
total 117696
drwxr-xr-x  2 clamav clamav      4096 ago  1 12:45 .
drwxr-xr-x 41 root   root        4096 ago  1 11:48 ..
-rw-r--r--  1 clamav clamav     86357 ago  1 12:45 bytecode.cvd
-rw-r--r--  1 clamav clamav  11265457 ago  1 12:44 daily.cvd
-rw-r--r--  1 clamav clamav 109143933 ago  1 12:44 main.cvd
-rw-------  1 clamav clamav       260 ago  1 12:45 mirrors.dat

-Activamos el servicio de freshclam (clamav-freshclam) y lo ejecutamos
sudo systemctl enable clamav-freshclam
sudo systemctl start clamav-freshclam

-Verificamos se este ejecutando servicio de freshclam
sudo systemctl status clamav-freshclam
● clamav-freshclam.service - ClamAV virus database updater
   Loaded: loaded (/lib/systemd/system/clamav-freshclam.service; enabled; vendor
   Active: active (running) since lun 2016-08-01 12:23:05 COT; 16s ago
     Docs: man:freshclam(1)
           man:freshclam.conf(5)
           http://www.clamav.net/lang/en/doc/
 Main PID: 4424 (freshclam)
    Tasks: 1
   Memory: 4.7M
      CPU: 246ms
   CGroup: /system.slice/clamav-freshclam.service
           └─4424 /usr/bin/freshclam -d --foreground=true

ago 01 12:23:05 ubuser systemd[1]: Started ClamAV virus database updater.
ago 01 12:23:05 ubuser freshclam[4424]: ClamAV update process started at Mon Aug
ago 01 12:23:05 ubuser freshclam[4424]: WARNING: Your ClamAV installation is OUT
ago 01 12:23:05 ubuser freshclam[4424]: WARNING: Local version: 0.99 Recommended
ago 01 12:23:05 ubuser freshclam[4424]: DON'T PANIC! Read http://www.clamav.net/

-Activamos y ejecutamos el servicio de clamav (clamav-daemon)
sudo systemctl enable clamav-daemon
sudo systemctl start clamav-daemon

-Verificamos se este ejecutandose el servicio
sudo systemctl status clamav-daemon
● clamav-daemon.service - Clam AntiVirus userspace daemon
   Loaded: loaded (/lib/systemd/system/clamav-daemon.service; enabled; vendor pr
   Active: active (running) since lun 2016-08-01 12:46:38 COT; 4s ago
     Docs: man:clamd(8)
           man:clamd.conf(5)
           http://www.clamav.net/lang/en/doc/
 Main PID: 4630 (clamd)
    Tasks: 1
   Memory: 244.2M
      CPU: 4.400s
   CGroup: /system.slice/clamav-daemon.service
           └─4630 /usr/sbin/clamd --foreground=true

ago 01 12:46:38 ubuser systemd[1]: Started Clam AntiVirus userspace daemon.

-Como buena politica miramos logs, en este caso el de clamav para verificar si hay errores o no se pudo cargar algun modulo
cat /var/log/clamav/clamav.log
Mon Aug  1 12:46:39 2016 -> +++ Started at Mon Aug  1 12:46:39 2016
Mon Aug  1 12:46:39 2016 -> Received 1 file descriptor(s) from systemd.
Mon Aug  1 12:46:39 2016 -> clamd daemon 0.99 (OS: linux-gnu, ARCH: x86_64, CPU: x86_64)
Mon Aug  1 12:46:39 2016 -> Running as user clamav (UID 111, GID 117)
Mon Aug  1 12:46:39 2016 -> Log file size limited to 4294967295bytes.
Mon Aug  1 12:46:39 2016 -> Reading databases from /var/lib/clamav
Mon Aug  1 12:46:39 2016 -> Not loading PUA signatures.
Mon Aug  1 12:46:39 2016 -> Bytecode: Security mode set to "TrustSigned".
Mon Aug  1 12:46:45 2016 -> Loaded 4686446 signatures.
Mon Aug  1 12:46:47 2016 -> TCP: No tcp AF_INET/AF_INET6 SOCK_STREAM socket received from systemd.
Mon Aug  1 12:46:47 2016 -> LOCAL: Received AF_UNIX SOCK_STREAM socket from systemd.
Mon Aug  1 12:46:47 2016 -> Limits: Global size limit set to 104857600 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: File size limit set to 26214400 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: Recursion level limit set to 16.
Mon Aug  1 12:46:47 2016 -> Limits: Files limit set to 10000.
Mon Aug  1 12:46:47 2016 -> Limits: MaxEmbeddedPE limit set to 10485760 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: MaxHTMLNormalize limit set to 10485760 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: MaxHTMLNoTags limit set to 2097152 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: MaxScriptNormalize limit set to 5242880 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: MaxZipTypeRcg limit set to 1048576 bytes.
Mon Aug  1 12:46:47 2016 -> Limits: MaxPartitions limit set to 50.
Mon Aug  1 12:46:47 2016 -> Limits: MaxIconsPE limit set to 100.
Mon Aug  1 12:46:47 2016 -> Limits: PCREMatchLimit limit set to 10000.
Mon Aug  1 12:46:47 2016 -> Limits: PCRERecMatchLimit limit set to 5000.
Mon Aug  1 12:46:47 2016 -> Limits: PCREMaxFileSize limit set to 26214400.
Mon Aug  1 12:46:47 2016 -> Archive support enabled.
Mon Aug  1 12:46:47 2016 -> Algorithmic detection enabled.
Mon Aug  1 12:46:47 2016 -> Portable Executable support enabled.
Mon Aug  1 12:46:47 2016 -> ELF support enabled.
Mon Aug  1 12:46:47 2016 -> Mail files support enabled.
Mon Aug  1 12:46:47 2016 -> OLE2 support enabled.
Mon Aug  1 12:46:47 2016 -> PDF support enabled.
Mon Aug  1 12:46:47 2016 -> SWF support enabled.
Mon Aug  1 12:46:47 2016 -> HTML support enabled.
Mon Aug  1 12:46:47 2016 -> Self checking every 3600 seconds.


Usando Clamav en Linux Ubuntu de forma gráfica

-Aunque en la mayoría de los casos usaremos clamav desde linea de comandos, hay ocasiones en que lo instalaremos en nuestra estación de trabajo o en un Linux Ubuntu Server con interfaz gráfica. Para estas oportunidades es que podemos usar clamtk. Lo instalamos desde linea de comandos
sudo apt install clamtk clamtk-nautilus

-Después de instalado podemos ejecutarlo, ya sea desde linea de comandos (sudo clamtk), Unity o desde el menú de MATE como en la siguiente imagen podrás ver
DriveMeca instalando ClamAV y usandolo en Linux paso a paso

-La ventana principal de Clamtk muestra todas las opciones (o inicio de opciones) en un único lugar. Lo primero que debemos hacer es verificar su configuracion dando click al botón Configuración
DriveMeca instalando ClamAV y usandolo en Linux paso a paso

-En Configuración veremos varias opciones, unas con valores por default y otras que podemos activar. Regresamos a la ventana principal dando click al botón Back
DriveMeca instalando ClamAV y usandolo en Linux paso a paso

-En la parte inferior de la ventana principal veremos en la sección Análisis los botones para hacer una búsqueda de virus. En este ejemplo doy click al botón Analizar una carpeta, elegimos y se ejecuta. Al final debe salir una ventana diciéndonos que termino y no se encontraron amenazas (virus)
DriveMeca instalando ClamAV y usandolo en Linux paso a paso


Usando Clamav desde linea de comandos en Linux (cualquier distribución)

-A veces necesitamos un rápido chequeo y no esperar a que nuestro servicio detecte un problema. Para esto podemos ejecutar desde linea de comandos clamscan y pasarle el directorio a verificar como parámetro. Una forma rápida y conveniente de verificar archivos en una carpeta Linux
clamscan -v Documentos/
..
..
Scanning Documentos/Guane.docx
Documentos/Guane.docx: OK

----------- SCAN SUMMARY -----------
Known viruses: 4686446
Engine version: 0.99
Scanned directories: 1
Scanned files: 55
Infected files: 0
Data scanned: 306.31 MB
Data read: 527.63 MB (ratio 0.58:1)
Time: 31.175 sec (0 m 31 s)

Verificando versión de Clamav

-Abrimos una consola y ejecutamos
clamscan -V
ClamAV 0.99/22010/Mon Aug  1 14:12:44 2016

Artículos recomendadosVerificando si una ip publica esta reportada por spam
                                            Como bloquear una ip o email en postfix
                                            Como instalar Linux Centos 7 paso a paso
                                            Configurando servicios en Linux Centos / RedHat
                                            Como instalar y configurar Ubuntu Server 16.04 LTS paso a paso
                                            Como instalar interfaz grafica en Ubuntu server paso a paso


Ahora ya estas mas protegido de virus, troyanos y otras amenazas en Linux Ubuntu / Linux Ubuntu Server / Linux Centos 7.x y Linux RedHat 7.x con este tutorial de ClamAV español. Te gusto el articulo? hazme un favor, compártelo en tus redes sociales (compartir es sexy). Escríbeme en los comentarios aquí debajo y pasa la voz compartiendo el tweet.

Sígueme en twitter google+facebook o email y podrás estar enterado de todas mis publicaciones.
Disfrútenlo.

Share/Bookmark