SFTP con ProFTPd y clave publica

Hay protocolos que están quedando obsoletos poco a poco por ser inseguros, uno de ellos que lleva siéndolo un tiempo es el FTP, por ello muchos de nosotros nos vemos obligados a configurar SFTP para darle un plus de seguridad a nuestros servidores.

En este caso vamos a apoyarnos en la aplicación ProFTPD usando autenticación de clave publica, la guía la realizo sobre un Debian aunque el proceso para cualquier distribución varia mas que nada en la instalación del paquete ya que la configuración es la misma.

Lo primero seria instalar Proftpd

sudo apt install proftpd

Después de la instalación editamos con un vi o nano el archivo de configuración de Profetpd

sudo nano /etc/proftpd/proftpd.conf

Solo tenemos que cambiar dos parámetros, editando el servername y verificando que el DefaulRoot este por defecto.

ServerName "sftp.midominio.com"
DefaultRoot ~

Ahora tendremos que crear el archivo de configuración para conectar por SFTP

sudo nano /etc/proftpd/conf.d/sftp.conf

Agregando el siguiente contenido al mismo

<IfModule mod_sftp.c>
        SFTPEngine on
        # Puerto de escucha
        Port 2222
        # Ubicación del archivo de logs
        SFTPLog /var/log/proftpd/sftp.log
        # Claves de host usados por OpenSSH, tanto el RSA como el DSA definidos en el fichero SSHD_CONFIG
        SFTPHostKey /etc/ssh/ssh_host_rsa_key
        SFTPHostKey /etc/ssh/ssh_host_dsa_key
        SFTPAuthorizedUserKeys file:/etc/proftpd/authorized_keys/%u
        # Activación de la compresión
        SFTPCompression delayed
        # Utilizar claves públicas en lugar de contraseña (Por defecto: publickey password)
        SFTPAuthMethods publickey
</IfModule>

Crearemos la carpeta donde se guardaran las claves autorizadas y reiniciaremos el servicio profrtp para que coja estos cambios

mkdir /etc/proftpd/authorized_keys
service proftpd restart

Después de esto tenemos que generar los usuarios con sus respectivas claves, el usuario al que generemos las claves no necesitara ninguna contraseña de acceso ya que sera esta clave RSA la que genere la conexión segura contra el servidor

sudo useradd prueba -m -s /bin/bash
sudo -u prueba ssh-keygen -t rsa

Veremos algo como esto en nuestra consola:

Podríamos añadir una frase de seguridad a nuestra clave pero para este caso lo dejamos vacio. Ta tendriamos la llave publica (id_rsa.pub) y privada (id_rsa) para el usuario.

Pero aun no hemos terminado ya que debemos convertir nuestra clave al formato RFC4716 compatible con ProFTPD y colocarlo dentro de la carpeta que generamos anteriormente.

sudo ssh-keygen -e -f ~prueba/.ssh/id_rsa.pub | tee /etc/proftpd/authorized_keys/prueba

La clave privada generada, es decir el id_rsa de la tenemos que enviar al usuario que se conectara remotamente a nuestro servidor, podemos cambiarle la extension y asi el usuario que reciba este fichero entendera mejor su cometido.

sudo cp /home/prueba/.ssh/id_rsa ~/prueba.pem

Ahora tan solo el usuario ha de indicar en su gestor de conexiones FTP la dirección del servidor y añadir este fichero .pem al key file quedando la configuración como la de la siguiente imagen.

También te podría gustar...

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.