Este artículo explica cómo configurar un servidor vsftpd habilitado para TLS en un servidor Debian 8 y cómo acceder al servidor FTP con FileZilla. FTP es un protocolo muy inseguro por defecto porque todas las contraseñas y todos los datos se transfieren en texto claro. Mediante el uso de TLS, toda la comunicación se puede cifrar, lo que hace que el FTP sea mucho más seguro.
1 nota preliminar
En este tutorial, usaré el nombre de host server1.example.com con la dirección IP 192.168.1.100. Estas configuraciones pueden diferir para usted, por lo que debe reemplazarlas cuando corresponda. Utilizo la configuración mínima del servidor Debian 8 como base para este tutorial.
2 Instalación de vsftpd y OpenSSL
TLS necesita OpenSSL; para instalar vsftpd y OpenSSL, simplemente ejecutamos:
apt-get -y install vsftpd openssl
3 Creando el certificado SSL para TLS
Para usar TLS, debemos crear un certificado SSL. Lo creo en /etc/ssl/private; si el directorio no existe, créelo ahora::
mkdir -p /etc/ssl/private
chmod 700 /etc/ssl/private
Posteriormente, podemos generar el certificado SSL de la siguiente manera:
openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
Nombre del país (código de 2 letras) [AU]:<-- Ingrese el nombre de su país (por ejemplo, "DE").
Nombre del estado o provincia (nombre completo) [Algún estado]:<-- Ingrese su estado o nombre de la provincia.
Nombre de la localidad (p. ej., ciudad) []:<-- Ingrese su ciudad.
Nombre de la organización (p. ej., empresa) [Internet Widgits Pty Ltd]:<-- Ingrese el nombre de su organización (p. ej., el nombre de su empresa).
Nombre de la unidad organizativa (p. ej., sección) []:<-- Ingrese el nombre de su unidad organizativa (p. ej., "Departamento de TI").
Nombre común (p. ej., SU nombre) []:<-- Ingrese el nombre de dominio completo del sistema (por ejemplo, "servidor1.ejemplo.com").
Dirección de correo electrónico []:<-- Ingrese su dirección de correo electrónico.
4 Habilitar TLS en vsftpd
Para habilitar TLS en vsftpd, abra /etc/vsftpd.conf...
nano /etc/vsftpd.conf
... y agregue o cambie las siguientes opciones:
[...]
# Turn on SSL ssl_enable=YES # Allow anonymous users to use secured SSL connections allow_anon_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to # send and receive data on data connections. force_local_data_ssl=YES # All non-anonymous logins are forced to use a secure SSL connection in order to send the password. force_local_logins_ssl=YES # Permit TLS v1 protocol connections. TLS v1 connections are preferred ssl_tlsv1=YES # Permit SSL v2 protocol connections. TLS v1 connections are preferred ssl_sslv2=NO # permit SSL v3 protocol connections. TLS v1 connections are preferred ssl_sslv3=NO # Disable SSL session reuse (required by WinSCP) require_ssl_reuse=NO # Select which SSL ciphers vsftpd will allow for encrypted SSL connections (required by FileZilla) ssl_ciphers=HIGH # This option specifies the location of the RSA certificate to use for SSL # encrypted connections. rsa_cert_file=/etc/ssl/private/vsftpd.pem [...]
Si usa force_local_logins_ssl=YES y force_local_data_ssl=YES, entonces solo se permiten las conexiones TLS (esto bloquea a los usuarios con clientes FTP antiguos que no son compatibles con TLS); mediante force_local_logins_ssl=NO y force_local_data_ssl=NO se permiten conexiones TLS y no TLS, según lo que admita el cliente FTP.
Además de las opciones de TLS, asegúrese de tener también las siguientes configuraciones en su vsftpd.conf para habilitar los inicios de sesión no anónimos:
[...] # Uncomment this to allow local users to log in. local_enable=YES # # Uncomment this to enable any form of FTP write command. write_enable=YES # # Default umask for local users is 077. You may wish to change this to 022, # if your users expect that (022 is used by most other ftpd's) local_umask=022 [...]
Reinicie vsftpd después:
service vsftpd restart
Eso es todo. Ahora puede intentar conectarse usando su cliente FTP; sin embargo, debe configurar su cliente FTP para usar TLS (esto es obligatorio si usa force_local_logins_ssl=YES y force_local_data_ssl=YES); consulte el siguiente capítulo sobre cómo hacer esto con FileZilla.
5 vsftpd agregar usuario
En este paso, agregaremos un usuario local de Linux que podemos usar para conectarnos. Crearé un usuario "hasta" con la contraseña "howtoforge". Todos los usuarios de FTP tendrán sus directorios de inicio en mkdir /var/ftproot, así que primero crearé este directorio.
mkdir /var/ftproot
Luego agregue el usuario con el comando:
adduser --home /var/ftproot/till till
El comando adduser le pedirá la contraseña de usuario y algunos otros detalles
[email protected]:/# adduser --home /var/ftproot/till till
Adding user `till' ...
Adding new group `till' (1001) ...
Adding new user `till' (1001) with group `till' ...
Creating home directory `/var/ftproot/till' ...
Copying files from `/etc/skel' ...
Enter new UNIX password: <-- Enter the new password here
Retype new UNIX password: <-- Enter the new password here
passwd: password updated successfully
Changing the user information for till
Enter the new value, or press ENTER for the default
Full Name []: <-- Enter your name here or press enter to skip
Room Number []: <-- Enter room number here or press enter to skip
Work Phone []: <-- Enter work phone here or press enter to skip
Home Phone []: <-- Enter home phone here or press enter to skip
Other []: <-- Enter Other user details here or press enter to skip
Is the information correct? [Y/n] <-- Y
Agregamos con éxito un usuario de FTP.
6 Configuración de FileZilla para TLS
Para usar FTP con TLS, necesita un cliente FTP que admita TLS, como FileZilla.
En FileZilla, abra el Administrador del servidor:
Ingrese la dirección IP o el nombre de host del servidor FTP en el campo del servidor, seleccione el protocolo "FTP" y "Requerir FTP explícito sobre TLS" e ingrese el nombre de usuario en el campo de usuario.
Ahora puede conectarse al servidor. Si hace esto por primera vez, debe aceptar el nuevo certificado SSL del servidor:
Si todo va bien, ahora debería iniciar sesión en el servidor:
7 Enlaces
- vsftpd:https://security.appspot.com/vsftpd.html
- FileZilla:http://filezilla-project.org/
- Debian:http://www.debian.org/