Схема работы rootless Linux-песочницы Hajiz на Rust с изоляцией через namespaces, Landlock, seccomp-BPF и eBPF-аудит

Hajiz: rootless Linux-песочница на Rust — проверяйте скрипты без sudo

ИИ-инструменты 12 июля 2026 г.

В офисе DevOps‑специалисту нужно быстро проверить новый скрипт, который пришёл от подрядчика. Он не знает, безопасен ли он, и не хочет ставить его под root. Hajiz – это инструмент, который позволяет запустить любой бинарник в изолированной среде без привилегий. Это значит, что даже если скрипт будет пытаться изменить систему, он останется в пределах sandbox. Чтобы воспользоваться им, сначала проверьте, что ваше ядро поддерживает Landlock и cgroups v2.

Источник: Habr

Что репозиторий действительно даёт команде

Hajiz – это небольшая утилита, написанная на Rust, которая собирает несколько механизмов безопасности ядра в одну связную систему с моделью «default‑deny» (всё запрещено, только явно разрешённое).
Linux‑namespaces создают изолированные пространства имён (пользователь, монтирование, IPC, UTS, сеть).
Landlock ограничивает доступ к файловой системе и, начиная с ядра 6.7, к TCP‑портам.
seccomp‑BPF фильтрует системные вызовы, блокируя опасные.
eBPF‑аудит автоматически учит, какие syscalls нужны приложению, и генерирует политику.
cgroups v2* ограничивает ресурсы (память, CPU, PIDs).

Таким образом, Hajiz даёт полностью rootless sandbox, который не требует демона, setuid‑хелпера, kernel‑модуля и sudo.

Где он может вписаться в рабочий процесс

Если вы уже используете Docker, то Hajiz может стать более лёгким и прозрачным решением для отдельных задач. Docker требует root (или setuid‑пользователя) и запускает контейнеры через демона, что иногда усложняет аудит.
Docker – полнофункциональный контейнерный движок, но с более сложной конфигурацией и большим набором зависимостей.
bubblewrap – простая утилита, создающая sandbox через namespaces, но без автоматического аудита и ограничений TCP‑портов.
firejail* – похож на bubblewrap, но добавляет seccomp‑BPF и поддержку профилей.

Hajiz сочетает в себе простоту bubblewrap, расширенные возможности firejail и собственный механизм аудита, который учит, какие syscalls нужны приложению, и генерирует политику. Это делает его особенно полезным, когда нужно быстро проверить непроверенный бинарник без лишних настроек.

Как проверить без превращения в игрушку

  1. Проверьте ядро
  2. Landlock доступен с ядра 5.13.
  3. Ограничения TCP‑портов работают только с ядром ≥ 6.7.
  4. cgroups v2 должен быть включён (/sys/fs/cgroup).

bash uname -r grep -i landlock /boot/config-$(uname -r) cat /proc/cgroups | grep cgroup2

  1. Установите Rust (если ещё нет)
    bash curl https://sh.rustup.rs -sSf | sh source $HOME/.cargo/env
  2. Скачайте и соберите Hajiz
    bash git clone https://github.com/hag19/hajiz cd hajiz cargo build --release sudo mv target/release/hajiz /usr/local/bin/
  3. Запустите простейший тест
    bash hajiz --fs /usr:ro --fs /tmp:rw /usr/bin/python3 -c "print('Hello, sandbox!')"

Вы увидите вывод Hello, sandbox! и убедитесь, что скрипт не может изменить /usr.

  1. Проверьте сетевой режим
  2. --net none – полностью офлайн.
  3. --net loopback – доступ только к 127.0.0.1.
  4. --net full – доступ к хосту, но с ограничением портов через Landlock.

bash hajiz --net full --allow-connect-port 443 --allow-connect-port 80 \ /usr/bin/curl https://example.com

  1. Проверьте seccomp‑режимы
  2. --seccomp-hardening-allow – блокирует опасные syscalls, остальные разрешены.
  3. --seccomp-whitelist – явно разрешает только указанные syscalls.
  4. --seccomp-strict – разрешает только read, write, exit, sigreturn.

bash hajiz --seccomp-whitelist --allow-group io --allow-syscall getrandom \ /usr/bin/myapp

  1. Проверьте ограничения ресурсов
    bash hajiz --max-mem 512M --max-cpu 50 --max-pids 64 /usr/bin/myapp
  2. Проверьте аудит eBPF
    При первом запуске Hajiz будет записывать все syscalls, которые использует приложение, и генерировать политику. После завершения вы увидите файл policy.json (или аналогичный), который можно использовать для последующих запусков.

Что рисков проверить до внедрения

Риск Что проверить Как проверить
Низкая версия ядра Landlock и TCP‑порт‑ограничения uname -r и grep landlock
Отсутствие cgroups v2 Ограничения ресурсов cat /proc/cgroups
Отсутствие поддержки eBPF Аудит syscalls bpftool prog list
Отсутствие поддержки seccomp Фильтрация syscalls cat /proc/sys/kernel/seccomp
Отсутствие поддержки Landlock Ограничения файловой системы cat /proc/sys/kernel/landlock
Отсутствие поддержки TCP‑порт‑ограничений Ограничения портов cat /proc/sys/kernel/landlock
Небольшое сообщество Поддержка и обновления Проверить активность репозитория
Отсутствие коммерческой поддержки Риски при критических ошибках Оценить внутренние ресурсы поддержки

Если любой из пунктов не выполняется, то использование Hajiz может быть ограничено или потребовать доработки ядра.

Что решение читателя может сделать дальше

  1. Тестировать в дев‑окружении – запустите несколько типичных скриптов и убедитесь, что они работают и не выходят из sandbox.
  2. Сравнить с Docker – оцените, насколько проще и быстрее запускать Hajiz без необходимости поднятия контейнера.
  3. Оценить производительность – измерьте время запуска и потребление ресурсов.
  4. Определить сценарии применения – например, запуск CI‑скриптов, проверка сторонних бинарников, изоляция тестовых сервисов.
  5. Планировать интеграцию – добавить команду hajiz в CI‑pipeline, настроить правила Landlock и seccomp для конкретных задач.

Если после тестов вы убедитесь, что Hajiz удовлетворяет требованиям, можно перейти к пилотному внедрению в продакшн.

Источники

Дополнительные рекомендации по использованию

Для более глубокого понимания возможностей Hajiz рекомендуется изучить документацию в репозитории проекта. Там вы найдёте примеры конфигураций для различных сценариев, включая запуск веб-серверов, баз данных и других сервисов в изолированной среде. Также обратите внимание на раздел с часто задаваемыми вопросами, где описаны типичные проблемы и их решения.

Заключение

Hajiz представляет собой современный инструмент для создания изолированных сред выполнения, который сочетает в себе несколько механизмов безопасности ядра Linux. Благодаря своей лёгкости и отсутствию необходимости в привилегиях root, он может стать полезным дополнением к инструментарию DevOps-специалиста, особенно в сценариях, где требуется быстрая проверка непроверенного кода или изоляция отдельных процессов.

Что почитать дальше

Теги