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