chroot "jail" - ¿qué es y cómo lo uso?

chroot "jail" - ¿qué es y cómo lo uso?

He oído/leído mucho sobre la cárcel chroot en Linux, pero nunca la he usado todavía (uso Fedora a diario), entonces, ¿qué es una "cárcel" chroot? ¿Cuándo y por qué podría usarlo o no? ¿Hay algo más que deba saber? ¿Cómo haría para crear uno?

Respuesta1

Una cárcel chroot es una forma de aislar un proceso y sus hijos del resto del sistema. Sólo debe usarse para procesos que no se ejecutan como root, ya que los usuarios root pueden salir de la cárcel muy fácilmente.

La idea es crear un árbol de directorios donde copiar o vincular todos los archivos del sistema necesarios para que se ejecute un proceso. Luego usa la chroot()llamada al sistema para cambiar el directorio raíz para que esté en la base de este nuevo árbol e iniciar el proceso que se ejecuta en ese entorno chroot. Dado que en realidad no puede hacer referencia a rutas fuera de la raíz modificada, no puede realizar operaciones (lectura/escritura, etc.) de forma maliciosa en esas ubicaciones.

En Linux, usar montajes de enlace es una excelente manera de llenar el árbol chroot. Al usarlo, puede acceder a carpetas como /liby /usr/libsin acceder a /usr, por ejemplo. Simplemente vincule los árboles de directorios que desee a los directorios que cree en el directorio de la cárcel.

Respuesta2

"chroot jail" es un nombre inapropiado que realmente debería desaparecer, pero la gente sigue usándolo. chrootes una herramienta que le permite simular un directorio en su sistema de archivos como la raíz del sistema de archivos. Eso significa que puedes tener una estructura de carpetas como:

-- foo
    -- bar
    -- baz
-- bazz

Si lo chroot foohaces ls /, verás:

-- bar
-- baz

En lo que respecta ls(y a cualquier otra herramienta que ejecute), esos son los únicos directorios en el sistema de archivos. La razón por la que "cárcel" es un nombre inapropiado es chrootque no pretendefuerzaun programa para permanecer en ese sistema de archivos simulado; un programa que sabe que está en una "cárcel" chroot puede escapar con bastante facilidad, por lo que no debe usarlo chrootcomo medida de seguridad para evitar que un programa modifique archivos fuera de su sistema de archivos simulado.

Respuesta3

Básicamente, solo estás cambiando el directorio raíz de tu entorno. Entonces

/

se convierte

/some-jail/ (or whatever directory you want)

Cuando una aplicación accede a / obtendrá /some-jail/. Además, la aplicación no puede salir de /some-jail/, por lo que sabes que no accederá a nada más en tu máquina. Es una forma muy sencilla de decir "oye, sólo puedes acceder a estas cosas que te estoy dando y no puedes acceder a nada más en el sistema".

Respuesta4

chroot se entiende fácilmente como un término más moderno de entorno virtual. El proceso obtiene un nuevo directorio raíz virtual para establecer la visibilidad de la ruta. Esta es principalmente una forma conveniente y sencilla de controlar a qué archivos y bibliotecas puede hacer referencia el proceso. Es muy útil para aislar cosas que pueden tener diferentes versiones disponibles en el sistema de archivos real.

También puedes considerarlo como una especie de filtro de lo que es visible en el sistema de archivos.

También es importante considerar cambiar el directorio de trabajo actual después de chroot para evitar una vista inesperada del sistema de archivos.

Una cosa que induce a error es el término cárcel. Históricamente se ha utilizado chroot para simular lo que FreeBSD llama una cárcel que otros podrían llamar una zona de pruebas. Hacer eso requiere también reducir los privilegios del proceso. No es un gran modelo de seguridad.

Un caso de uso común es la compilación de software que necesita hacer referencia a una cadena de herramientas específica o un conjunto de bibliotecas, archivos y herramientas que son un subconjunto de lo que realmente tiene el sistema.

información relacionada