FreeBSD Jail ( eng. jail - "prisión") es un mecanismo de virtualización en el sistema FreeBSD que le permite crear varios FreeBSD que se ejecutan de forma independiente en el mismo núcleo del sistema operativo, pero configurados de forma completamente independiente con un conjunto independiente de aplicaciones instaladas dentro de un sistema operativo FreeBSD. sistema.
FreeBSD Jail se basa en la llamada al sistema chroot(2) , en la que para el proceso actual y todos sus descendientes, el directorio raíz se transfiere a una ubicación específica en el sistema de archivos . Esta ubicación se convierte en el directorio raíz del proceso. Por lo tanto, un proceso de espacio aislado solo puede acceder al árbol de directorios subyacente.
Sin embargo, FreeBSD Jail también tiene soporte a nivel de kernel , lo que le permite restringir el acceso a la red, la memoria compartida, las variables del kernel sysctl y limitar la visibilidad de los procesos fuera de la cárcel.
Un proceso Jailed solo puede acceder a ciertas direcciones IP del sistema operativo y usar un nombre de host específico . Tal proceso se denomina "proceso aislado" o "proceso encarcelado".
Por lo tanto, se crea una "jaula" segura, dentro de la cual se puede ejecutar incluso software potencialmente peligroso, que no puede dañar el sistema principal ni otras "jaulas" de ninguna manera. Antes de la versión 9.0-RELEASE, FreeBSD Jail no tenía controles sobre el uso de recursos (al igual que, por ejemplo, OpenVZ en Linux ). Desde la versión 9.0-RELEASE, se han introducido mecanismos similares a través de la utilidad rctl(8) y el marco RACCT .
A nivel sysctl del sistema se configuran los privilegios de los procesos Jailed:
identificador de sistema | Funcionalidad controlada |
---|---|
seguridad.jail.chflags_allowed | Capacidad para cambiar las banderas de archivos del sistema |
seguridad.jail.allow_raw_sockets | Capacidad para crear sockets de bajo nivel |
seguridad.jail.sysvipc_allowed | Habilidad para usar System V IPC |
security.jail.set_hostname_permitido | La capacidad de configurar su propio nombre de host dentro de los procesos Jailed (por lo general, el nombre de host se establece al llamar a la cárcel) |
seguridad.jail.enforce_statfs | Capacidad para ver todos los sistemas de archivos montados dentro de los procesos Jailed |
seguridad.jail.socket_unixiproute_only | Restricción en la capacidad de crear sockets UNIX/IPv4/route |
security.jail.list | Lista de JAIL en ejecución |
El uso más común de FreeBSD Jail es crear máquinas virtuales aisladas y seguras. En este caso, jail(8) ejecuta el script de inicialización /etc/rc , que inicia el lanzamiento de un sistema virtual aislado separado. Incluso en el caso de que se produzca el pirateo más destructivo de un sistema virtual y se deshabilite su funcionalidad, el resto de los sistemas virtuales en ejecución no se verán afectados.
En la práctica de los proveedores de hospedaje , el mecanismo de cárcel se puede usar para crear sistemas administrados en servidores dedicados . En esta opción se le da acceso al cliente únicamente a la cárcel, y al personal técnico de la empresa proveedora al sistema maestro.
FreeBSD Jail, cuando se usa como una máquina virtual para ejecutar software arbitrario, requerirá una emulación completa del entorno del sistema, que incluye:
Cada máquina virtual en el sistema host (antes de FreeBSD 7.2) requerirá necesariamente una única dirección IP para ejecutarse. También es posible usar la misma dirección IP para varias máquinas, pero los servicios en estas máquinas virtuales no deben usar los mismos puertos TCP/UDP .
A partir de FreeBSD 8.0, se pueden asignar varias direcciones IP a cada máquina virtual.
Para obtener más información sobre la instalación y el uso de FreeBSD Jail, consulte las páginas man de jail(8) o la documentación oficial. [una]
add path 'bpf*' unhide
Proyecto FreeBSD | ||
---|---|---|
Gente |
| |
Proyectos derivados |
| |
Otros proyectos |
|