Cómo instalar el servidor FTP vsftpd con SSL/TLS en CentOS 8
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:
A continuación, abra el Administrador del sitio como se muestra a continuación:
Haga clic en el Nuevo sitio para agregar una nueva conexión FTP como se muestra a continuación:
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:
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:
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:
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.