FTP (Protocolo de transferencia de archivos) es probablemente el método más popular para cargar archivos en un servidor. ProFTPD es un servidor FTP popular y fácil de configurar para sistemas Linux que admite cifrado SSL/TLS.
FTP es un protocolo inseguro porque todas las contraseñas y todos los datos se transfieren en claro (como texto sin formato). Mediante el uso de TLS, toda la comunicación se puede cifrar, lo que convierte a FTP en un protocolo seguro para transferir archivos. Este artículo describe cómo configurar proftpd con TLS en el servidor Ubuntu 15.04 .
Requisitos
- Servidor Ubuntu 15.04 de 64 bits
- privilegios sudo/root
Qué haremos en este tutorial:
- Instalar Proftpd y OpenSSL
- Configurar Proftpd
- Configurar usuario
- Configurar TLS con proftpd
- Pruebas
Instalar Proftpd y OpenSSL
Proftpd y OpenSSL están disponibles en el repositorio de Ubuntu y se pueden instalar con el comando apt. Como es habitual con los comandos de instalación, ejecutamos el comando apt a través de sudo para ejecutarlo con privilegios de root:
sudo apt-get install -y proftpd openssl
Cuando comience la instalación, se le preguntará si desea ejecutar Proftpd como un servicio inetd o independiente. Elija la opción independiente aquí y luego Aceptar.
Configurar Proftpd
Una vez instalado Proftpd, deberá cambiar algunos archivos de configuración. El archivo de configuración de Proftpd se encuentra en el directorio /etc/proftpd/. Editaré el archivo proftpd.conf con el editor nano.
cd /etc/proftpd/
nano proftpd.conf
En la línea ServerName, cambie el nombre a su nombre de host o dominio:
ServerName "myhostname"
Descomente Raíz predeterminada:
# Use this to jail all users in their homes DefaultRoot ~
y reinicie Proftpd:
systemctl restart proftpd
Agregar un usuario de FTP
Hay dos formas comunes de acceder a un servidor FTP:
1. FTP anónimo , el servidor FTP proporciona acceso a cualquier persona sin necesidad de tener una cuenta de usuario y contraseña.
2. Acceso con usuario y contraseña , solo los usuarios que tienen una cuenta de usuario y una contraseña para acceder al servidor FTP.
Voy a configurar la opción 2 aquí. El FTP anónimo ha sido popular al comienzo de la era de Internet, pero hoy en día hay tanto mal uso de los servidores FTP anónimos que esta opción solo se puede utilizar en entornos cerrados, como una red doméstica o empresarial.
Antes de crear un usuario para Proftpd, agregue /bin/false a su archivo /etc/shells.
echo "/bin/false" >> /etc/shells
y ahora creará un usuario con un directorio de inicio al que tendrá acceso por FTP. Deshabilitaré el acceso de shell para este usuario asignándole el shell "/bin/false" para asegurarme de que no pueda iniciar sesión por SSH. Mi nombre de usuario se llama "yuuki", reemplace yuuki con su nombre de usuario en el siguiente comando.
adduser --home /home/yuuki --shell /bin/false yuuki
El comando anterior creará un nuevo usuario llamado yuuki con el directorio de inicio /home/yuuki/ y sin acceso de shell /bin/false.
Y ahora configure Proftpd para permitir que el usuario yuuki acceda al servidor FTP.
cd /etc/proftpd/
nano proftpd.conf
agregue esta configuración para permitir que el usuario yuuki inicie sesión y cargue/descargue archivos a/desde su directorio de inicio /home/yuuki :
<Directory /home/yuuki> Umask 022 022 AllowOverwrite off <Limit LOGIN> AllowUser yuuki DenyALL </Limit> <Limit ALL> Order Allow,Deny AllowUser yuuki Deny ALL </Limit> <Limit MKD STOR DELE XMKD RNRF RNTO RMD XRMD> AllowUser yuuki Deny ALL </Limit> </Directory>
y luego reinicie Proftpd.
systemctl restart proftpd
Hasta esta etapa, el FTP ya se puede usar sin encriptación. Ahora lo haremos seguro habilitando TLS.
Configurar TLS en Proftpd
Para usar TLS, debe crear un certificado SSL. Generaré el certificado SSL con el comando OpenSSL:
openssl req -x509 -newkey rsa:1024 -keyout /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt -nodes -days 365
El comando generará un archivo de certificado proftpd.crt en el directorio /etc/ssl/certs/ y un archivo de clave de certificado proftpd.key en el directorio /etc/ssl/private/.
Cambie los permisos de archivo de los archivos de certificado a 600 para prohibir el acceso de otros usuarios:
chmod 600 /etc/ssl/certs/proftpd.crt
chmod 600 /etc/ssl/private/proftpd.key
Ahora regrese al directorio Proftpd y configure Proftpd para usar SSL en el certificado que generó.
cd /etc/proftpd/
nano proftpd.conf
Descomente la línea tls:
Include /etc/proftpd/tls.conf
Guárdelo y edite el archivo tls:
nano tls.conf
Descomente todas estas líneas:
TLSEngine on TLSLog /var/log/proftpd/tls.log TLSProtocol SSLv23 TLSRSACertificateFile /etc/ssl/certs/proftpd.crt TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key TLSOptions NoCertRequest TLSVerifyClient off TLSRequired on
Guardar y Salir. El último paso es reiniciar el servidor Proftpd:
systemctl restart proftpd
Prueba
Para probar la configuración, intente conectarse a su servidor FTP con un cliente FTP. Usaré FileZilla aquí. Complete la IP del servidor, el nombre de usuario, la contraseña y el puerto:
Server IP : 192.168.1.108 username : yuuki Password ****** Port : 21
y luego haga clic en Conexión rápida. Se le pedirá que confirme el Certificado SSL, simplemente haga clic en Aceptar.
Ahora ha iniciado sesión en el servidor FTP con certificado TLS/SSL .