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.

4 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

  3. alejandro June 29, 2014 at 3:53 PM #

    Hola, me permito hacer un comentario en este post. Nunca he usado el chroot, sin embargo hay otra manera de limitar a un usuario un listado de comandos. No sé si es mas limpio, pero es efectivo.

    Aqui os dejo el link al articulo de un blog en el que contribuyo:

    http://www.taqwiki.tk/index.php/Limit_command_to_users_on_linux

    Basicamente se crea un grupo al que se anade los usuarios que quieras que utilizan esos comandos. Después cambias el grupo al que pertenecen esos comandos al nuevo creado y a los binarios de los comandos les das como derechos: 750, de esta manera solo los duenos o los que pertenezcan al grupo podran ejecutar esos comandos. Efectivamente el chroot es mas exahustivo, pero a mi me viene bien poder bloquear comandos como telnet, ping, etc.

    Un saludo.
    Alejandro

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>