Agregando seguridad al servidor FTP

En una de las entradas pasadas configuramos un servidor FTP, limitando el acceso a usuarios permitidos y que cada uno de ellos tuviera acceso solamente a un directorio específico.

En esta entrada revisaremos como montar el protocolo SSL en este servidor FTP, de forma que las comunicaciones sean más seguras, por lo que esta entrada es en alcance a la anterior.

Puedes usar un certificado SSL firmado por una Autoridad Certificadora o crear un certificado autofirmado.

En este tutorial generaremos un certificado autofirmado usando la herramienta openssl.

Paso 1.- Generar un certificado SSL/TLS.

El siguiente comando crea una clave privada de 2048 bits y un certificado autofirmado válido por 1 año. Tanto la clave privada como el certificado se guardarán en un mismo archivo.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/vsftpd/vsftpd.pem -out /etc/vsftpd/vsftpd.pem

Al momento de generar el certificado, se te solicitarán los siguientes datos, que deberás introducir según sean requeridos:

  • Country name (2 digitos).- País
  • State or Province Name.- Estado o provincia
  • Locality Name.- Nombre de la localidad
  • Organization Name.- Nombre de la organización
  • Organizational Unit Name.- Nombre del departamento de la organización
  • Common Name.- Nombre de dominio o dirección IP
  • Email Address.- Dirección de correo electrónico.

Paso 2.- Configurar el servidor FTP para usar el certificado

Una vez que hayas creado el certificado, abre el archivo de configuración vsftpd:

$ sudo nano /etc/vsftpd/vsftpd.conf

Encuentra la directiva rsa_cert_file y rsa_private_key_file, cambia sus valores reemplazando la ruta donde guardaste el archivo .pem y activa la directiva ssl_enable a YES:

rsa_cert_file=/etc/vsftpd/vsftpd.pem

rsa_cert_file=/etc/vsftpd/vsftpd.pem
rsa_private_key_file=/etc/vsftpd/vsftpd.pem
ssl_enable=YES

Si no se especifica lo contrario, FTP solo utilizara TLS para realizar las conexiones seguras.

Paso 3.- Revisa tu archivo de configuración

Si haz seguido el ejemplo anterior y este, tu archivo vsftpd.conf deberá estar de la siguiente forma:

anonymous_enable=NO 
local_enable=YES 
write_enable=YES 
local_umask=022 
dirmessage_enable=YES 
xferlog_enable=YES 
connect_from_port_20=YES
xferlog_file=/var/log/xferlog 
xferlog_std_format=YES 
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list 
listen=NO 
listen_ipv6=YES 
pam_service_name=vsftpd 
userlist_enable=YES 
userlist_file=/etc/vsftpd/user_list 
userlist_deny=NO 
allow_writeable_chroot=YES
pasv_min_port=30000 
pasv_max_port=30003 
rsa_cert_file=/etc/vsftpd/vsftpd.pem 
rsa_private_key_file=/etc/vsftpd/vsftpd.pem 
ssl_enable=YES

Paso 4.- Reinicia el servidor FTP

$ sudo systemctl restart vsftpd

Paso 5.- Comprueba tu conexión

Establece tu conexión usando las credenciales para los usuarios que creaste antes, cuando te conectes, verás que se despliega una notificación indicando que el sitio al que intentas acceder tiene un certificado desconocido, esto es porque el certificado que creamos está autofirmado y no se puede considerar fiable en internet.

Solo damos click en aceptar y habremos establecido la conexión.

Referencias externas

Deja una respuesta

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