Restrinja el acceso de los usuarios de SSH a cierto directorio utilizando Chrooted Jail


Hay varias razones para restringir una sesión de usuario SSH a un directorio en particular, especialmente en servidores web, pero la más obvia es la seguridad del sistema. Para bloquear a los usuarios de SSH en un directorio determinado, podemos utilizar el mecanismo chroot .

cambiar la raíz ( chroot ) en sistemas similares a Unix, como Linux, es un medio para separar las operaciones específicas de los usuarios del resto del sistema Linux; cambia el directorio raíz aparente para el proceso actual del usuario en ejecución y su proceso hijo con un nuevo directorio raíz llamado jaula chrooted .

En este tutorial, le mostraremos cómo restringir el acceso de un usuario de SSH a un directorio determinado en Linux. Tenga en cuenta que ejecutaremos todos los comandos como root, use el comando sudo si ha iniciado sesión en el servidor como un usuario normal.

Paso 1: Crea SSH Chroot Jail

1. Comience creando la jaula chroot usando el comando mkdir a continuación:

# mkdir -p /home/test

2. A continuación, identifique los archivos requeridos, de acuerdo con la sshd_config , la opción ChrootDirectory especifica la ruta de acceso del directorio a la que se va a chroot después de la autenticación . El directorio debe contener los archivos y directorios necesarios para admitir una sesión de usuario.

Para una sesión interactiva, esto requiere al menos un shell, comúnmente sh y nodos básicos /dev como null, zero, stdin, stdout, stderr y tty devices:

# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Ahora, cree los archivos /dev de la siguiente manera utilizando el comando mknod . En el siguiente comando, el indicador -m se usa para especificar los bits de permisos de archivo, c significa archivo de caracteres y los dos números son números principales y menores a los que apuntan los archivos .

# mkdir -p /home/test/dev/		
# cd /home/test/dev/
# mknod -m 666 null c 1 3
# mknod -m 666 tty c 5 0
# mknod -m 666 zero c 1 5
# mknod -m 666 random c 1 8

4. Luego, establece el permiso apropiado en la jaula chroot. Tenga en cuenta que chroot jail y sus subdirectorios y subarchivos deben ser propiedad de root usuario y no pueden ser escritos por ningún usuario o grupo normal:

# chown root:root /home/test
# chmod 0755 /home/test
# ls -ld /home/test

Paso 2: Configurar Shell interactivo para SSH Chroot Jail

5. Primero, cree el directorio bin y luego copie los archivos /bin/bash en el directorio bin como sigue:

# mkdir -p /home/test/bin
# cp -v /bin/bash /home/test/bin/

6. Ahora, identifique bash requerido libs , como se muestra a continuación y cópielos en el directorio lib :

# ldd /bin/bash
# mkdir -p /home/test/lib64
# cp -v /lib64/{libtinfo.so.5,libdl.so.2,libc.so.6,ld-linux-x86-64.so.2} /home/test/lib64/

Paso 3: Crear y configurar usuario SSH

7. Ahora, crea el usuario SSH con el comando useradd y establece una contraseña segura para el usuario:

# useradd tecmint
# passwd tecmint

8. Cree el directorio de configuraciones generales de chroot jail, /home/test/etc y copie los archivos de cuenta actualizados (/etc/passwd y < strong>/etc/group ) en este directorio de la siguiente manera:

# mkdir /home/test/etc
# cp -vf /etc/{passwd,group} /home/test/etc/

rojo

Paso 4: Configurar SSH para usar Chroot Jail

9. Ahora, abra el archivo sshd_config .

# vi /etc/ssh/sshd_config

y agregar/modificar las líneas de abajo en el archivo.

#define username to apply chroot jail to
Match User tecmint
#specify chroot jail
ChrootDirectory /home/test

Guarde el archivo y salga, y reinicie los servicios SSHD:

# systemctl restart sshd
OR
# service sshd restart

Paso 5: Prueba de SSH con Chroot Jail

10. En este punto, compruebe si la configuración de chroot jail está funcionando como se espera:

# ssh [email protected]
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

En la captura de pantalla anterior, podemos ver que el usuario de SSH está bloqueado en la jaula chrooteada y no puede ejecutar ningún comando externo (ls, date, uname, etc.).

El usuario solo puede ejecutar bash y sus comandos integrados como (pwd, history, echo, etc.) como se ve a continuación:

# ssh [email protected]
-bash-4.1$ pwd
-bash-4.1$ echo "Tecmint - Fastest Growing Linux Site"
-bash-4.1$ history

Paso 6. Crear el directorio de inicio del usuario SSH y agregar comandos de Linux

11. En el paso anterior, podemos observar que el usuario está bloqueado en el directorio raíz, podemos crear un directorio de inicio para el usuario de SSH así (haga esto para todos los usuarios futuros):

# mkdir -p /home/test/home/tecmint
# chown -R tecmint:tecmint /home/test/home/tecmint
# chmod -R 0700 /home/test/home/tecmint

12. A continuación, instale algunos comandos de usuario como ls, date, mkdir en el directorio bin :

# cp -v /bin/ls /home/test/bin/
# cp -v /bin/date /home/test/bin/
# cp -v /bin/mkdir /home/test/bin/

13. A continuación, verifique las bibliotecas compartidas para los comandos anteriores y muévalas al directorio de bibliotecas de cárcel chroot:

# ldd /bin/ls
# cp -v /lib64/{libselinux.so.1,libcap.so.2,libacl.so.1,libc.so.6,libpcre.so.1,libdl.so.2,ld-linux-x86-64.so.2,libattr.so.1,libpthread.so.0} /home/test/lib64/

Paso 7. Probando SFTP con Chroot Jail

14. Haz una prueba final usando sftp; Compruebe si los comandos que acaba de instalar están funcionando.

Agregue la línea a continuación en el archivo /etc/ssh/sshd_config :

#Enable sftp to chrooted jail 
ForceCommand internal-sftp

Guarda el archivo y cierra. Luego reinicie los servicios SSHD:

# systemctl restart sshd
OR
# service sshd restart

15. Ahora, prueba con SSH, obtendrás el siguiente error:

# ssh [email protected]

Intente usar SFTP de la siguiente manera:

# sftp [email protected]

¡Eso es todo por ahora!. En este artículo, le mostramos cómo restringir a un usuario de SSH en un directorio determinado (chroot jail) en Linux. Use la sección de comentarios a continuación para comentarnos sobre esta guía.