El proyecto Landrun ha comenzado a desarrollar un nuevo sistema para la ejecución aislada de aplicaciones individuales. Para el aislamiento se utiliza el módulo LSM del núcleo de Linux Landlock, que permite prescindir de la ejecución de operaciones privilegiadas al crear un entorno sandbox. En sus objetivos, Landrun es similar a la utilidad Firejail, pero se diferencia por su implementación más sencilla, su ligereza y la posibilidad de operar bajo un usuario no privilegiado sin necesidad de ser instalada con la bandera suid. El código del proyecto está escrito en Go y se distribuye bajo la licencia GPLv2.
El mecanismo Landlock permite a los programas no privilegiados restringir el uso de objetos del núcleo de Linux, como jerarquías de archivos, sockets de red e ioctl. A diferencia de los espacios de nombres y el filtrado de llamadas al sistema, el entorno aislado se forma mediante el núcleo de Linux como una capa adicional sobre los mecanismos existentes de control de acceso. Para interactuar con la subestructura de Landlock, la utilidad landrun utiliza la biblioteca go-landlock desarrollada por los creadores de LandLock.
Landrun permite disminuir el riesgo de compromiso del sistema principal al ejecutar programas no confiables o potencialmente vulnerables. Entre sus características se destaca el soporte para restricciones de acceso selectivas a nivel de directorios individuales, la vinculación de privilegios a rutas de archivos (permitiendo o prohibiendo la lectura, escritura y ejecución) y el control sobre la iniciación y recepción de conexiones TCP.
Por ejemplo, mediante Landrun se puede prohibir a un proceso ejecutar archivos ejecutables, permitir la escritura solo en un subdirectorio específico con datos, prohibir la creación de sockets de escucha para recibir conexiones de red y permitir el envío de solicitudes de red solo en puertos TCP específicos. En el caso más sencillo, para prohibir la escritura, la ejecución y las capacidades de red, se puede ejecutar el programa con el comando "landrun --ro /", y para aislar nginx se puede usar: landrun --rox /usr/bin --ro /lib,/lib64,/var/www --rwx /var/log --bind-tcp 80,443 /usr/bin/nginx
En los planes futuros se menciona una gestión de acceso ampliada al sistema de archivos, soporte para UDP y gestión de recursos de procesos. Para restringir el acceso a nivel de sistema de archivos se requiere al menos el núcleo de Linux 5.13, y para las restricciones de red, el 6.8.
Adicionalmente, se puede señalar que en la base de código de Firejail ya se han aceptado cambios que permiten utilizar la subsistema del núcleo Landlock para la aislamiento sin el bit suid y el aumento de privilegios, pero la versión con este soporte aún no se ha publicado.
Fuente: opennet.ru
