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 *