Cómo instalar el servidor FTP vsftpd con SSL/TLS en CentOS 8
FTP es un protocolo ampliamente utilizado para transferir archivos entre servidor y cliente. Hoy en día existen muchos servidores FTP de código abierto, como FTPD, VSFTPD, PROFTPD y pureftpd. Entre ellos, VSFTPD es un protocolo seguro, rápido y el más utilizado en todo el mundo. También se llama «Demonio del Protocolo de Transferencia de Archivos Muy Seguro». También soporta SSL, IPv6, FTPS explícito e implícito.
En este tutorial, te mostraremos cómo instalar VSFTPD en un servidor CentOS 8 y protegerlo con SSL/TLS.
Requisitos previos
- Un servidor que ejecute CentOS 8.
- Una contraseña de root configurada en tu servidor.
Instalar VSFTPD
Por defecto, VSFTPD está disponible en el repositorio por defecto de CentOS 8. Puedes instalarlo ejecutando el siguiente comando:
dnf install vsftpd -y
Una vez completada la instalación, inicia el servicio VSFTPD y habilítalo para que se inicie tras el reinicio del sistema con el siguiente comando:
systemctl start vsftpd systemctl enable vsftpd
En este punto, tu servidor VSFTPD está instalado y funcionando. Ya puedes pasar al siguiente paso.
Crear un usuario para VSFTPD
A continuación, tendrás que crear un nuevo usuario para VSFTPD. Así podrás acceder a tu servidor FTP utilizando este usuario.
Ejecuta el siguiente comando para crear un nuevo usuario llamado vyom, como se muestra a continuación:
adduser vyom
A continuación, establece la contraseña para el usuario vyom con el siguiente comando:
passwd vyom
Una vez que hayas terminado, puedes pasar al siguiente paso.
Configurar VSFTPD
A continuación, abre el archivo de configuración por defecto de VSFTPD situado en el directorio /etc/vsftpd como se muestra a continuación:
nano /etc/vsftpd/vsftpd.conf
Cambia las siguientes líneas:
anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=NO listen_ipv6=YES pam_service_name=vsftpd userlist_enable=NO
Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio VSFTPD y comprueba el estado del servicio con el siguiente comando:
systemctl restart vsftpd systemctl status vsftpd
Deberías ver la siguiente salida:
? vsftpd.service - Vsftpd ftp daemon Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; disabled; vendor preset: disabled) Active: active (running) since Fri 2020-02-21 00:43:57 EST; 6s ago Process: 2698 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exited, status=0/SUCCESS) Main PID: 2699 (vsftpd) Tasks: 1 (limit: 6102) Memory: 1020.0K CGroup: /system.slice/vsftpd.service ??2699 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf Feb 21 00:43:57 centos8 systemd[1]: Stopped Vsftpd ftp daemon. Feb 21 00:43:57 centos8 systemd[1]: Starting Vsftpd ftp daemon... Feb 21 00:43:57 centos8 systemd[1]: Started Vsftpd ftp daemon.
En este punto, tu servidor VSFTPD está configurado. Ahora puedes proceder a todo el VSFTPD a través de SELinux y el cortafuegos.
Configurar el Cortafuegos y SELInux
Por defecto, SELinux está activado en CentOS 8. Así que tendrás que configurar SELinux para VSFTPD.
Puedes configurar SELinux para permitir el acceso FTP con el siguiente comando:
setsebool -P allow_ftpd_full_access=1
A continuación, tendrás que permitir el servicio FTP a través de firewalld. Puedes permitirlo con el siguiente comando
firewall-cmd --zone=public --permanent --add-service=ftp
A continuación, recarga el servicio firewalld para aplicar los cambios de configuración del cortafuegos:
firewall-cmd --reload
En este punto, tu cortafuegos y SELinux están configurados para permitir la conexión FTP entrante desde el sistema remoto. Ahora puedes proceder a probar la conexión FTP.
Conéctate al servidor VSFTPD
Tu servidor VSFTPD ya está instalado y configurado. Ahora, es el momento de conectar el servidor FTP desde el sistema cliente.
Para ello, ve al sistema Cliente y ejecuta el siguiente comando para conectar tu servidor FTP:
ftp 172.20.10.3
Se te pedirá que proporciones tu usuario FTP y la contraseña, como se muestra a continuación:
Connected to 172.20.10.3. 220 (vsFTPd 3.0.3) Name (172.20.10.3:root): vyom 331 Please specify the password. Password: 230 Login successful.
Una vez que la conexión se haya establecido correctamente, deberías ver la siguiente salida:
Remote system type is UNIX. Using binary mode to transfer files. ftp>
Ahora, escribe exit y pulsa el botón Intro para salir de las sesiones FTP.
Configurar VSFTPD con soporte TLS
Por razones de seguridad, es una buena idea encriptar las transmisiones FTP con SSL/TLS. Para ello, tendrás que generar un certificado SSL y configurar el servidor VSFTPD para que lo utilice.
En primer lugar, tendrás que instalar el paquete OpenSSL en tu sistema. Puedes instalarlo con el siguiente comando:
dnf install openssl -y
Una vez instalado, crea un nuevo directorio para almacenar el certificado SSL:
mkdir /etc/ssl/private
A continuación, genera un certificado autofirmado con el siguiente comando:
openssl req -newkey rsa:2048 -nodes -keyout /etc/ssl/private/vsftpd.key -x509 -days 365 -out /etc/ssl/private/vsftpd.crt
Proporciona toda la información requerida como se muestra a continuación:
Generating a RSA private key ...+++++ ...........+++++ writing new private key to '/etc/ssl/private/vsftpd.key' ----- You are about to be asked to enter information that will be incorporated into your certificate request. What you are about to enter is what is called a Distinguished Name or a DN. There are quite a few fields but you can leave some blank For some fields there will be a default value, If you enter '.', the field will be left blank. ----- Country Name (2 letter code) [XX]:IN State or Province Name (full name) []:GUJ Locality Name (eg, city) [Default City]:JUN Organization Name (eg, company) [Default Company Ltd]:IT Organizational Unit Name (eg, section) []:IT Common Name (eg, your name or your server's hostname) []:ftpserver Email Address []:[email protected]
Después de generar el certificado SSL, tendrás que configurar VSFTPD para que utilice este certificado.
Abre el archivo de configuración por defecto de VSFTPD como se muestra a continuación:
nano /etc/vsftpd/vsftpd.conf
Añade las siguientes líneas al final del archivo:
#Path of the SSL certificate rsa_cert_file=/etc/ssl/private/vsftpd.crt rsa_private_key_file=/etc/ssl/private/vsftpd.key #Enable the SSL ssl_enable=YES allow_anon_ssl=NO force_local_data_ssl=YES force_local_logins_ssl=YES #TSL is more secure than SSL so enable ssl_tlsv1_2. ssl_tlsv1=YES ssl_sslv2=NO ssl_sslv3=NO require_ssl_reuse=NO ssl_ciphers=HIGH #Enable SSL debugging to store all VSFTPD log. debug_ssl=YES
Guarda y cierra el archivo cuando hayas terminado. A continuación, reinicia el servicio VSFTPD para aplicar los cambios:
systemctl restart vsftpd
En este punto, tu servidor VSFTPD está configurado para utilizar un certificado SSL. Ahora puedes pasar al siguiente paso.
Verificar la conexión TLS de VSFTPD
Tu servidor VSFTPD está ahora protegido con soporte SSL/TLS. A continuación, intenta conectar tu servidor FTP desde la línea de comandos como se muestra a continuación:
ftp 172.20.10.3
Deberías ver el error en la siguiente salida:
Connected to 172.20.10.3. 220 (vsFTPd 3.0.2) Name (172.20.10.3:root): vyom 530 Non-anonymous sessions must use encryption. Login failed. 421 Service not available, remote server has closed connection ftp>
No puedes conectarte a tu servidor VSFTP desde el cliente de línea de comandos. Porque no es compatible con SSL/TLS.
Así que tendrás que descargar y probar la conexión VSFTPD utilizando un cliente FTP que admita conexiones TLS.
Para ello, ve al sistema Cliente e instala el paquete cliente FileZilla.
Tras instalar FileZilla, abre el software FileZilla como se muestra a continuación:
A continuación, abre el Gestor de Sitios como se muestra a continuación:
Haz clic en el botón Nuevo Sitio para añadir una nueva conexión FTP como se muestra a continuación:
Proporciona la IP de tu servidor FTP, Selecciona el protocolo FTP, Selecciona «Usar FTP explícito sobre TLS», Selecciona pedir contraseña, proporciona el nombre de usuario de tu servidor FTP y haz clic en el botón Conectar. Se te pedirá que proporciones la contraseña del usuario FTP como se muestra a continuación:
Proporciona tu contraseña FTP y pulsa el botón Aceptar. Se te pedirá que verifiques el certificado utilizado para la conexión SSL/TLS como se muestra a continuación:
Pulsa el botón Aceptar para verificar el certificado. Una vez que la conexión se haya establecido correctamente, deberías ver la siguiente pantalla:
Conclusión
En la guía anterior, hemos instalado el servidor VSFTPD en CentOS 8. También hemos configurado el servidor VSFTPD para que utilice el certificado SSL/TLS. Ahora tu servidor FTP está protegido. No dudes en preguntarme si tienes alguna duda.