Búsqueda de sitios web

Restrinja el acceso de los usuarios SSH al directorio personal mediante 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 usuarios SSH en un directorio determinado, podemos utilizar el mecanismo chroot.

cambiar la raíz (chroot) en sistemas tipo Unix como Linux, es un medio para separar operaciones específicas del usuario del resto del sistema Linux; cambia el directorio raíz aparente para el proceso de usuario que se está ejecutando actualmente y su proceso hijo (padre) con un nuevo directorio raíz llamado cárcel chroot.

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

Paso 1: crear 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 opción ChrootDirectory especifica la ruta del directorio al que realizar 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 nodos /dev básicos como dispositivos null, zero, stdin, stdout, stderr y tty:

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

3. Ahora, cree los archivos /dev de la siguiente manera usando el comando mknod. En el siguiente comando, el indicador -m se usa para especificar los bits de permisos del archivo, c significa 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

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

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

Paso 2: Configurar el Shell interactivo para SSH Chroot Jail

5. Primero, cree el directorio bin y luego copie los archivos /bin/bash en el directorio bin usando 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 libs compartidas, como se muestra 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 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/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/

Paso 4: Configurar SSH para usar Chroot Jail

9. Ahora, abra el archivo sshd_config.

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

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 chroot jail está funcionando como se esperaba:

ssh [email 
-bash-4.1$ ls
-bash-4.1$ date
-bash-4.1$ uname

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

El usuario sólo puede ejecutar bash y sus comandos integrados como (pwd, historial, eco, etc.) como se ve a continuación:

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

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

11. Del 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

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 muévalas al directorio de bibliotecas jail con 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. Probar SFTP con Chroot Jail

14. Haga una prueba final usando sftp; compruebe si los comandos que acaba de instalar funcionan.

Agregue la siguiente línea 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 usando SSH y obtendrás el siguiente error:

ssh [email 

Intente utilizar SFTP de la siguiente manera:

sftp [email 

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