Restringir el acceso de usuario a un directorio con SFTP (OpenSSH)

Si quieres permitir el acceso por SFTP (FTP es cosa del pasado) a alguien a tu servidor VPS, tenemos que tener claro que hemos de crear un usuario (obviamente) y darle privilegios.

Notas preliminares

Este ejemplo está orientado a que un amigo o cliente acceda a tu servidor utilizando SFTP.

En mi caso, tengo el servidor apache para que funcione partiendo del directorio /var/www (Como suele ser habitual).

La jerarquía de directorios que tengo en /var/www se corresponde con los sitios web que alojo en dicho servidor, por ejemplo:

En este ejemplo pondremos la situación de que un cliente ha contratado nuestros servicios para realizar su página web y quiere acceder a su servidor (que ha contratado con nosotros).

En este caso, pongamos que el cliente (usuario a crear) se llamará dario.

Siguiendo la jerarquía explicada anteriormente, nuestro usuario tendrá asignado como home el directorio /var/www/dario.com y, por lo tanto, deberemos darle total control sobre dicho directorio (obviamente nosotros seguiremos pudiendo acceder a él por ser root).

También parto de la base de que sabes crear el directorio al que le daremos acceso al usuario y que lo tienes creado.

Crear el usuario

Como ya he dicho antes, el usuario será dario, la contraseña la que escojamos y el directorio al que accederá al iniciar sesión por SFTP /var/www/dario.com.

Para ello, utilizamos el siguiente comando (es necesario acceder por SSH con permisos de administrador):

adduser --home /directorio/home/del/usuario nombredeusuario

O lo que es lo mismo, aplicado a nuestro ejemplo:

adduser --home /var/www/dario.com/ dario

Ahora que ya tenemos nuestro usuario creado, tenemos que nombrarlo dueño del directorio:

chown dario:dario /var/www/dario.com/

Y le damos permisos de escritura:

chmod 755 /var/www/dario.com

Habilitar y configurar el SFTP

Necesitamos que OpenSSH nos permita restringir a este usuario a su carpeta para que únicamente acceda a ella, pero también necesitamos configurarlo para que funcione adecuadamente.

Lo primero que vamos a hacer es editar el fichero sshd_config, utiliza tu editor favorito:

nano /etc/ssh/sshd_config

Localizamos la línea Subsystem sftp /usr/lib/openssh/sftp-server y le añadimos una almohadilla (#) delante para comentarla. A continuación agregamos debajo esta nueva instrucción: Subsystem sftp internal-sftp

Ahora, al final de este mismo fichero (sshd_config) agregamos las siguientes líneas:

Match User dario
    ChrootDirectory /var/www/dario.com/
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

Donde le indicamos que si el usuario que intenta acceder es dario, le mande al directorio indicado.

Con esto, si lo hemos hecho bien, podremos probar a acceder desde Filezilla o cualquier cliente FTP y veremos que funciona (a mí me ha funcionado).

Si tienes cualquier duda puedes ponerlo en los comentarios, intentaré resolver todas las que pueda.

5 comentarios en “Restringir el acceso de usuario a un directorio con SFTP (OpenSSH)

  1. Hola que tal me sirvió mucho tu publicación pero el usuario igual puede retroceder y moverse por los directorio yo solo quiero que vea su carpeta nada más no la de mis demás clientes como hago eso? Gracias desde ya.

  2. buenos segui el codigo
    pero al querer entrar mediante ftp
    me pide usuario y contraseña
    pero siguiendo este codigo solo creamos un usuario sin contraseña

Deja una respuesta

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

*

*

DARÍO BALBONTÍN FERNÁNDEZ es el Responsable del tratamiento de los datos personales del usuario y le informa que estos datos serán tratados de conformidad con lo dispuesto en el Reglamento (UE) 2016/679 de 27 de abril (GDPR) y la Ley Orgánica 3/2018 de 5 de diciembre (LOPDGDD), por lo que se le facilita la siguiente información del tratamiento: Fin del tratamiento: mantener una relación comercial y el envío de comunicaciones sobre nuestros productos y servicios. Criterios de conservación de los datos: se conservarán mientras exista un interés mutuo para mantener el fin del tratamiento y cuando ya no sea necesario para tal fin, se suprimirán con medidas de seguridad adecuadas para garantizar la seudonimización de los datos o la destrucción total de los mismos.Comunicación de los datos: No se comunicarán los datos a terceros, salvo obligación legal. Derechos que asisten al usuario: Derecho a retirar el consentimiento en cualquier momento. Derecho de acceso, rectificación, portabilidad y supresión de sus datos y a la limitación u oposición al su tratamiento. Derecho a presentar una reclamación ante la Autoridad de control (agpd.es) si considera que el tratamiento no se ajusta a la normativa vigente. Datos de contacto para ejercer sus derechos: contacto@dariobf.com.

¡Únete ya a BFLabs GRATIS! Estreno próximamente... Más información