Proftpd: Configuración mínima FTP / FTPS

Configuración básica de Proftpd para tener disponibles mediante FTP / FTPS (FTP + SSL) en un mismo servidor (192.168.1.24) las cuentas de los usuarios del sistema. Se puede restringir el acceso por IP / Dominio simplemente editando la IP/Dominio en la etiqueta “<VirtualHost>”. Aunque se expliqué como instalar Proftpd en CentOS7 la configuración del servicio siempre es igual.

Instalar Protftpd en CentOS7.

yum -y install epel-release
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
yum -y update
yum install -y proftpd openssl proftpd-utils
systemctl start proftpd.service
systemctl enable proftpd.service
# No olvidar desactivar / configurar: SElinux / iptables.

Certificado y llave privada: Para el ejemplo se creará una llave privada (test.key) y certificado SSL autofirmado (test.crt) en el directorio /etc/pki/tls/certs.

cd /etc/pki/tls/certs/
openssl req -x509 -nodes -sha512 -days 365 -newkey rsa:4096 -keyout test.key -out test.crt

Configuración Proftpd: Fichero de configuración /etc/proftpd.conf.

#-----------------------------------------------------------------------
# Configuración del servicio.
#-----------------------------------------------------------------------
 
ServerName                      "ProFTPD Test server"
ServerIdent                     on "FTP Test Server ready."
ServerAdmin                     "xxx@xxx.xx"
DefaultServer                   "off"
UseIPv6				"off"
 
<Limit SITE_CHMOD>
        DenyAll
</Limit>
 
SystemLog                           none
LogFormat                           authentication "%{%F %T}t %P  from: %a to: %{protocol}:%H:%p  user: %U       msg: %S"
LogFormat                           transfer       "%{%F %T}t %P  from: %a to: %{protocol}:%H:%p  user: %U       file: %f        cmd: %m %J"
 
<Global>
    #-----------------------------------------------------------------------
    # Configuracion genérica.
    #-----------------------------------------------------------------------
 
    DefaultRoot                         ~
    Umask                               022
    allowOverwrite                      on
    User                                nobody
    Group                               nobody
    ExtendedLog                         /var/log/proftpd_auth.log AUTH,EXIT,SEC authentication
    ExtendedLog                         /var/log/proftpd_xfer.log READ,WRITE transfer
    AuthOrder                           mod_sql.c mod_auth_unix.c mod_auth_pam.c
</Global>
 
# Si no se desea prestar servicio desde el puerto 21, simplemente comentar este bloque virtualhost o configura el puerto 0 para desactivarlo.
<VirtualHost 192.168.1.24>
    Port                                    21
    TLSEngine                               off
</VirtualHost>
 
# Configuración FTPS.
<VirtualHost 192.168.1.24>
    Port                                    990
    TLSEngine                               on
    TLSOptions                              UseImplicitSSL
 
    #-----------------------------------------------------------------------
    # Configuración TLS
    #-----------------------------------------------------------------------
 
    TLSRSACertificateFile           /etc/pki/tls/certs/test.crt
    TLSRSACertificateKeyFile        /etc/pki/tls/certs/test.key
    TLSLog                          /var/log/proftpd_tls.log
    TLSVerifyClient                 off
    TLSRenegotiate                  none
    TLSRequired                     off
    TLSCipherSuite 		    HIGH:MEDIUM:+TLSv1:!SSLv2:+SSLv3
    TLSProtocol                     TLSv1 TLSv1.2
</VirtualHost>

Los usuarios con cuenta en el sistema ya podrían usar FTP/FTPS para conectar al servidor y visualizar su /home.

Probar configuración FTP y FTPS desde la linea de comandos.

## FTP (Puerto 21).

ftp 192.168.1.24 
Connected to 192.168.1.24.
220 ProFTPD 1.3.5e Server (ProFTPD Test server) [192.168.1.24]
Name (192.168.1.24:usuario): usuario
331 Password required for usuario
Password: 
230 User usuario logged in
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
200 PORT command successful
150 Opening ASCII mode data connection for file list
drwxr-xr-x   2 usuario  usuario         6 Mar 24 00:51 cacas
226 Transfer complete
ftp> quit
221 Goodbye.


## FTPS (Puerto 990).

lftp ftps://usuario@192.168.1.24:990
Password: 
lftp usuario@192.168.1.24:~> ls                  
drwxr-xr-x   2 usuario  usuario         6 Mar 24 00:51 cacas

Si el certificado es autofirmado o no confiable, lftp no conectará si no se desactiva la verificación de certificados. Se debe especificar “ssl:verify-certificate no”.

echo "set ssl:verify-certificate no" >> ~/.lftp/rc