Создайте безопасное окружение с Landrun: простая в использовании песочница Linux без необходимости в root-доступе

Представляем вам открытый проект Landrun — это легковесная песочница для Linux с использованием Landlock, которая не требует прав суперпользователя. Исходный код разработан Армином Ранджбаром на языках Go и Shell и размещён на GitHub под лицензией MIT.

Landlock — это встроенный в ядро Linux модуль обеспечения безопасности (LSM), который позволяет непривилегированным процессам самим себя ограничивать (входить в песочницу). Эта функция доступна в ядре начиная с версии 5.13, однако её API недостаточно удобен для прямого использования.

«Мне всегда было неприятно запускать случайные бинарные файлы из сети без должного контроля over тем, к каким ресурсам они могут получить доступ. Я создал Landrun — инструмент командной строки на Go, который оборачивает Linux Landlock (5.13+) для изоляции любого процесса без необходимости в root-доступе, контейнерах или seccomp. Это что-то вроде firejail, но с безопасностью на уровне ядра, минимальными накладными расходами и встроенной функциональностью. Поддерживает точный доступ к файлам (ro/rw/exec) и ограничения для TCP-портов (6.7+). Никаких демонов, никаких YAML-файлов — только флаги», — прокомментировал автор проекта.

Landrun создан для удобного помещения любой команды в песочницу с возможностью управления доступом к файловой системе и сетевой активностью. Никаких прав суперпользователя. Без контейнеров. Без сложных конфигураций SELinux/AppArmor. Проект включает в себя функции Landlock версии 5 (доступ к файлам и ограничения TCP).

Ключевые возможности Landrun:

– безопасность на уровне ядра с использованием Landlock;
– быстрое и простое выполнение;
– детальный контроль доступа к каталогам и файлам;
– поддержка чтения и записи данных;
– разрешения на выполнение для конкретных путей;
– управление сетевым доступом к TCP (привязка и соединение).

Для работы Landrun необходимы следующие требования:

– ядро Linux версии 5.13 или выше с активированным Landlock;
– ядро Linux версии 6.7 или выше для сетевых ограничений (TCP-привязка/подключение);
– Go версии 1.18 или выше для компиляции из исходного кода.