He escuchado / leído mucho sobre la cárcel de Chroot en Linux pero nunca la he usado (uso Fedora día a día), entonces, ¿qué es una "cárcel" de Chroot? ¿Cuándo y por qué podría usarlo / no usarlo? ¿Hay algo más que deba saber? ¿Cómo haría para crear uno?
99
Respuestas:
Una cárcel chroot es una forma de aislar un proceso y sus hijos del resto del sistema. Solo 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 copie o vincule todos los archivos del sistema necesarios para que se ejecute un proceso. Luego usa la
chroot()
llamada del sistema para cambiar el directorio raíz para estar 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.) maliciosamente en esas ubicaciones.En Linux, usar un montaje de enlace es una excelente manera de poblar el árbol chroot. Usando eso, puede tirar carpetas como
/lib
y/usr/lib
sin tirar/usr
, por ejemplo. Simplemente vincule los árboles de directorios que desea a los directorios que cree en el directorio de la cárcel.fuente
firejail
está ejecutando./bin
que instala el usuario root? @Ben Combee"chroot jail" es un nombre inapropiado que realmente debería desaparecer, pero la gente sigue usándolo.
chroot
es una herramienta que le permite simular un directorio en su sistema de archivos como la raíz del sistema de archivos. Eso significa que puede tener una estructura de carpetas como:Si usted
chroot foo
y lo hacels /
, verá:En lo que respecta a
ls
(y cualquier otra herramienta que ejecute), esos son los únicos directorios en el sistema de archivos. La razón por la cual "cárcel" es un nombre inapropiadochroot
no tiene la intención de obligar a un programa a permanecer en ese sistema de archivos simulado; un programa que sabe que está en una "cárcel" chroot puede escapar fácilmente, por lo que no debe usarlochroot
como medida de seguridad para evitar que un programa modifique archivos fuera de su sistema de archivos simuladofuente
chroot
"cárcel". El caso que he visto requiere escalar a privilegios de root. ¿Es difícil evitar que un proceso se convierta en privilegios de root?chroot
no. Por esta razón, las personas a menudo se mezclanchroot
yjails
significan lo mismo. Ellos no. Se dice que el término "cárcel" fue acuñado por Bill Cheswick cuando creó un honeypot para atrapar una galleta: csrc.nist.gov/publications/secpubs/berferd.pdfchroot jail
una buena idea en mi caso ?Básicamente solo está cambiando el directorio raíz de su entorno. Entonces
se convierte
Cuando una aplicación accede / obtendrán / some-jail /. Además, la aplicación no puede salir de / some-jail / para que sepa que no accederá a nada más en su máquina. Es una forma muy simple de decir 'oye, solo puedes acceder a estas cosas que te estoy dando, y no puedes acceder a nada más en el sistema.
fuente
"¿Cuándo y por qué podría usarlo?"
Un uso es probar scripts (tiempo de arranque y otros) que hacen referencias de ruta absolutas, o que ejecutan comandos que quizás desee interceptar y registrar (y tal vez no optar por ellos), en un entorno en el que no desea que esos comandos en realidad opere en su entorno de ejecución.
Por ejemplo, tengo un dispositivo integrado que ejecuta Linux, me gustaría verificar el funcionamiento de algún bash sin a) ejecutarlo en el dispositivo real (ya que tengo mejores herramientas en mi escritorio y no quiero bloquear el dispositivo) b) ejecutar de verdad en mi escritorio (ya que no quiero que mi sistema de escritorio se estropee)
Además, puede descubrir qué comandos u otros archivos de script se utilizan, ya que la ejecución se cerrará con un error cada vez que intente ejecutar un comando o script de shell que no esté presente en la "cárcel chroot".
(Por supuesto, para ir por completo, puedes ejecutar QEMU o Docker, o una VM, pero eso implicaría crear una imagen de VM, etc., mucho más trabajo)
fuente