La cárcel mecanismo es una implementación de FreeBSD 's virtualización a nivel de sistema operativo que permite a los administradores del sistema a una partición FreeBSD derivada de sistema de ordenador en varios mini-sistemas independientes llamadas cárceles , los cuales comparten el mismo núcleo, con muy poca sobrecarga [1] . Se implementa a través de una llamada al sistema, jail (2), [2] así como una utilidad de usuario, jail (8), [3] más, dependiendo del sistema, una serie de otras utilidades. La funcionalidad fue comprometida en FreeBSD en 1999 por Poul-Henning Kampdespués de un período de uso de producción por parte de un proveedor de alojamiento, y se lanzó por primera vez con FreeBSD 4.0, por lo que es compatible con varios descendientes de FreeBSD, incluido DragonFly BSD , hasta el día de hoy.
La necesidad de las cárceles de FreeBSD provino del deseo de un pequeño proveedor de alojamiento de entorno compartido (el propietario de R&D Associates, Inc., Derrick T. Woolworth) de establecer una separación clara y clara entre sus propios servicios y los de sus clientes. principalmente por seguridad y facilidad de administración ( cárcel (8) ). En lugar de agregar una nueva capa de opciones de configuración detalladas, la solución adoptada por Poul-Henning Kamp fue compartimentar el sistema, tanto sus archivos como sus recursos, de tal manera que solo las personas adecuadas tengan acceso a los compartimentos correctos. . [4]
Historia
Las cárceles se introdujeron por primera vez en FreeBSD versión 4.0, que se lanzó el 14 de marzo de 2000[5] La mayor parte de la funcionalidad original es compatible con DragonFly, y también se han adaptado varias de las nuevas características.
.Metas
Las cárceles de FreeBSD apuntan principalmente a tres objetivos:
- Virtualización: cada cárcel es un entorno virtual que se ejecuta en la máquina host con sus propios archivos, procesos, cuentas de usuario y superusuario . Desde dentro de un proceso encarcelado, el entorno es casi indistinguible de un sistema real.
- Seguridad: Cada cárcel está sellada de las demás, lo que proporciona un nivel adicional de seguridad.
- Facilidad de delegación: el alcance limitado de una cárcel permite a los administradores del sistema delegar varias tareas que requieren acceso de superusuario sin entregar un control completo sobre el sistema.
A diferencia de chroot jail , que restringe los procesos a una vista particular del sistema de archivos , el mecanismo de jail de FreeBSD restringe las actividades de un proceso en una jail con respecto al resto del sistema. En efecto, los procesos encarcelados están aislados . Están vinculados a direcciones IP específicas y un proceso encarcelado no puede acceder a desvíos o enrutamiento . Los sockets sin formato también están deshabilitados de forma predeterminada, pero se pueden habilitar configurando la opción security.jail.allow_raw_sockets
sysctl . Además, la interacción entre procesos que no se ejecutan en la misma cárcel está restringida.
La utilidad jail (8) y La llamada al sistema jail (2) apareció por primera vez en FreeBSD 4.0 . Nuevas utilidades (por ejemplo jls (8) para enumerar las cárceles) y llamadas al sistema (por ejemplo jail_attach (2) para adjuntar un nuevo proceso a una cárcel) que hacen que la gestión de la cárcel sea mucho más fácil se agregaron en FreeBSD 5.1. El subsistema de la cárcel recibió más actualizaciones significativas con FreeBSD 7.2, incluido el soporte para múltiples direcciones IPv4 e IPv6 por cárcel y el soporte para vincular cárceles a CPU específicas.
Virtualización
Con jail es posible crear varias máquinas virtuales , cada una con su propio conjunto de utilidades instaladas y su propia configuración. Esto lo convierte en una forma segura de probar el software. Por ejemplo, es posible ejecutar diferentes versiones o probar diferentes configuraciones de un paquete de servidor web en diferentes cárceles. Y dado que la cárcel se limita a un ámbito estrecho, los efectos de una configuración incorrecta o error (incluso si lo hace el superusuario en la cárcel ) no ponen en peligro el resto de la integridad del sistema. Dado que en realidad no se ha modificado nada fuera de la cárcel, los "cambios" se pueden descartar eliminando la copia de la cárcel del árbol de directorios.
La virtualización es valiosa para los proveedores de servicios que desean ofrecer a sus usuarios la capacidad de tener configuraciones personalizadas y, sin embargo, mantener el sistema en general fácil de mantener. Por ejemplo, dos clientes diferentes podrían necesitar diferentes versiones del mismo software. Sin cárceles, configurar múltiples versiones de software en diferentes directorios y garantizar que no se invadan entre sí no siempre es posible o fácil de mantener (por ejemplo, XFree86 es notoriamente difícil de mover). Las cárceles, por otro lado, permiten que los paquetes de software vean el sistema de manera egoísta, como si cada paquete tuviera la máquina para sí mismo. Las cárceles también pueden tener sus propios superusuarios encarcelados e independientes.
Sin embargo, la cárcel de FreeBSD no logra una verdadera virtualización; no permite que las máquinas virtuales ejecuten versiones de kernel diferentes a las del sistema base. Todos los servidores virtuales comparten el mismo kernel y, por lo tanto, exponen los mismos errores y posibles agujeros de seguridad. No hay soporte para la agrupación en clústeres o la migración de procesos , por lo que el kernel host y la computadora host siguen siendo un punto único de falla para todos los servidores virtuales. Es posible utilizar jails para probar de forma segura software nuevo, pero no kernels nuevos.
Seguridad
Las cárceles de FreeBSD son una forma eficaz de aumentar la seguridad de un servidor debido a la separación entre el entorno encerrado y el resto del sistema (las otras cárceles y el sistema base).
Por ejemplo, en un sistema no encarcelado, un servidor web que se ejecuta como usuario www que introduce un PHP - incluyen la vulnerabilidad pondría en peligro todo el sistema: el atacante tendría los derechos del usuario www, que normalmente puede modificar archivos en el servidor web, deambular por el árbol de directorios y recopilar información, como la lista completa de usuarios, el shell y el directorio de inicio de / etc / passwd .
Pero si el servidor web está encarcelado, el alcance del usuario www se limita a la cárcel, que a su vez puede ser lo suficientemente minimalista como para no revelar mucho. Incluso si el atacante obtuvo acceso a la cuenta de superusuario de la cárcel, solo podría modificar esa cárcel y no todo el sistema.
Las cárceles de FreeBSD están limitadas de las siguientes formas:
- Los procesos encarcelados no pueden interactuar con procesos en una cárcel diferente o en el host principal. Por ejemplo, elEl comando ps solo mostrará los procesos que se ejecutan en la cárcel.
- Está prohibido modificar el kernel en ejecución mediante el acceso directo y la carga de módulos. Está prohibido modificar la mayoría de sysctls y el nivel de seguridad .
- Está prohibido modificar la configuración de la red, incluidas las interfaces, la interfaz o las direcciones IP y la tabla de enrutamiento . También se prohíbe el acceso a tomas de desvío y enrutamiento. Además, los sockets sin procesar están deshabilitados de forma predeterminada. Una cárcel está vinculada solo a direcciones IP específicas y las reglas del firewall no se pueden cambiar. Con la introducción de VNET (pila de red virtual), las cárceles son libres de modificar su configuración de red (incluidas interfaces, direcciones IP, etc.), siempre que la vnet esté habilitada para la cárcel.
- Está prohibido montar y desmontar sistemas de archivos. Las cárceles no pueden acceder a los archivos que se encuentran por encima de su directorio raíz (es decir, una cárcel tiene un chroot'ed).
- Los procesos encarcelados no pueden crear nodos de dispositivos.
Ver también
Referencias
- ↑ David Chisnall (15 de junio de 2007). "DragonFly BSD: ¿UNIX para clústeres?" . InformIT . Prentice Hall Professional . Consultado el 6 de marzo de 2019 .
- ^ "jail (2) - crea y administra jaulas del sistema" . FreeBSD , DragonFly BSD . Resumen de laicos .
- ^ "jail (8) - administrar las jaulas del sistema" . FreeBSD , DragonFly BSD . Resumen de laicos .
- ^ Kamp, Poul-Henning; NM Watson, Robert (2000). "Cárceles: confinando la raíz omnipotente" (PDF) . PHKs Bikeshed . Consultado el 15 de junio de 2016 .
- ^ "Anuncio de FreeBSD 4.0" . Proyecto FreeBSD. 14 de marzo de 2000 . Consultado el 3 de octubre de 2019 .
enlaces externos
- Cárceles de Poul-Henning Kamp
- página de manual de jail (8)
- Cárceles de FreeBSD en ONLamp
- Cárcel en FreeBSD 6
- Manual de FreeBSD: cárceles
- Página de manual de VNET