SFTP es el acrónimo de “Secure File Transfer Protocol” misma que es una tecnología que se utiliza para transferir archivos de un lugar a otro a través de Internet y funciona de manera similar a FTP (File Text Protocol), pero la diferencia entre ambos es que SFTP también asegura la privacidad del archivo mediante el servicio SSH, que protege los datos cifrándolos, para que nadie pueda los pueda acceder.
Aunque tiene la ventaja de que encripta los datos y los transfiere a la ubicación de destino de manera más segura, también tiene una desventaja; al llegar a la ubicación de destino, cualquier usuario puede leer el dato.
Entonces, para hacerlo más seguro, debemos restringir el acceso de otros usuarios, además de los usuarios permitidos.
En este artículo veremos cómo instalar el servidor SFTP en Ubuntu, si aún no está instalado, y cómo configurarlo usando la interfaz de linea de comandos de Ubuntu.
Cómo Instalar el Servidor SFTP en UBUNTU
El servidor SFTP generalmente se instala en Ubuntu de manera predeterminada, pero si aún no está instalado, es posible realizarlo.
Antes de instalarlo, debido a que SFTP usa el servidor SSH, para verificar que el servidor SFTP ya esté instalado o no, ejecutaremos el comando mencionado a continuación:
sudo systemctl status ssh
Dependiendo del caso podríamos obtener como respuesta una de las dos capturas de pantallas siguientes:
Si no tenemos instalado aún el SSH, procedemos a instalarlo mediante el siguiente comando:
sudo apt install ssh -y
Creación de una cuenta de usuario SFTP
Podemos crear usuarios directamente o creando un grupo de usuarios SFTP y luego crear usuarios individuales para darles acceso al SFTP.
Procedo a crear un grupo, al que llamaré «sfe». Ejecuto el comando:
sudo addgroup <mi nombre de grupo>
Podemos crear un usuario con el comando:
sudo useradd <mi nombre de usuario>
Ahora verificamos el usuario apenas creado, con el comando:
less /etc/passwd | grep <usuario creado>
Hemos elegido utilizar SFTP por motivos de seguridad, entonces es el momento de atribuir una contraseña al usuario apenas creado. Escribimos el comando:
sudo passwd <nombre usuario>
El siguiente paso es agregar el usuario al grupo que creamos al principio. Ejecutamos el comando:
sudo usermod -a -G <grupo> <usuario>
Verificamos que el usuario esté dentro del grupo.
grep <grupo> /etc/group
Creación del directorio para transferencias de archivos
Para restringir el acceso a un directorio en manera que solo los usuarios autorizados puedan ver la información, crearemos un directorio «Documentos» en la ruta /var/<miGrupo> que será propiedad del root (usuario admin).
Entonces solo el usuario que hallamos creado pueda acceder a ese directorio y cargar archivos en él.
Para hacerlo, primero, crearemos un directorio de “Documentos” usando el comando:
sudo mkdir -p /var/<grupo>/documentos
Asignamos entonces la ruta raíz al usuario root. escribimos:
sudo chown root:<usuario root> /var/<grupo>
sudo chmod 755 /var/<grupo>
Por último atribuimos el permiso del directorio documentos al usuario creado.
sudo chown <usuario>:<usuario> /var/<grupo>/documentos
Configuración de SSH daemon
Una vez completada la instalación, abriremos el archivo de configuración del servidor SSH con cualquier editor y lo configuraremos.
Restringiremos al usuario creado, al directorio /var/sfe, y ninguno de los otros usuarios podrá acceder a este directorio.
Para modificar el archivo de configuración, ejecutamos el siguiente comando:
sudo nano /etc/ssh/sshd_config
Escribimos la sección evidenciada en el recuadro verde de la captura de pantalla anterior.
Debemos tener cuidado de utilizar los nombres de grupo y usuario que hemos utilizado previamente.
Asegurarse también de escribir las lineas debajo de la linea con el comando:
Subsystem sftp /usr/lib/openssh/sftp-server
Las lineas de parámetros que se ingresan significan:
Match User le dice al SSH que implemente estos cambios en el usuario mencionado, en el caso de nuestro ejemplo es «zeven»
ChrootDirectory asegura que el usuario no tendrá acceso a ningún otro directorio excepto al que se especifica, en el caso del ejemplo “/var/sfe”.
AllowTcpForwarding y X11Forwarding habilitarán o deshabilitarán la tunelización de puertos y el reenvío X11, en el caso del ejemplo, ambos se deshabilitan escribiendo «no».
ForceCommand garantiza que SSH ejecute el servidor SFTP solo después del inicio de sesión
Una vez realizados los cambios, guárdelos presionando CTRL+O y luego salga del editor presionando CTRL+X.
Para aplicar estos nuevos cambios, reinicie el servidor SSH usando el comando:
sudo systemctl restart ssh
Verificación de la configuración
Para verificar la correcta configuración del usuario apenas creado, procedemos a conectarnos en modo regular (debería no permitirlo), con el comando:
ssh <usuario>@localhost
Todo está bien hecho si nos indica que solo se permiten conexiones SFTP para este usuario.
Utilizamos este comando para verificar en cambio la conexión en modo correcto:
sftp <usuario>@127.0.0.1
Nos hemos conectado al servidor SFTP.
Verificamos el contenido a traves del comando ls
Conclusión
El servidor SFTP cifra el archivo y lo transfiere a los destinos, y decodifica el archivo allí para comunicar los datos de forma segura.
La seguridad es necesaria para transferir archivos, ya que a veces los archivos contienen información confidencial que solo debe entregarse a una persona autorizada, esto se puede hacer con la ayuda de SFTP.
En este artículo, aprendimos cómo instalar el servidor SFTP en UBUNTU si no está instalado de forma predeterminada.