Chroot a User | Enjaular a un usuario
13 Apr
No se si les ha sucedido que necesitan que un usuario en específico o una lista de usuarios tengan accesos aun mas restringidos que los que normalmente nos ofrece linux, es por tal motivo que nace el enjaulamiento “chroot”. El procedimiento consiste en asignarle un home determinado a un usuario, con un shell creado especificamente para este, y que dentro de un directorio que asignemos para esto tenga un listado de comandos disponibles.
El procedimiento para esto es bastante sencillo lo primero que debemos hacer es crear el usuario que deseamos enjaular si no esta creado previamente.
$: adduser techironic
$:passwd techironic
Una vez creado esto es necesario crear el shell que usara nuestro usuario, para esto crearemos un archivo /bin/jaula, con el siguiente contenido
#!/bin/bash
/usr/sbin/chroot /home/techironic /bin/bash
Lo guardaremos para asignarle permisos de ejecucion de la siguiente forma:
$: chmod +x /bin/jaula
y luego abriremos el archivo de los shells en linux /etc/shells y agregaremos la ruta de este nuevo shell al final. Esto es importante para poder usarlo con nuestro nuevo usuario sino no tendrá un shell válido.
Una vez realizados estos pasos es necesario crear una estructura de archivos en el home del usuario de la siguiente forma:
cd /home/techironic
mkdir bin
mkdir usr/bin
mkdir lib
Solo faltaría, copiar las librerias y los comandos necesarios para que este usuario los pueda usar para ello usaremos el comando ldd, este comando nos permite ver las dependencias de los archivos lo usaremos de la siguiente forma:
ldd /bin/bash
lo cual nos arrojará un resultado similar a este:
libtermcap.so.2 => /lib/libtermcap.so.2 (0×40028000)
libdl.so.2 => /lib/libdl.so.2 (0x4002c000)
libc.so.6 => /lib/tls/libc.so.6 (0×42000000)
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0×40000000)
Copiamos dichas librerías:
cp /lib/libtermcap.so.2 /home/techironic/lib
cp /lib/libdl.so.2 /home/techironic/lib
cp /lib/libc.so.6 /home/techironic/lib
cp /lib/ld-linux.so.2 /home/techironic/lib
Ahora sera necesario copiar bash al home de la siguiente forma:
cp /bin/bash /home/techironic/bin/
De igual forma haremos con los comandos que queramos usar /bin/ls, /bin/cp entre otros.
En el archivo /etc/sudoers habilitaremos el archivo chroot para este usuario agregando la siguiente linea:
pajaro ALL=NOPASSWD: /usr/sbin/chroot
y para finalizar daremos permisos en el directorio de home de techironic asi:
chown -R pajaro /home/pajaro
y le asignaremos el suid bit al archivo chroot para que pueda leerlo y ejecutarlo nuestro usuario:
chmod +s /usr/sbin/chroot
ahora nos podremos loguear con nuestro usuario enjaulado.
