¿Qué es enjaular o hacer un chroot de un usuario?
Asegurarnos que tenemos las aplicaciones sudo y chroot instaladas, generalmente vienen con cualquier Linux. Nos convertimos a root haciendo:
su -l
Lo primero que hacemos ahora, es crear un usuario, no hace falta espeficar ahora el tipo de shell que va a usar, lo haremos más adelante.
Nos limitamos a crear el usuario, el mio se llamará prueba:
adduser prueba # Agregamos usuario passwd prueba # Indicamos contrasena al usuario
Hemos creado el usuario y le hemos dado un contrasena.
Ahora creamos una shell, la que lanzará el usuario cuando se loguee en el sistema. La creamos en el directorio /bin, yo la voy a llamar jaula, por lo tanto el fichero a crear es:
/bin/jaula
¿Qué ponemos en dicho fichero?
Pues ponemos los mandatos que queremos que se ejecuten cuando el usuario entre en el sistema, este es el contenido de ese fichero:
#!/bin/bash /usr/sbin/chroot /home/prueba /bin/bash
Ya tenemos creada la shell para nuestro usuario pájaro, ahora damos permiso de ejecución al fichero:
chmod +x /bin/jaula
Ya tenemos la shell lista, sólo nos falta hacer de ella que sea una shell válida, esto lo hacemos metiendo la shell en el /etc/shells, que lo hacemos editando el fichero con nuestro editor favorito.
Ahora debemos crear unos directorios básicos en el /home/prueba, nos vamos a su directorio y hacemos:
mkdir bin mkdir usr/bin mkdir lib
Ya tenemos los directorios principales en el /home/prueba, ahora solo nos falta copiar el /bin/bash a él, pero claro, /bin/bash depende de unas librerias, que también debemos copiar, para saber qué librerías necesitamos hacemos:
ldd /bin/bashY obtenemos:
libtermcap.so.2 => /lib/libtermcap.so.2 (0x40028000) libdl.so.2 => /lib/libdl.so.2 (0x4002c000) libc.so.6 => /lib/tls/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Copiamos dichas librerías:
cp /lib/libtermcap.so.2 /home/prueba/lib cp /lib/libdl.so.2 /home/prueba/lib cp /lib/libc.so.6 /home/prueba/lib cp /lib/ld-linux.so.2 /home/prueba/lib
Ahora copiamos el /bin/bash:
cp /bin/bash /home/prueba/bin/Bueno, ya tenemos todo listo, aunque ahora mismo el usuario no podría hacer nada, así que le dejamos por ejemplo que pueda hacer ls y cp Para ello debemos copiar /bin/ls a /home/prueba/bin, deberíamos comprobar de qué librerías dependen:
ldd /bin/ls libtermcap.so.2 => /lib/libtermcap.so.2 (0x40028000) libc.so.6 => /lib/tls/libc.so.6 (0x42000000) /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)
Al igual que pasará con el cp las librerías que necesitan ya están copiadas en /home/prueba/lib, por lo que no debemos hacer nada, sólo limitarnos a copiar los ficheros:
cp /bin/ls /home/prueba/bin && cp /bin/cp /home/prueba/binYa tenemos esas dos utilidades en el directorio de nuestro usuario. Ahora nos falta decirle a ese usuario que su shell será /bin/jaula, lo hacemos de la siguiente forma:
usermod -s /bin/jaula prueba
Por último tenemos que decrirle al sudo, que el usuario prueba puede ejecutar la orden chroot, lo hacemos:
visudo
Con esta orden editamos un fichero y debemos añadir una linea tal como esta:
prueba ALL=/usr/sbin/chrootLo hacemos justo debajo de la que hay ya que es:
# User privilege specification root ALL=(ALL) ALLYa tenemos todo listo, por último hacemos propietario de todo el /home/prueba a dicho usuario, ya que los ficheros que hemos copiado y los que hemos creado no son de ese usuario, sino de root y puede haber problemas en un conflicto, así que mejor ponemos solución ahora:
chown -R prueba /home/pruebaYa hemos terminado, si entramos como prueba y hacemos unas pruebas pasa esto:
bash-2.05b# ls bin lib usr bash-2.05b# cd / bash-2.05b# pwd / bash-2.05b#
http://unidadlocal.com/Enjaular_Usuarios_en_Home_en_Linux
No hay comentarios:
Publicar un comentario