Enjaular usuarios en Linux

¿Que es enjaular un usuario? Significa hacer que un usuario no pueda salir de un directorio es decir, ese usuario no podrá navegar por el sistema de archivos y se le podrán definir los programas que queramos. ¿En que situación se puede utilizar esto? Cuando tenemos un servidor que es compartido por varios usuarios o se quieren tener diferentes hostings.

Para conseguir esto hay un programa llamado jailkit que cumple perfectamente la función de enjaular usuarios.

 Instalar y configurar jailkit

Descargar el programa jailkit

 $ cd /tmp && wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz

Luego desempaquetar el programa

 $ tar zxvf jailkit-*

Ir a la carpeta desempaquetada

 $ cd jailkit-*/

Compilar el programa

 $ ./configure
 $ make
 $ sudo make install

Una vez compilado crear la carpeta donde se van a enjaular a los usuarios

 $ mkdir /home/jail

Cambiar el propietario de la carpeta para que sea root

 $ sudo chown root:root /home/jail 

Habilitar la instalación base y las librerías y programas necesarios.

 $ sudo jk_init -v /home/jail basicshell
 $ sudo chmod 755 /home/jail/bin
 $ sudo jk_init -v /home/jail netutils
 $ sudo jk_init -v /home/jail ssh
 $ sudo jk_init -v /home/jail jk_lsh

Crear la carpeta opt en el jail para que no de errores

 $ mkdir /home/jail/opt

Añadir las librerías de shell

 $ sudo jk_cp -v -f /home/jail /bin/bash

Actualizar las librerías

 $ sudo jk_update -j /home/jail -d

Hacer que se actualicen las librerías automáticamente mediante el crontab

 $ crontab -e

Y pegar al final la siguiente línea

30 * * * * /usr/sbin/jk_update -j /home/jail -d > /dev/null

Con esto ya estaría hecha la configuración inicial ahora solo quedaría crear los usuarios

Crear usuarios

En este caso para testear se va  a crear un usuario que se llama prueba

 $ sudo useradd -d /home/prueba -m prueba -s /bin/bash

Darle una contraseña al usuario prueba

 $ sudo passwd prueba

Ahora, es la hora de enjaularlo

 $ sudo jk_jailuser -m -j /home/jail prueba

En el fichero passwd de jail modificar lo siguiente

 $ sudo vim /home/jail/etc/passwd
  prueba:x:1001:1001::/home/prueba:/bin/bash

Comprobar que se ha creado bien el usuario prueba

 $ cat /etc/passwd
prueba:x:1001:1001::/home/jail/./home/prueba:/usr/sbin/jk_chrootsh

Añadir programas

Para añadir programas lo primero que hay que hacer es comprobar si están en el archivo /etc/jailkit/jk_init.ini

 # cat /etc/jailkit/jk_init.ini

Si no existe agregarlo de la siguiente manera:

Primero ver las rutas del programa. En este caso se va a hacer con vim

 # whereis vim
 vim: /usr/bin/vim.basic /usr/bin/vim /usr/bin/vim.tiny /etc/vim /usr/share/vim /usr/share/man/man1/vim.1.gz

Una vez hecho esto copiar las rutas y crear un apartado en /etc/jailkit/jk_init.ini 

 # vim /etc/jailkit/jk_init.ini 
[...]
 [vim]
 comment = Editor de textos vim
 paths = /usr/bin/vim.basic /usr/bin/vim /usr/bin/vim.tiny /etc/vim /usr/share/vim
 includesections = editors

Luego cargar el programa en el jail

 # jk_init -v /home/jail vim

10 comments

    1. y como información adicional,esta configuración funciona sin entorno gráfico;esto es que el usuario está encerrado en su home sólo si está logeado al sistema mediante linea de comandos(tty),pero si accede al servidor mediante interfaz gráfica el usuario puede acceder a todo el sistema.

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *