Este tutorial explica cómo puede integrar ClamAV en PureFTPd para escanear virus en un sistema CentOS 7. Al final, siempre que se cargue un archivo a través de PureFTPd, ClamAV lo revisará y lo eliminará si contiene un virus o malware.
1 nota preliminar
Debería tener una configuración de PureFTPd en funcionamiento en su servidor CentOS 7, p. como se muestra en este tutorial:alojamiento virtual con PureFTPd y MySQL (incluida la gestión de cuotas y ancho de banda) en CentOS 7.
2 Instalación de ClamAV
ClamAV no está disponible en los repositorios oficiales de CentOS, por lo tanto, habilitamos el repositorio EPEL (si aún no lo ha hecho. Comience importando las claves RPM GPK.
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*
Luego habilitamos el repositorio EPEL en nuestro sistema CentOS ya que muchos de los paquetes que vamos a instalar en el transcurso de este tutorial no están disponibles en el repositorio oficial de CentOS 7:
yum -y install epel-release
yum -y install yum-priorities
Edite /etc/yum.repos.d/epel.repo...
nano /etc/yum.repos.d/epel.repo
... y agregue la línea prioridad=10 a la sección [epel]:
[epel] name=Extra Packages for Enterprise Linux 7 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 [...]
Luego actualizamos nuestros paquetes existentes en el sistema:
yum update
Posteriormente, podemos instalar ClamAV de la siguiente manera:
yum -y clamav clamav-server clamav-data clamav-update clamav-filesystem clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd
Edite el archivo /etc/freshclam.conf y comente la línea Ejemplo:
nano /etc/freshclam.conf
agregando un # delante de la línea Ejemplo:
.....
# Comment or remove the line below.
# Example
....
Luego edite el archivo /etc/clamd.d/scan.conf:
nano /etc/clamd.d/scan.conf
y comente la línea Ejemplo como lo hicimos en el archivo anterior y elimine el # delante de la línea LocalSocket.
.....
# Comment or remove the line below.
# Example
....
LocalSocket /var/run/clamd.scan/clamd.sock
....
A continuación, creamos los enlaces de inicio del sistema para clamd y lo iniciamos:
systemctl enable [email protected]
freshclam
Luego inicie el servicio clamav:
systemctl start [email protected]
Puede comprobar el estado del demonio ClamAV con este comando:
systemctl status [email protected]
El resultado debería ser así:
[[email protected] system]# systemctl status [email protected]
? [email protected] - Generic clamav scanner daemon
Loaded: loaded (/usr/lib/systemd/system/[email protected]; disabled; vendor preset: disabled)
Active: active (running) since Thu 2016-04-07 15:44:28 CEST; 1min 48s ago
Main PID: 10945 (clamd)
CGroup: /system.slice/system-clamd.slice/[email protected]
??10945 /usr/sbin/clamd -c /etc/clamd.d/scan.conf --nofork=yes
Apr 07 15:44:36 server1.example.com clamd[10945]: HTML support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: XMLDOCS support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HWP3 support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: Self checking every 600 seconds.
Apr 07 15:44:36 server1.example.com clamd[10945]: PDF support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: SWF support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HTML support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: XMLDOCS support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: HWP3 support enabled.
Apr 07 15:44:36 server1.example.com clamd[10945]: Self checking every 600 seconds.
3 Configuración de PureFTPd
Primero abrimos /etc/pure-ftpd/pure-ftpd.conf y establecemos CallUploadScript en sí:
nano /etc/pure-ftpd/pure-ftpd.conf
[...] # If your pure-ftpd has been compiled with pure-uploadscript support, # this will make pure-ftpd write info about new uploads to # /var/run/pure-ftpd.upload.pipe so pure-uploadscript can read it and # spawn a script to handle the upload. # Don't enable this option if you don't actually use pure-uploadscript. CallUploadScript yes [...]
A continuación, creamos el archivo /etc/pure-ftpd/clamav_check.sh (que llamará a /usr/bin/clamdscan siempre que se cargue un archivo a través de PureFTPd)...
nano /etc/pure-ftpd/clamav_check.sh
#!/bin/sh /usr/bin/clamdscan --fdpass --remove --quiet --no-summary -c /etc/clamd.d/scan.conf "$1"
... y hacerlo ejecutable:
chmod 755 /etc/pure-ftpd/clamav_check.sh
Ahora iniciamos el programa pure-uploadscript como un demonio:llamará a nuestro script /etc/pure-ftpd/clamav_check.sh siempre que se cargue un archivo a través de PureFTPd:
pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Por supuesto, no desea iniciar el daemon manualmente cada vez que inicia el sistema; por lo tanto, abrimos /etc/rc.local...
nano /etc/rc.local
... y agregue la línea /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh - p. de la siguiente manera:
#!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. /usr/sbin/pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh touch /var/lock/subsys/local
Finalmente reiniciamos PureFTPd:
systemctl restart [email protected]
¡Eso es todo! Ahora, cada vez que alguien intente cargar malware en su servidor a través de PureFTPd, los archivos "malos" se eliminarán silenciosamente.
4 Imagen de máquina virtual
Este tutorial está disponible como máquina virtual lista para usar en formato OVA / OVF para suscriptores de Howtoforge. El formato VM es compatible con VMWare y Virtualbox y otras herramientas que pueden importar este formato. Puede encontrar el enlace de descarga en el menú derecho en la parte superior. Haga clic en el nombre del archivo para iniciar la descarga.
Los detalles de inicio de sesión de la máquina virtual son:
Inicio de sesión SSH
Nombre de usuario:root
Contraseña:howtoforge
Inicio de sesión en MariaDB
Nombre de usuario:root
Contraseña:howtoforge
Cambie las contraseñas después del primer arranque.
5 Enlaces
- FTPD puro:http://www.pureftpd.org/
- ClamAV:http://www.clamav.net/
- CentOS:http://www.centos.org/