A veces, es posible que necesite aislar un proceso de otros procesos que se ejecutan en su sistema. Podemos hacer esto con el uso del comando chroot en Linux.
En este tutorial, le mostraremos qué es el comando chroot y cómo puede usarlo para crear un chroot jail y atrapar a un usuario o grupo en un entorno aislado.
Comprender el comando chroot en Linux
El comando chroot es esencial en los sistemas Linux. Le ayuda a cambiar el directorio raíz de un proceso junto con sus procesos secundarios. Cuando creamos un directorio raíz falso para un usuario o grupo, pierde acceso al directorio raíz verdadero.
Por lo tanto, el usuario o grupo ahora está aislado del resto de nuestro sistema. Esto puede tener muchos usos, como los siguientes:
- Cree un entorno de prueba para el desarrollo y las pruebas de software.
- Inicie la reinstalación de los archivos del gestor de arranque en su sistema
- Ejecutar software que puede estar decrepitado
- Mejore la seguridad mediante un mecanismo de delimitación
El comando chroot esencialmente crea un entorno virtual. Su función es similar a una máquina virtual, pero no requiere que dedique recursos dedicados para la cárcel chroot.
El entorno virtual comparte todo el núcleo con el sistema host.
Sintaxis del Comando chroot
El comando chroot en Linux tiene la siguiente sintaxis.
chroot [-OPTION] [PATH FOR NEW ROOT] [PATH FOR SERVER]
El único parámetro necesario para ejecutar un comando chroot es la ruta del nuevo directorio raíz. Sin embargo, puede usar las opciones disponibles en el comando chroot para lograr los resultados deseados.
Estas son las opciones a su disposición cuando usa el comando chroot en Linux.
- –userspec=USUARIO[:GRUPO] – Se usa para definir el usuario o el grupo en el que deseamos usar el comando chroot. Podemos especificar el grupo o usuario que deseamos utilizar por nombre o ID
- –groups=G_List– Usado para especificar grupos suplementarios que deseamos usar como G1, G2… Gn
- — ayuda – Le muestra una pantalla de ayuda y sale
- –versión– Muestra los datos de la versión y sale
Crear una cárcel de comandos chroot
Ahora que entendemos el comando chroot y su sintaxis, es hora de usarlo. Para mostrarle cómo se hace, crearemos una cárcel chroot.
Un chroot jail es un entorno virtual creado al cambiar el directorio raíz de un usuario o grupo a un nuevo directorio. Este nuevo directorio sirve como directorio raíz falso para nuestro chroot jail.
Repasemos los pasos que debe seguir para usar el comando chroot en Linux para crear una cárcel chroot.
1. Crear un Directorio
Primero, comenzaremos creando un directorio raíz falso en /home/chroot_jail usando el comando mkdir.
mkdir $home/chroot_jail
Esto creará un directorio en la dirección dada que usaremos para nuestro chroot jail. Sin embargo, antes de permitir que el comando chroot haga su trabajo, debemos agregar los archivos necesarios a nuestro nuevo directorio.
2. Agregar directorios raíz requeridos
Comenzaremos creando /bin, /lib y /lib64 en nuestro directorio jail. El comando para crear estos directorios se proporciona a continuación.
mkdir -p $home/chroot_jail/{bin,lib,lib64}
Como puede notar, los directorios que estamos creando dentro de nuestro entorno virtual se especifican entre llaves ('{}').
Ahora, usaremos el comando cd para hacer de chroot_jail nuestro nuevo directorio raíz.
cd $home/chroot_jail
3. Mover los archivos binarios de comandos permitidos
Estamos creando un entorno Linux minimalista para este ejemplo. Usemos los comandos bash, ls, rm y touch para ser parte de la funcionalidad de nuestro entorno virtual.
Copie los archivos binarios de nuestro directorio raíz /bin al directorio /bin de nuestro chroot_jail. Lo hacemos usando el comando cp con la etiqueta -v (verbose) para que podamos ver lo que se está copiando en el momento dado.
cp -v /bin/{bash,touch,ls,rm} $home/chroot_jail
Como puede ver, los binarios que deseamos copiar se mencionan entre llaves. Los archivos de los binarios proporcionados ahora se han copiado en nuestro nuevo directorio chroot jail.
4. Resolución de dependencias de comandos
Pero estos binarios tendrán dependencias. Las dependencias para bash se pueden encontrar usando el comando ldd.
ldd /bin/bash
Ahora usaremos el comando cp para copiar cuidadosamente los directorios a nuestro chroot jail uno por uno. Debemos asegurarnos de copiar todas las bibliotecas de dependencia, de lo contrario, nuestro chroot jail no funcionará correctamente. Reemplace la parte
cp -v {<List dependencies here>} $home/chroot_jail/lib64
Repetiremos estos pasos para todos los comandos que queramos permitir dentro del chroot jail. Busque las bibliotecas de dependencia y cópielas en el directorio chroot_jail.
5. Cambiar al nuevo directorio raíz
Ahora, todo lo que nos queda por hacer es cambiar el directorio raíz de nuestro chroot jail al nuevo directorio falso que acabamos de crear.
Para cambiar el directorio y especificar que bash se ejecute como la aplicación que ejecutamos como shell para nuestro entorno virtualizado, usamos el siguiente comando.
sudo chroot $home/chroot_jail/bin/bash
Es posible que se le solicite que ingrese su contraseña de usuario para continuar. En ese caso, introduzca su contraseña de usuario y se ejecutará el comando.
Si ha seguido todos los pasos correctamente, debería esperar ver un resultado similar al siguiente en su pantalla.
Como puede ver en la captura de pantalla, la versión 4.4 de bash ahora se está ejecutando como shell para nuestro chroot jail.
Ahora, nuestro entorno Linux virtual minimalista se ha creado y está listo para usar. Podemos interactuar con el entorno virtual usando bash como un sistema Linux normal.
Conclusión
El comando chroot en Linux es un comando simple pero efectivo en el conjunto de herramientas de un usuario de Linux. Su capacidad para crear un entorno virtualizado, sin necesidad de ningún software de monitorización como vemos con las máquinas virtuales, lo convierte en una alternativa ligera para este uso.
Este tutorial tuvo como objetivo ayudarlo a comprender qué es chroot y luego mostrarle cómo construir una cárcel chroot simple. Si tiene alguna consulta, comentario o sugerencia, no dude en comunicarse con nosotros en los comentarios a continuación.