Servidor SFTP con ProFTPd usando autenticación de clave pública – Ubuntu

w00¡Hola a todos!

En una entrada pasada escribí sobre cómo instalar un servidor FTP, además de una explicación de ProFTPd; en éste caso, y dado que FTP es sumamente inseguro, se tratará el tema del servicio SFTP.

Primero mencionar que SFTP no es ejecutar FTP sobre SSH… lo cual generalmente se piensa eso (yo lo pensé por mucho tiempo también xD ) , pero no es así… básicamente es un nuevo protocolo (SFTP) para establecer una conexión segura entre servidor y cliente con la finalidad de transferir y modificar archivos y carpetas de forma segura.

Para evitar el uso de un usuario y contraseña, es útil hacer uso de llaves públicas lo cual no se profundizará mucho sobre la teoría o lógica del funcionamiento del mismo… por el momento, solo veremos el tutorial de cómo instalar el servidor SFTP con ProFTPd y cómo conectarse a él mediante un cliente SFTP.

Primero, asegurarse que se tenga instalado OpenSSH Server; lo podemos verificar (o instalar) fácilmente mediante el comando tasksel (si no se tiene instalado, se puede instalar). Veremos las líneas de comando necesarias:

sudo apt install tasksel
sudo tasksel

Aparecerá un asistente básico en donde basta con que nos desplacemos hasta abajo, chequeamos OpenSSH Server con la el espacio de barra y, con la tecla TAB, nos movemos a «Aceptar» y presionamos ENTER para instalarlo.

w01

Ahora instalamos ProFTPd así:

sudo apt install proftpd

Entraremos al archivo de configuración y modificaremos un par de parámetros básicos.

sudo nano /etc/proftpd/proftpd.conf

Solo tocaremos los siguientes parámetros…

ServerName "sftp.midominio.com"
DefaultRoot ~

Donde sftp.midominio.com debe de ser su servidor, nombre de equipo, etc.

Ahora crearemos el archivo /etc/proftpd/conf.d/sftp.conf

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

Y agregaremos el siguiente contenido:

<IfModule mod_sftp.c>
        SFTPEngine on
        # Puerto con el que trabajará
        Port 2222

        # Ubicación del archivo de logs
        SFTPLog /var/log/proftpd/sftp.log

        # Llaves de host usados por OpenSSH, tanto el RSA como el DSA
        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 Llaves públicas en lugar de contraseña (Por defecto: publickey password)
        SFTPAuthMethods publickey
</IfModule>

Crearemos la carpeta donde se almacenarán las llaves autorizadas del servicio y reiniciaremos ProFTPd:

mkdir /etc/proftpd/authorized_keys
service proftpd restart

Luego, crearemos un usuario y su respectiva llave SSH; El usuario será quien tendrá acceso remoto a nuestro servidor SFTP y no se le asignará clave de acceso dado que no la necesitará.

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

A continuación, un ejemplo de lo que les aparecerá…

w02

Podemos agregar una frase de contraseña, pero para nuestro caso, lo dejaremos vacío (presionar ENTER). Ya tenemos nuestra llave pública (id_rsa.pub) y privada (id_rsa) para el usuario.

Convertiremos la llave en el formato RFC4716 y la pondremos dentro de la carpeta del ProFTPd:

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

La llave privada ( /home/usr_prueba/.ssh/id_rsa ) la copiaremos y se la daremos al usuario que se conectará remotamente al servidor SFTP; Yo recomiendo cambiarle el nombre al archivo a  uno más amigable y ponerle una extensión, así para que sea más entendible para el usuario que se conectará al servidor. Digamos con el nombre:

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

Se puede copiar el archivo .pem mediante scp, correo, etc. Ahí al gusto de ustedes.

Ahora, ya desde el cliente (Un Windows, Mac o lo que sea), podemos usar diversos programas para conectarnos al servicio SFTP… En nuestro caso usaremos FileZilla, el cual se puede descargar desde: https://filezilla-project.org/download.php

Una vez descargado e instalado, lo ejecutamos y, dentro de FileZilla, damos clic en Archivo –> Gestor de sitios…

w03

Damos clic en el botón «Nuevo sitio», agregamos un nombre al sitio, colocamos la IP o nombre DNS del servidor SFTP, en el puerto le ponemos el que le establecimos (2222), en protocolo seleccionamos SFTP, en Modo de acceso seleccionamos «Key file», en usuario colocamos el usuario que creamos, en Key file damos clic en el botón «Browse…» y buscamos el archivo .pem que copiamos. Una vez tengamos todo esto, damos clic en «Conectar»

w041

Si todo esta bien, deberíamos de ver en el estado (parte superior) que se logró conectar, que recuperó el listado del directorio…, y que, en la parte derecha (sitio remoto) se encuentre la carpeta HOME del usuario que se creo en el servidor.

w051

Si deseamos especificarle otra carpeta como su «home», ya tendríamos que entrar al archivo /etc/passwd y cambiarselo manualmente, pero debemos de tener en cuenta el tema de permisos.

Bien, ¡eso es todo! ¡Saludos!

Comentarios por Facebook

comentarios

Deja un comentario

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

*