Hay varias razones para restringir una sesión de usuario SSH a un directorio específico, especialmente en servidores web, pero la más obvia es la seguridad del sistema. Para bloquear usuarios de SSH en un directorio determinado, podemos usar el mecanismo chroot.
El cambio de raíz (chroot) en sistemas similares a Unix como Linux es un medio para separar operaciones de usuario específicas del resto del sistema Linux; cambia el directorio raíz aparente para el proceso de usuario en ejecución actualmente y su proceso hijo (padre) con un nuevo directorio raíz llamado jail chrooted.
En este tutorial, te mostraremos cómo restringir el acceso de usuario SSH a un directorio dado en Linux. Ten en cuenta que ejecutaremos todos los comandos como root, usa el comando sudo si estás conectado al servidor como usuario normal.
Tabla de contenidos
1. Comience creando la cárcel chroot utilizando el comando mkdir a continuación:
1. Comienza creando la jaula chroot utilizando el comando mkdir que se muestra a continuación:
# mkdir -p /home/test
2. A continuación, identifica los archivos necesarios, de acuerdo con la página de manual sshd_config, la opción ChrootDirectory
especifica la ruta del directorio al que se chroot después de la autenticación. El directorio debe contener los archivos y directorios necesarios para soportar la sesión de un usuario.
Para una sesión interactiva, esto requiere al menos un shell, comúnmente sh
, y los nodos básicos de /dev
como null, zero, stdin, stdout, stderr y dispositivos tty:
# ls -l /dev/{null,zero,stdin,stdout,stderr,random,tty}

3. Ahora, crea los archivos /dev
de la siguiente manera utilizando el comando mknod. En el comando a continuación, se utiliza la bandera -m
para especificar los bits de permisos de archivo, c
significa archivo de caracteres y los dos números son los 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. Posteriormente, establece los permisos apropiados en la jaula chroot. Tenga en cuenta que la jaula chroot y sus subdirectorios y subarchivos deben ser propiedad del usuario root, y no deben ser legibles por ningún usuario normal o grupo:
# chown root:root /home/test # chmod 0755 /home/test # ls -ld /home/test

Paso 2: Configura Shell Interactiva para Jaula Chroot SSH
5. Primero, cree el directorio bin
y luego copie los archivos /bin/bash
en el directorio bin
utilizando el comando cp de la siguiente manera:
# mkdir -p /home/test/bin # cp -v /bin/bash /home/test/bin/

6. Ahora, identifique el bash requerido para las bibliotecas compartidas libs
, como se indica a continuación, y cópielas 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, cree el usuario SSH con el comando useradd y establezca una contraseña segura para el usuario:
# useradd tecmint # passwd tecmint
8. Cree el directorio de configuraciones generales de la cárcel chroot, /home/test/etc
y copie los archivos de cuenta actualizados (/etc/passwd y /etc/group) en este directorio de la siguiente manera:
# mkdir /home/test/etc # cp -vf /etc/{passwd,group} /home/test/etc/

/home/test/etc
directory.Paso 4: Configurar SSH para Usar Cárcel Chroot
9. Ahora, abra el archivo sshd_config
.
# vi /etc/ssh/sshd_config
y agregue/modifique las líneas a continuación 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: Pruebas de SSH con Cárcel Chroot
10. En este punto, pruebe si la configuración de la cárcel chroot funciona según lo esperado:
# ssh [email protected] -bash-4.1$ ls -bash-4.1$ date -bash-4.1$ uname

A partir de la captura de pantalla anterior, podemos ver que el usuario SSH está encerrado en la cárcel chroot 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. Cree el directorio personal del usuario SSH y agregue comandos de Linux
11. A partir del paso anterior, podemos notar que el usuario está encerrado en el directorio raíz, podemos crear un directorio personal para el usuario SSH de la siguiente manera (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 y 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 móvilas al directorio de bibliotecas de la prisión 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. Pruebas de SFTP con Chroot Jail
14. Haz una prueba final utilizando sftp; verifica si los comandos que acabas de instalar funcionan.
Agrega 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 sal. Luego reinicia los servicios SSHD:
# systemctl restart sshd OR # service sshd restart
15. Ahora, prueba utilizando SSH y obtendrás el siguiente error:
# ssh [email protected]

Intenta usar SFTP de la siguiente manera:
# sftp [email protected]

¡Eso es todo por ahora! En este artículo, te mostramos cómo restringir a un usuario SSH en un directorio determinado (jaula chroot) en Linux. Utiliza la sección de comentarios a continuación para ofrecernos tus pensamientos sobre esta guía.
Source:
https://www.tecmint.com/restrict-ssh-user-to-directory-using-chrooted-jail/