LinuxParty
¿Cómo puedo tener un servidor web mediante el comando chroot para aislar el sistema de archivos? ¿Cómo se utiliza un chroot para recuperar la contraseña o reparar un entorno Linux / Unix dañado?
Cada proceso / sistema en Linux y sistemas tipo Unix tiene directorio de trabajo actual llamado directorio raíz. Puede cambiar el directorio raíz a través de un comando llamado chroot, lo que cambia el directorio raíz para ambos procesos en ejecución actual y sus descendientes.
Un proceso/comando que se ejecuta en un entorno tan modificado no puede acceder a los archivos fuera del directorio raíz. Este entorno modificado se conoce comúnmente como "directorio encarcelado" o "jaula chroot". Sólo un proceso y el usuario privilegiado "root" puede usar el comando chroot. Esto es útil para:
- La separación de privilegios de proceso sin privilegios, como servidor web o un servidor DNS.
- La creación de un entorno de prueba.
- Ejecutar programas antiguos o ABI programas en compatibilidad sin que se caiga aplicación o sistema.
- La recuperación del sistema.
- Vuelva a instalar el gestor de arranque como GRUB o LILO.
- Recuperar la contraseña - Cambiar una contraseña olvidada y más.
Propósito
El comando chroot cambia sus directorios actuales y de raíz para el directorio proporcionado para luego ejecutar comandos, si se incluye, o una copia interactiva de la shell de registro del usuario. Tenga en cuenta que no todas las aplicaciones se pueden chrootear.
Sintaxis
La sintaxis básica es la siguiente:
chroot /path/to/new/root command
o
chroot /path/to/new/root /path/to/server
o
chroot [options] /path/to/new/root /path/to/server
Ejemplos del comando chroot
En este ejemplo, construiremos una mini-cárcel para el propósito de prueba con bash y el comando ls solamente. En primer lugar, establecer la ubicación "cárcel" con el comando mkdir:
$ J=$HOME/jail
Crear directorios dentro $J:
$ mkdir -p $J $ mkdir -p $J/{bin,lib64,lib} $ cd $J
Copiar /bin/bash and /bin/ls dentro de $J/bin/ utilizando el comando cp:
$ cp -v /bin/{bash,ls} $J/bin
El comando copy requiere las bibliotecas (librerías) en $J. Use ldd para compartir las dependencias de las librerías para bash.
$ ldd /bin/bash
Ejemplo de salida:
linux-vdso.so.1 => (0x00007fff8d987000) libtinfo.so.5 => /lib64/libtinfo.so.5 (0x00000032f7a00000) libdl.so.2 => /lib64/libdl.so.2 (0x00000032f6e00000) libc.so.6 => /lib64/libc.so.6 (0x00000032f7200000) /lib64/ld-linux-x86-64.so.2 (0x00000032f6a00000)
Copias las librerías en $J dará las siguientes salidas:
$ cp -v /lib64/libtinfo.so.5 /lib64/libdl.so.2 /lib64/libc.so.6 /lib64/ld-linux-x86-64.so.2 $J/lib64/
Ejemplo de salida:
`/lib64/libtinfo.so.5' -> `/home/vivek/jail/lib64/libtinfo.so.5' `/lib64/libdl.so.2' -> `/home/vivek/jail/lib64/libdl.so.2' `/lib64/libc.so.6' -> `/home/vivek/jail/lib64/libc.so.6' `/lib64/ld-linux-x86-64.so.2' -> `/home/vivek/jail/lib64/ld-linux-x86-64.so.2'
Copiar en las librerías que "ls" requere en $J. Use el comando ldd para mostrar las librerías compartidas que requieren:
linux-vdso.so.1 => (0x00007fff68dff000) libselinux.so.1 => /lib64/libselinux.so.1 (0x00000032f8a00000) librt.so.1 => /lib64/librt.so.1 (0x00000032f7a00000) libcap.so.2 => /lib64/libcap.so.2 (0x00000032fda00000) libacl.so.1 => /lib64/libacl.so.1 (0x00000032fbe00000) libc.so.6 => /lib64/libc.so.6 (0x00000032f7200000) libdl.so.2 => /lib64/libdl.so.2 (0x00000032f6e00000) /lib64/ld-linux-x86-64.so.2 (0x00000032f6a00000) libpthread.so.0 => /lib64/libpthread.so.0 (0x00000032f7600000) libattr.so.1 => /lib64/libattr.so.1 (0x00000032f9600000)
Puede copiar las librerías una a una o intente hacer un bucle shell bash de la siguiente manera:
list="$(ldd /bin/ls | egrep -o '/lib.*\.[0-9]')" for i in $list; do cp -v "$i" "${J}${i}"; done
Ejemplo de salida:
`/lib64/libselinux.so.1' -> `/home/vivek/jail/lib64/libselinux.so.1' `/lib64/librt.so.1' -> `/home/vivek/jail/lib64/librt.so.1' `/lib64/libcap.so.2' -> `/home/vivek/jail/lib64/libcap.so.2' `/lib64/libacl.so.1' -> `/home/vivek/jail/lib64/libacl.so.1' `/lib64/libc.so.6' -> `/home/vivek/jail/lib64/libc.so.6' `/lib64/libdl.so.2' -> `/home/vivek/jail/lib64/libdl.so.2' `/lib64/ld-linux-x86-64.so.2' -> `/home/vivek/jail/lib64/ld-linux-x86-64.so.2' `/lib64/libpthread.so.0' -> `/home/vivek/jail/lib64/libpthread.so.0' `/lib64/libattr.so.1' -> `/home/vivek/jail/lib64/libattr.so.1'
Por último, hacer chroot en su nueva cárcel:
$ sudo chroot $J /bin/bash
Un chrooted bash y aplicación ls está bloqueado dentro de un directorio particular llamado $HOME/$J y es imposible trastear fuera del arbol de directorios, y ver su directorio "/" (raíz). Este es un gran impulso a la seguridad si lo configura correctamente.
[Continuará en una Segunda parte]

-
Gráficos
- El controlador de gráficos NVIDIA 575 para Linux entra en la versión beta pública con NVIDIA Smooth Motion
- Gracias a Nvidia, llegará una nueva generación de PC que ejecutarán Linux
- Inkscape 1.4, editor SVG de código abierto con galería de filtros y cuadrículas modulares
- El editor SVG de código abierto Inkscape 1.3 ya está disponible con la nueva herramienta Shape Builder, muchos cambios
- Mesa 23.2 trae compatibilidad con OpenGL 3.1 y OpenGL ES 3.0 en Asahi, nuevas características de RADV
- Optimizar, cambiar tamaño y peso de las imágenes desde la consola terminal Linux
- Peek, para grabar la pantalla y hacer vídeos en formato GIF
- Como pausar ffmpeg incluso cuando está en proceso de codificación
- Hackers han roto la red de NVIDIA y tras amenazas filtran el Código Fuente de DLSS en Internet
- Convertir imágenes de WebP a JPG o PNG en Linux desde la consola.
- OpenShot editor de video, soportorá IA y mejoras en imagen y sonido
- Nuevo tipo de cámaras de seguridad, solo graban cuando se mueve un píxel.
- Inkscape 1.1: el editor de gráficos vectoriales open source llega cargado de novedades en su nueva versión
- Editar, cambiar el tamaño, redimensionar imágenes desde la consola de Linux
- Incluir imágenes sin ruta a ficheros, en artículos o emails con BASE64
Comentarios