Cómo Restringir Usuarios SFTP a Directorios de Inicio Usando una Cárcel chroot

En este tutorial, estaremos discutiendo cómo restringir a los usuarios SFTP a sus directorios de inicio o directorios específicos. Significa que el usuario solo puede acceder a su respectivo directorio de inicio, no a todo el sistema de archivos.

Restringir los directorios de inicio de los usuarios es vital, especialmente en un entorno de servidor compartido, para que un usuario no autorizado no pueda echar un vistazo a los archivos y carpetas de otros usuarios.

Importante: Tenga también en cuenta que el propósito de este artículo es proporcionar acceso SFTP solamente, no accesos SSH, al seguir este artículo tendrán permisos para transferir archivos, pero no se les permitirá hacer una sesión SSH remota.

Lectura sugerida: Restringir el acceso de usuario SSH a ciertos directorios usando Chrooted Jail

La forma más sencilla de hacer esto es crear un entorno de cárcel chroot para el acceso SFTP. Este método es el mismo para todos los sistemas operativos Unix/Linux. Usando un entorno chroot, podemos restringir a los usuarios ya sea a su directorio de inicio o a un directorio específico.

Restringir Usuarios a Directorios de Inicio

En esta sección, crearemos un nuevo grupo llamado sftpgroup y asignaremos la propiedad y permisos correctos a las cuentas de usuario. Hay dos opciones para restringir a los usuarios a directorios de inicio o específicos, veremos ambas formas en este artículo.

Crear o Modificar Usuarios y Grupos

Restringimos al usuario existente, por ejemplo tecmint, a su directorio principal llamado /home/tecmint. Para ello, necesitas crear un nuevo grupo sftpgroup utilizando el comando groupadd como se muestra:

# groupadd sftpgroup

A continuación, asigna al usuario ‘tecmint’ al grupo sftpgroup.

# usermod -G sftpgroup tecmint

También puedes crear un nuevo usuario utilizando el comando useradd, por ejemplo senthil, y asignar el usuario al grupo sftpusers.

# adduser senthil -g sftpgroup -s /sbin/nologin
# passwd tecmint

Modifica el archivo de configuración de SSH

Abre y añade las siguientes líneas al archivo de configuración /etc/ssh/sshd_config.

Subsystem sftp internal-sftp
 
   Match Group sftpgroup
   ChrootDirectory /home
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Guarda y sale del archivo, reinicia el servicio sshd para que los cambios surtan efecto.

# systemctl restart sshd
OR
# service sshd restart

Si encierras en chroot a varios usuarios en el mismo directorio, debes cambiar los permisos del directorio principal de cada usuario para evitar que todos los usuarios naveguen por los directorios principales de los demás usuarios.

# chmod 700 /home/tecmint

Verifica los inicios de sesión de usuarios de SSH y SFTP

Ahora es el momento de comprobar el inicio de sesión desde un sistema local. Intenta acceder por SSH a tu sistema remoto desde tu sistema local.

# ssh [email protected]

Aquí,

  1. tecmint – nombre de usuario del sistema remoto.
  2. 192.168.1.150 – dirección IP del sistema remoto.
Salida de muestra:
[email protected]'s password: 
Could not chdir to home directory /home/tecmint: No such file or directory
This service allows sftp connections only.
Connection to 192.168.1.150 closed.

Luego, accede al sistema remoto utilizando SFTP.

# sftp [email protected]
Salida de muestra:
[email protected]'s password: 
Connected to 192.168.1.150.
sftp>

Vamos a verificar el directorio de trabajo actual:

sftp&gt pwd
Remote working directory: /

sftp&gt ls
tecmint  

Aquí, tecmint es el directorio principal. Cambie al directorio tecmint y cree los archivos o carpetas de su elección.

sftp&gt cd tecmint
Remote working directory: /

sftp&gt mkdir test
tecmint  

Restringir Usuarios a un Directorio Específico

En nuestro ejemplo anterior, restringimos a los usuarios existentes al directorio principal. Ahora, veremos cómo restringir a un nuevo usuario a un directorio personalizado.

Crear Grupo y Nuevos Usuarios

Crear un nuevo grupo sftpgroup.

# groupadd sftpgroup

A continuación, cree un directorio para el grupo SFTP y asigne permisos para el usuario root.

# mkdir -p /sftpusers/chroot
# chown root:root /sftpusers/chroot/

A continuación, cree nuevos directorios para cada usuario, a los cuales tendrán acceso completo. Por ejemplo, crearemos el usuario tecmint y su nuevo directorio principal con los permisos de grupo correctos utilizando la siguiente serie de comandos.

# adduser tecmint -g sftpgroup -s /sbin/nologin
# passwd tecmint
# mkdir /sftpusers/chroot/tecmint
# chown tecmint:sftpgroup /sftpusers/chroot/tecmint/
# chmod 700 /sftpusers/chroot/tecmint/

Configurar SSH para Acceso SFTP

Modificar o agregar las siguientes líneas al final del archivo:

#Subsystem  	sftp	/usr/libexec/openssh/sftp-server
Subsystem sftp  internal-sftp
 
Match Group sftpgroup
   ChrootDirectory /sftpusers/chroot/
   ForceCommand internal-sftp
   X11Forwarding no
   AllowTcpForwarding no

Guarde y salga del archivo. Reinicie el servicio sshd para que los cambios guardados surtan efecto.

# systemctl restart sshd
OR
# service sshd restart

Eso es todo, puede verificar iniciando sesión en su servidor remoto SSH y SFTP utilizando los pasos proporcionados arriba en Verificar Inicio de Sesión SSH y SFTP.

Tenga en cuenta que este método deshabilitará el acceso a la terminal, es decir, no podrá acceder a la sesión de terminal del sistema remoto utilizando SSH. Solo podrá acceder a los sistemas remotos a través de SFTP y realizar transferencias de archivos entre los sistemas locales y remotos.

Conclusión

Ahora sabes cómo restringir los directorios de inicio de los usuarios usando un entorno Chroot en Linux. Si encuentras esto útil, comparte este artículo en tus redes sociales y háznoslo saber en la sección de comentarios a continuación si hay algún otro método para restringir los directorios de inicio de los usuarios.

Source:
https://www.tecmint.com/restrict-sftp-user-home-directories-using-chroot/