Se ha publicado la versión 0.9.72 del proyecto Firejail, que desarrolla un sistema para la ejecución aislada de aplicaciones gráficas, de consola y servidor, permitiendo minimizar el riesgo de comprometer el sistema principal al ejecutar programas que no son de confianza o potencialmente vulnerables. El programa está escrito en C, se distribuye bajo la licencia GPLv2 y puede funcionar en cualquier distribución de Linux con un núcleo superior a 3.0. Se han preparado paquetes listos de Firejail en formatos deb (Debian, Ubuntu) y rpm (CentOS, Fedora).
Para la aislamiento en Firejail se utilizan espacios de nombres (namespaces), AppArmor y filtrado de llamadas al sistema (seccomp-bpf) en Linux. Una vez que se inicia, el programa y todos sus procesos hijos utilizan representaciones separadas de los recursos del núcleo, como la pila de red, la tabla de procesos y los puntos de montaje. Las aplicaciones que dependen entre sí se pueden agrupar en un solo sandbox. Si se desea, Firejail también se puede aplicar para ejecutar contenedores Docker, LXC y OpenVZ.
A diferencia de las herramientas de aislamiento por contenedores, Firejail es extremadamente simple de configurar y no requiere la preparación de una imagen del sistema: la composición del contenedor se forma sobre la marcha en función del contenido del sistema de archivos actual y se elimina después de que la aplicación ha finalizado. Se proporcionan herramientas flexibles para establecer reglas de acceso al sistema de archivos, pudiendo definir qué archivos y directorios tienen permitido o prohibido el acceso, conectar sistemas de archivos temporales (tmpfs) para datos, restringir el acceso a archivos o directorios solo de lectura, y combinar directorios mediante bind-mount y overlayfs.
Se han preparado perfiles de aislamiento de llamadas al sistema para un gran número de aplicaciones populares, incluyendo Firefox, Chromium, VLC y Transmission. Para obtener los privilegios necesarios para configurar un entorno aislado, el archivo ejecutable de Firejail se instala con la bandera SUID root (después de la inicialización, los privilegios se restablecen). Para ejecutar el programa en modo de aislamiento, basta con indicar el nombre de la aplicación como argumento de la utilidad Firejail, por ejemplo, "firejail firefox" o "sudo firejail /etc/init.d/nginx start".
En esta nueva versión:
- Se añadió un filtro seccomp para las llamadas al sistema, que bloquea la creación de espacios de nombres (se añadió la opción "--restrict-namespaces" para habilitarlo). Se actualizaron las tablas de llamadas al sistema y el grupo seccomp.
- Se mejoró el modo force-nonewprivs (NO_NEW_PRIVS), que prohíbe la obtención de privilegios adicionales en nuevos procesos.
- Se añadió la posibilidad de usar perfiles propios de AppArmor (se sugirió la opción "--apparmor" para conectarlos).
- En el sistema de seguimiento del tráfico de red nettrace, que muestra información sobre IP y la intensidad del tráfico desde cada dirección, se implementó el soporte para ICMP y se ofrecieron las opciones "--dnstrace", "--icmptrace" y "--snitrace".
- Se eliminaron los comandos --cgroup y --shell (por defecto se aplica --shell=none). Por defecto, se ha detenido la construcción de firetunnel. Se han desactivado las configuraciones chroot, private-lib y tracelog en /etc/firejail/firejail.config. Se ha dejado de dar soporte a grsecurity.
Fuente: opennet.ru
