Hay muchos casos en los que puede desear aislar ciertas aplicaciones, usuarios o entornos dentro de un sistema Linux. Los diferentes sistemas operativos tienen diferentes métodos para lograr el aislamiento y, en Linux, una forma clásica es a través de un chroot
. entorno.
En esta guía, le mostraremos paso a paso cómo configurar un entorno aislado usando chroot para crear una barrera entre su sistema operativo normal y un entorno contenido. Esto es principalmente útil para fines de prueba. Te enseñaremos los pasos en una instancia de Ubuntu 14.04 VPS.
La mayoría de los administradores de sistemas se beneficiarán de saber cómo lograr un entorno chroot rápido y fácil y es una habilidad valiosa para tener.
El entorno chroot
Un entorno chroot es una llamada al sistema operativo que cambiará la ubicación raíz temporalmente a una nueva carpeta. Por lo general, la concepción del sistema operativo del directorio raíz es la raíz real ubicada en "/
". Sin embargo, con chroot
, puede especificar otro directorio para que sirva como directorio de nivel superior durante la duración de un chroot.
Cualquier aplicación que se ejecute desde dentro del chroot
no podrá ver el resto del sistema operativo en principio.
Ventajas del entorno Chroot
- Test applications without the risk of compromising the entire host system.
- From the security point of view, whatever happens in the chroot environment won't affect the host system (not even under root user).
- A different operating system running in the same hardware.
Por ejemplo, le permite crear, instalar y probar software en un entorno separado de su sistema operativo normal. También podría usarse como un método para ejecutar aplicaciones de 32 bits en un entorno de 64 bits. t.
Pero si bien los entornos chroot sin duda generarán un trabajo adicional para un usuario sin privilegios, deben considerarse una función de refuerzo en lugar de una función de seguridad, lo que significa que intentan reducir la cantidad de vectores de ataque en lugar de crear una solución completa. Si necesita un aislamiento total, considere una solución más completa, como contenedores Linux, Docker, vservers, etc.
Debootstrap y Schroot
Los paquetes necesarios para configurar el entorno chroot son debootstrap y schroot , que están disponibles en el repositorio de ubuntu. El comando schroot se usa para configurar el entorno chroot.
Reinicio le permite instalar una nueva copia nueva de cualquier sistema Debian (o basado en Debian) desde un repositorio en un directorio con todos los comandos básicos y archivos binarios necesarios para ejecutar una instancia básica del sistema operativo.
El schroot permite el acceso a chroots para usuarios normales utilizando el mismo mecanismo, pero con verificación de permisos y permitiendo una configuración automatizada adicional del entorno chroot, como montar sistemas de archivos adicionales y otras tareas de configuración.
Estos son los pasos para implementar esta funcionalidad en Ubuntu 14.04 LTS:
1. Instalando los Paquetes
En primer lugar, instalaremos debootstrap y schroot en nuestro host Ubuntu 14.04 LTS.
$ sudo apt-get install debootstrap
$ sudo apt-get install schroot
2. Configuración de Schroot
Ahora que tenemos las herramientas apropiadas, solo necesitamos especificar un directorio que queremos usar como nuestro entorno chroot. Crearemos un directorio llamado linoxide en nuestro directorio raíz para configurar chroot allí:
sudo mkdir /linoxide
Tenemos que configurar schroot para satisfacer nuestras necesidades en el archivo de configuración. Modificaremos el schroot
archivo de configuración con la información que necesitamos para configurarlo.
sudo nano /etc/schroot/schroot.conf
Estamos en un sistema Ubuntu 14.04 LTS (Trusty Tahr) actualmente, pero digamos que queremos probar algunos paquetes disponibles en Ubuntu 13.10, cuyo nombre en código es "Saucy Salamander". Podemos hacerlo creando una entrada que se vea así:
[saucy]
description=Ubuntu Saucy
location=/linoxide
priority=3
users=arun
root-groups=root
Modifique los valores de los parámetros de configuración en el ejemplo anterior para que se ajusten a su sistema:
3. Instalación de Ubuntu de 32 bits con debootstrap
Debootstrap descarga e instala un sistema operativo mínimo dentro de su entorno chroot . Puede instalar cualquier distribución basada en Debian de su elección, siempre que tenga un repositorio disponible.
Arriba, colocamos el entorno chroot en el directorio /linoxide y este es el directorio raíz del entorno chroot. Entonces necesitaremos ejecutar debootstrap dentro de ese directorio que ya hemos creado:
cd /linoxide
sudo debootstrap --variant=buildd --arch amd64 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/ sudo chroot /linoxide /debootstrap/debootstrap --second-stage
Puede reemplazar amd64 en --arch como i386 u otro sistema operativo bit que desee configurar disponible en el repositorio. Puede reemplazar el espejo http://archive.ubuntu.com/ubuntu/ anterior como el más cercano, puede obtener el más cercano en la página oficial de Ubuntu Mirror.
sudo debootstrap --variant=buildd --foreign --arch i386 saucy /linoxide/ http://archive.ubuntu.com/ubuntu/
Toma algún tiempo (dependiendo de su ancho de banda) descargar, instalar y configurar el sistema completo. Se necesitan alrededor de 500 MB para una instalación mínima.
4. Finalizando el entorno chroot
Después de instalar el sistema, necesitaremos hacer algunas configuraciones finales para asegurarnos de que el sistema funcione correctamente. Primero, queremos asegurarnos de que nuestro host fstab
es consciente de algunos pseudosistemas en nuestro huésped.
sudo nano /etc/fstab
Agregue las siguientes líneas como estas en la parte inferior de su fstab:
proc /linoxide/proc proc defaults 0 0
sysfs /linoxide/sys sysfs defaults 0 0
Guarde y cierre el archivo.
Ahora, necesitaremos montar estos sistemas de archivos dentro de nuestro invitado:
$ sudo mount proc /linoxide/proc -t proc
$ sudo mount sysfs /linoxide/sys -t sysfs
También querremos copiar nuestro /etc/hosts
archivo para que tengamos acceso a la información de red correcta:
$ sudo cp /etc/hosts /linoxide/etc/hosts
Finalmente, puede enumerar los entornos chroot disponibles usando el comando schroot.
$ schroot -l
Podemos ingresar al entorno chroot a través de un comando como este:
$ sudo chroot /linoxide/ /bin/bash
You can test the chroot environment by checking the version of distributions installed.
# lsb_release -a
# uname -a
Para finalizar este tutorial, para ejecutar una aplicación gráfica desde el chroot, debe exportar la variable de entorno DISPLAY.
$ DISPLAY=:0.0 ./apps
Aquí, hemos instalado con éxito Ubuntu Chrooted 13.10 (Saucy Salamander) en su host Ubuntu 14.04 LTS (Trusty Tahr).
Puede salir del entorno chroot con éxito ejecutando los siguientes comandos:
# exit
Luego, necesitamos desmontar nuestros sistemas de archivos proc y sys:
$ sudo umount /test/proc
$ sudo umount /test/sys