En una instalación por defecto de vsFTPd solo podremos utilizar el servicio sin cifrado debido a que este no dispone de un certificado SSL configurado. En este artículo, os vamos a mostrar los pasos para configurar un certificado SSL de Let's Encrypt sobre un servidor vsFTPd.
Información
Si no tenéis configurado un servidor vsFTPd podéis seguir el siguiente enlace: Configurar vsFTPd en GNU/Linux
Instalación de Let's Encrypt y generación del certificado
Para instalar Let's Encrypt tenemos instalar certbot:
# apt-get update
# apt-get install certbot
Una vez instalado podemos proceder a generar el certificado SSL. Si no disponéis de un dominio propio podéis utilizar el hostname asignado al servidor por Clouding.
Para saber que hostname tiene nuestro servidor accedemos al panel de cliente y en "Mis Servidores" hacemos clic en el servidor que estamos instalando el certificado SSL para vsFTPd.
En "Ajustes" tenemos el apartado "Cómo acceder al servidor" y copiaremos el valor que se nos muestra en "Nombre de Host" como podéis ver en la siguiente imagen.
Ahora que ya tenemos el hostname del servidor o un dominio propio volvemos a nuestro servidor y ejecutamos el siguiente comando para generar el certificado:
# certbot certonly --standalone --preferred-challenges http -d 6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host
En "-d 6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host" tenéis que cambiar el hostname del ejemplo por el hostname de vuestro servidor.
El proceso os solicitará un correo electrónico para enviaros notificaciones en casos de renovaciones urgentes o problemas de seguridad. En los términos y servicios escribiremos "A" para aceptarlos y por últimos indicaremos "N" para que no se comparta nuestro correo electrónico.
Si todo ha funcionado correctamente veréis un mensaje como el siguiente:
IMPORTANT NOTES:
- Congratulations! Your certificate and chain have been saved at:
/etc/letsencrypt/live/6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host/fullchain.pem
Your key file has been saved at:
/etc/letsencrypt/live/6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host/privkey.pem
Your cert will expire on 2020-10-20. To obtain a new or tweaked
version of this certificate in the future, simply run certbot
again. To non-interactively renew *all* of your certificates, run
"certbot renew"
Ahora ya tenemos nuestro certificado SSL de Let's Encrypt y ya podemos proceder a configurar vsFTPD para que lo utilice en las conexiones TLS.
Configurar vsFTPD con el certificado SSL de Let's Encrypt
Para configurar TLS en vsFTPd editaremos el siguiente fichero:
# vi /etc/vsftpd.conf
Y buscamos las siguientes líneas.
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
Ahora tenemos que editar los "path" de las variables "rsa_cert_file y rsa_private_key_file" para que utilice el certificado creado por Let's Encrypt. También, la variable "ssl_enable" debemos establecerla en "yes"
Los paths que necesitaremos son los siguientes:
/etc/letsencrypt/live/hostname/cert.pem
/etc/letsencrypt/live/hostname/privkey.pem
Por lo que las lineas anteriores las dejaremos de la siguiente forma:
rsa_cert_file=/etc/letsencrypt/live/6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host/cert.pem
rsa_private_key_file=/etc/letsencrypt/live/6285b40d-8fcf-444a-8c4b-bb62ff55021a.clouding.host/privkey.pem
ssl_enable=YES
Por último reiniciamos el servidor vsFTPd para que cargue la nueva configuración:
# service vsftpd restart
Conectar a vsFTPD con TLS desde Filezilla
Para conectar por TLS a nuestro servidor vsFTPd abriremos Filezilla y haremos clic en "Gestor de Sitios"
Añadimos un nuevo sitio y en servidor especificaremos el hostname utilizado anteriormente. En cifrado seleccionaremos "Requiere FTP explícito sobre TLS".
Hacemos clic en "Opciones de Transferencia" y seleccionamos el modo "Pasivo" y por último clic en "Conectar".
Escribimos la contraseña de nuestro usuario FTP.
Filezilla nos mostrará el certificado SSL generado anteriormente, lo revisamos y hacemos clic en "Aceptar".
Por último veremos que se ha podido conectar correctamente por TLS.
¿Lo has probado? ¡Déjanos tus comentarios! 🙂