¿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
Todos somos usuarios enjaulados en el sistema….
Interesante, lo probare gracias.
A ti por comentar 😉
¿tienes idea de cómo darle un editor,ya sea vim o nano?
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.
Eso no había probado porque esto solo se suele usar para conectarse mediante SSH pero se agradece la información.
Lo miro y cuando tenga un rato posteo el como agregar un programa.
Ya te he añadido el como añadir vim. Es bastante sencillo.
Un saludo
GRACIAS!!!!
Hola, muy interesante. Lo probaré. Saludos 🙂