Pure-FTP configurado el transporte con TLS y un servicio de Antivirus opensource conocido el ClamAV
Repositorios
Instalación de repositorio RPM Fusión (En caso de no tenerlo instalado)
Arquitecturas:
En este ejemplo de instalación usamos el repositorio de x86_64
$ wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm
$ rpm --import http://apt.sw.be/RPM-GPG-KEY.dag.txt
$ rpm -K rpmforge-release-0.5.2-2.el6.rf.*.rpm
rpmforge-release-0.5.2-2.el6.rf.i686.rpm: (sha1) dsa sha1 md5 gpg BIEN
Instalacion
Instalamos pure-ftp desde el repositorio RPM Forge.
$ yum install pure-ftpd -y --enablerepo rpmforge
Configuración
Siga la siguiente configuración.
$ vim /etc/pure-ftpd/pure-ftpd.conf
# Don't allow authenticated users - have a public anonymous FTP only.
AnonymousOnly no
# Disallow anonymous connections. Only allow authenticated users.
NoAnonymous yes
# If you want simple Unix (/etc/passwd) authentication, uncomment this
UnixAuthentication yes
# Port range for passive connections replies. - for firewalling.
PassivePortRange 30000 35000
# So 1000:10 limits every user to 1000 files and 10 Mb.
Quota 1000:10
# When the partition is more that X percent full, new uploads are disallowed.
MaxDiskUsage 90
# Users can't delete/write files beginning with a dot ('.')
ProhibitDotFilesWrite yes
# Prohibit *reading* of files beginning with a dot (.history, .ssh...)
ProhibitDotFilesRead yes
# Create an additional log file with transfers logged in the standard W3C
# format (compatible with most commercial log analyzers)
AltLog w3c:/var/log/pureftpd.log
# Listen only to IPv4 addresses in standalone mode (ie. disable IPv6)
# By default, both IPv4 and IPv6 are enabled.
IPV4Only yes
Reiniciamos el servicio.
$ service pure-ftpd start
Iniciando pure-ftpd: [ OK ]
Agregamos que el servicio inicie con el sistema.
$ chkconfig pure-ftpd on
Configuración de mensaje de bienvenida (opcional)
Creamos un archivo con el mensaje.
$ touch /etc/pure-ftpd/welcome.msg
$ vim /etc/pure-ftpd/welcome.msg
!ACCESO RESTRINGIDO! !RESTRICTED ACCESS!
* Nos reservamos el derecho de guardar su IP
* We reserve the right to store your IP address
Editamos el script de inicio del servicio y agregamos la opción -F junto con el path del mensaje que editamos. Busque la linea y edite como se muestra a continuación
$ vim /etc/init.d/pure-ftpd
.
.
daemon "$pure_launch_script $pure_config --daemonize > /dev/null -F /etc/pure-ftpd/welcome.msg"
.
.
Configuración de Firewall
Abrimos los puertos en el firewall del sistema que va requerir el servicio.
$ vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 20:21 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 30000:40000 -j ACCEPT
Reiniciamos el servicio para aplicar cambios.
$ service iptables restart
Configuracion de Soporte SSL (ftps)
Instamos openssl, requerido para manejar el soporte SSL.
$ yum install openssl -y
Abrimos el archivo de configuración del servicio y editamos de acuerdo a los siguiente.
$ vi /etc/pure-ftpd/pure-ftpd.conf
# This option can accept three values :
# 0 : disable SSL/TLS encryption layer (default).
# 1 : accept both traditional and encrypted sessions.
# 2 : refuse connections that don't use SSL/TLS security mechanisms,
# including anonymous sessions.
TLS 2
# List of ciphers that will be accepted for SSL/TLS connections
TLSCipherSuite HIGH:!MEDIUM:!LOW:+TLSv1:!SSLv2:+SSLv3@STRENGTH
Generemos los certificados que usara el servicio con openssl
. Fíjese en la opción -days y ajuste según su criterio.
$ openssl req -x509 -nodes -newkey rsa:2048 -keyout /etc/pki/pure-ftpd/pure-ftpd.pem -out /etc/pki/pure-ftpd/pure-ftpd.pem -days 3650
Ajustamos los permisos del archivo a solo lectura por el usuario.
$ chmod 400 /etc/pki/pure-ftpd/pure-ftpd.pem
Reiniciamos el servicio para aplicar los cambios.
$ service pure-ftpd restart
Integración de ClamAV (Antivirus)
En Pure-FTP es posible integrar un escaneo de los archivos que se suben por medio de FTP con ClamAV.
Instalamos el servicio ClamAV desde RPM Forge.
$ yum install clamav clamd -y --enablerepo rpmforge
Damos de alta el servicio para el inicio con el sistema.
$ chkconfig clamd on
Iniciamos el servicio.
$ service clamd start
Actualizamos la base de datos de virus.
$ freshclam
Abrimos el archivo de configuración del servicio y lo habilitamos poniendo el valor yes en CallUploadScript
$ vi /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.
CallUploadScript yes
Creamos el siguiente script que nos permitirá ejecutar el ClamAV y escanear el archivo.
$ vi /etc/pure-ftpd/clamav_check.sh
#!/bin/bash
/usr/bin/clamscan --remove --quiet --no-summary "$1"
Ajustamos los permisos del script.
$ chmod 555 /etc/pure-ftpd/clamav_check.sh
Probamos que nuestro script funcione con pure-uploadscript
, que es el encargado de ejecutar nuestro script y tenga la integración con ClamAV el servicio pure-ftp.
$ pure-uploadscript -B -r /etc/pure-ftpd/clamav_check.sh
Agregamos que se ejecute pure-uploadscript
cada inicio de sistema.
$ vi /etc/rc.local
#!/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
Reiniciamos el servicio para aplicar los cambios.
$ service pure-ftpd restart