Chroot a User | Enjaular a un usuario

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.

3 Responses to “Chroot a User | Enjaular a un usuario”

  1. robedemente March 30, 2011 at 10:41 PM #

    oye, fijate que he andado buscando hacer esto de anjaular a un user, y segui ut metodo paso a paso y no me funciono, pero creo que esta muy cerca, he leido otros posts, y me parece que te falta un comando usermod, para indicar que el bash del usuario es el archivo /bin/bash, y tambien al final de tu articulo, creo que el comando deberia ser chmod +x, y no +s, espero que a alguien mas le sirva esta informacion

    saludos

  2. Lorgio January 25, 2013 at 8:01 PM #

    Estimado Realize todos los pasos indicados y al momento de tratar de loguearme con el usuario me sale el siguiente resultado:

    /usr/sbin/chroot: cannot run command ´/bin/bash´: No such file or directory

    Cual puede ser el problema, estoy haciendo uso de Red Hat 5.5

    Gracias

Leave a Reply:

Gravatar Image

XHTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>