Cómo instalar el servidor FTP vsftpd con SSL/TLS en CentOS 8

Cliente FTP de FileZilla

FTP es un protocolo ampliamente utilizado para transferir archivos entre el servidor y el cliente. Hay muchos servidores FTP de c√≥digo abierto disponibles hoy en d√≠a, incluidos FTPD, VSFTPD, PROFTPD y pureftpd. Entre ellos, VSFTPD es un protocolo seguro, r√°pido y m√°s utilizado en todo el mundo. Tambi√©n se denomina ¬ęDemonio de protocolo de transferencia de archivos muy seguro¬Ľ. Tambi√©n es compatible con SSL, IPv6, FTPS expl√≠cito e impl√≠cito.

En este tutorial, le mostraremos cómo instalar VSFTPD en el servidor CentOS 8 y asegurarlo con SSL/TLS.

requisitos previos

  • Un servidor que ejecuta CentOS 8.
  • Una contrase√Īa de root est√° configurada en su servidor.

Instalar VSFTPD

De forma predeterminada, VSFTPD est√° disponible en el repositorio predeterminado de CentOS 8. Puede instalarlo ejecutando el siguiente comando:

dnf install vsftpd -y

Una vez completada la instalación, inicie el servicio VSFTPD y habilítelo para que se inicie después de reiniciar el sistema con el siguiente comando:

systemctl start vsftpd
systemctl enable vsftpd

En este punto, su servidor VSFTPD est√° instalado y funcionando. Ahora puede continuar con el siguiente paso.

Crear un usuario para VSFTPD

A continuación, deberá crear un nuevo usuario para VSFTPD. Entonces puede acceder a su servidor FTP usando este usuario.

Ejecute el siguiente comando para crear un nuevo usuario llamado vyom como se muestra a continuación:

adduser vyom

A continuaci√≥n, establezca la contrase√Īa para un usuario vyom con el siguiente comando:

passwd vyom

Una vez que haya terminado, puede continuar con el siguiente paso.

Configurar VSFTPD

A continuación, abra el archivo de configuración predeterminado de VSFTPD ubicado 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

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio VSFTPD y verifique el estado del servicio con el siguiente comando:

systemctl restart vsftpd
systemctl status vsftpd

Debería ver el siguiente resultado:

? 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, su servidor VSFTPD está configurado. Ahora puede proceder a todos los VSFTPD a través de SELinux y firewall.

Configurar cortafuegos y SELInux

De manera predeterminada, SELinux est√° habilitado en CentOS 8. Por lo tanto, deber√° configurar SELinux para VSFTPD.

Puede configurar SELinux para permitir el acceso FTP con el siguiente comando:

setsebool -P allow_ftpd_full_access=1

A continuación, deberá 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, vuelva a cargar el servicio firewalld para aplicar los cambios de configuración del firewall:

firewall-cmd --reload

En este punto, su firewall y SELinux están configurados para permitir la conexión FTP entrante desde el sistema remoto. Ahora puede proceder a probar la conexión FTP.

Conéctese al servidor VSFTPD

Su servidor VSFTPD ahora est√° instalado y configurado. Ahora es el momento de conectar el servidor FTP desde el sistema cliente.

Para hacerlo, vaya al sistema Cliente y ejecute el siguiente comando para conectar su servidor FTP:

ftp 172.20.10.3

Se le pedir√° que proporcione su usuario de 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 con éxito, debería ver el siguiente resultado:

Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 

Ahora, escriba exit y presione el botón Enter para salir de las sesiones de FTP.

Configurar VSFTPD con soporte TLS

Por razones de seguridad, es una buena idea cifrar las transmisiones FTP con SSL/TLS. Para hacerlo, deber√° generar un certificado SSL y configurar el servidor VSFTPD para usarlo.

Primero, deber√° instalar el paquete OpenSSL en su sistema. Puedes instalarlo con el siguiente comando:

dnf install openssl -y

Una vez instalado, cree un nuevo directorio para almacenar el certificado SSL:

mkdir /etc/ssl/private

A continuación, genere 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

Proporcione 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, deberá configurar VSFTPD para usar este certificado.

Abra el archivo de configuración predeterminado de VSFTPD como se muestra a continuación:

nano /etc/vsftpd/vsftpd.conf

Agregue 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

Guarde y cierre el archivo cuando haya terminado. Luego, reinicie el servicio VSFTPD para aplicar los cambios:

systemctl restart vsftpd

En este punto, su servidor VSFTPD est√° configurado para usar un certificado SSL. Ahora puede continuar con el siguiente paso.

Verifique la conexión TLS de VSFTPD

Su servidor VSFTPD ahora está protegido con soporte SSL/TLS. A continuación, intente conectar su servidor FTP desde la línea de comandos como se muestra a continuación:

ftp 172.20.10.3

Debería ver el error en el siguiente resultado:

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 puede conectarse a su servidor VSFTP desde el cliente de línea de comandos. Porque no es compatible con SSL/TLS.

Por lo tanto, deberá descargar y probar la conexión VSFTPD mediante un cliente FTP que admita conexiones TLS.

Para hacerlo, vaya al sistema Cliente e instale el paquete del cliente FileZilla.

Después de instalar FileZilla, abra el software FileZilla como se muestra a continuación:

Cliente FTP de FileZilla

A continuación, abra el Administrador del sitio como se muestra a continuación:

Administrador del sitio

Haga clic en el Nuevo sitio para agregar una nueva conexión FTP como se muestra a continuación:

Agregar detalles del servidor FTP

Proporcione la IP de su servidor FTP, seleccione el protocolo FTP, seleccione ¬ęUsar FTP expl√≠cito sobre TLS¬Ľ, seleccione Solicitar contrase√Īa, proporcione el nombre de usuario de su servidor FTP y haga clic en el bot√≥n Conectar bot√≥n. Se le pedir√° que proporcione la contrase√Īa del usuario FTP como se muestra a continuaci√≥n:

Introduce la contrase√Īa

Proporcione su contrase√Īa de FTP y haga clic en el OK bot√≥n. Se le pedir√° que verifique el certificado que se utiliza para la conexi√≥n SSL/TLS como se muestra a continuaci√≥n:

Aceptar certificado SSL

Haga clic en el OK botón para verificar el certificado. Una vez que la conexión se haya establecido con éxito, debería ver la siguiente pantalla:

Conectado con éxito al servidor FTP

Conclusión

En la guía anterior, instalamos el servidor VSFTPD en CentOS 8. También configuramos el servidor VSFTPD para usar el certificado SSL/TLS. Su servidor FTP ahora está protegido. No dude en preguntarme si tiene alguna pregunta.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *