Restringir el acceso de usuarios SSH a ciertos directorios usando Chrooted Jail

Hay varias razones para restringir la sesión de un 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 usar el mecanismo chroot .

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

En este tutorial, le mostraremos cómo restringir el acceso de un usuario 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 usuario normal.

Paso 1: Cree la cárcel SSH Chroot

1. Comience creando la cárcel chroot usando el comando mkdir a continuación:

# mkdir -p /home/test

2. A continuación, identifique los archivos requeridos, de acuerdo con la página de manual sshd_config , la ChrootDirectoryopción especifica el nombre de ruta del directorio al que se aplicará el chroot después de la autenticación. El directorio debe contener los archivos y directorios necesarios para admitir la sesión de un usuario.

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

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

Listado de archivos requeridosListado de archivos requeridos

3. Ahora, cree los /devarchivos de la siguiente manera usando el comando mknod . En el siguiente comando, la -mbandera se usa para especificar los bits de permisos de archivo, csignifica archivo de caracteres y los dos números son números mayores 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

Crear / dev y archivos obligatoriosCrear / dev y archivos obligatorios

4. Luego, establezca el permiso apropiado en la cárcel chroot. Tenga en cuenta que la cárcel chroot y sus subdirectorios y subarchivos deben ser propiedad del usuario root , y ningún usuario o grupo normal puede escribirlos:

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

Establecer permisos en el directorioEstablecer permisos en el directorio

Paso 2: Configurar el shell interactivo para SSH Chroot Jail

5. Primero, cree el bindirectorio y luego copie los /bin/basharchivos en el bindirectorio de la siguiente manera:

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

Copiar archivos al directorio binCopiar archivos al directorio bin

6. Ahora, identifique bash required shared libs, como se muestra a continuación y cópielos en el libdirectorio:

# 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/

Copiar archivos de biblioteca compartidaCopiar archivos de biblioteca compartida

Paso 3: crear y configurar un 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 chroot jail /home/test/etcy 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/

Copiar archivos de contraseñaCopiar archivos de contraseña

Nota : Cada vez que agregue más usuarios SSH al sistema, deberá copiar los archivos de cuenta actualizados en el /home/test/etcdirectorio.

Paso 4: configurar SSH para usar Chroot Jail

9. Ahora, abra el sshd_configarchivo.

# vi /etc/ssh/sshd_config

y agregue / modifique las líneas siguientes en el archivo.

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

Configurar SSH Chroot JailConfigurar SSH Chroot Jail

Guarde el archivo, salga y reinicie los servicios SSHD:

# systemctl restart sshd
OR
# service sshd restart

Paso 5: Probar SSH con Chroot Jail

10. En este punto, pruebe si la configuración de la cárcel de chroot funciona como se esperaba:

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

Prueba de la cárcel de Chroot de usuario SSHPrueba de la cárcel de Chroot de usuario SSH

En la captura de pantalla anterior, podemos ver que el usuario SSH está bloqueado en la cárcel chrooted 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

Comandos integrados de SSHComandos integrados de SSH

Paso 6. Cree el directorio de inicio del usuario SSH y agregue comandos de Linux

11. Desde el paso anterior, podemos notar que el usuario está bloqueado en el directorio raíz, podemos crear un directorio de inicio para el usuario 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

Crear directorio de inicio de usuario SSHCrear directorio de inicio de usuario SSH

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

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

Agregar comandos al usuario SSHAgregar comandos al usuario SSH

13. A continuación, verifique las bibliotecas compartidas para los comandos anteriores y muévalos al directorio de bibliotecas de jail chrooted:

# 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/

Copiar bibliotecas compartidasCopiar bibliotecas compartidas

Paso 7. Prueba SFTP con Chroot Jail

14. Realice una prueba final utilizando sftp compruebe si los comandos que acaba de instalar funcionan.

Agregue la siguiente línea en el /etc/ssh/sshd_configarchivo:

#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, pruebe usando SSH, obtendrá el siguiente error:

# ssh [email protected]

Prueba SSH Chroot JailPrueba SSH Chroot Jail

Intente usar SFTP de la siguiente manera:

# sftp [email protected]

Prueba de usuario sFTP SSHPrueba de usuario sFTP SSH

Lectura sugerida: Restrinja a los usuarios de SFTP a los directorios de inicio usando chroot Jail

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

SSH

Leave a Comment

Your email address will not be published. Required fields are marked *

Hazlo Linux