LinuxParty
NUESTRO SITIO necesita la publicidad para costear hosting y el dominio. Por favor considera deshabilitar tu AdBlock en nuestro sitio. También puedes hacernos una donación entrando en linuxparty.es, en la columna de la derecha.
¿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]

-
Linux
- Cambiar la Hora y la Fecha al sistema Linux
- Cambiar la hora en Linux con Chrony
- Como instalar, implementar y configurar SPF en Linux para Postfix, CentOS, RHEL
- Instalar Servidor de Nombres de Dominio DNS en Linux
- Héctor Martin promete llevar Linux al chip M1
- autossh (1) - página de manual de Linux
- Listar la última columna con awk print
- Usando 'find' para buscar varias extensiones de archivos a la vez
- LinuxFx, para saltar sin tropezar de Windows a Linux y tener una transición amigable
- Bryan Lunduke explica porqué Linux apesta en 2020 (conferencias constructivas)
- Configuración de cárceles ssh chroot en Linux (chrooted ssh jails)
- Usuarios y dominios virtuales con Postfix, Courier, MySQL & SquirrelMail (CentOS
- Renombrar múltiples ficheros (quitar espacios, cambiar mayúsculas) a la vez en Linux
- "Es realmente difícil encontrar mantenedores": Linus Torvalds reflexiona sobre el futuro de Linux
- Cómo instalar PIP para administrar paquetes de Python en Linux
Comentarios
Suscripción de noticias RSS para comentarios de esta entrada.