
Linux-агент на основе eBPF, который обеспечивает соблюдение политик доступа на уровне исполняемых файлов в пространстве ядра, изолируя процессы и ограничивая доступ к файлам, сети и GPU через LSM-хуки.
Bomfather Agent — это агент на основе eBPF, который работает в пространстве ядра для блокировки действий на основе политики.
Мы создали этот агент, чтобы решить проблемы, которые у нас были с существующими решениями.
Эти пункты — наша путеводная звезда для всего проекта. Все функции и разработки призваны соответствовать этим пунктам.
Обратите внимание, что мы стараемся избегать использования кода, сгенерированного ИИ, в этом репозитории и не будем принимать PR, сгенерированные ИИ.
(Вот руководство о том, как включить LSM в вашей системе: https://docs.bomfather.dev/prerequisites)
Для сборки из исходного кода необходимо установить следующие инструменты:
go 1.26 or higher
make
clang
llvm
llvm-14
protobuf-compiler
git
В Debian/Ubuntu вы можете установить зависимости сборки, не относящиеся к Go, с помощью:
apt-get update \
&& apt-get install -y --no-install-recommends \
clang \
llvm \
llvm-14 \
protobuf-compiler \
&& rm -rf /var/lib/apt/lists/*
Затем соберите агент с помощью:
make
Для быстрого старта вы можете использовать следующую команду, чтобы запустить агент с политикой по умолчанию:
sudo ./agent run --config config.yaml
Это запустит агент с той политикой, которая определена в файле конфигурации.
Затем вы можете при желании использовать следующую команду, чтобы посмотреть статус агента:
sudo ./agent status --help
Команда status в первую очередь предназначена для чтения метрик Prometheus от агента.
Политика — это файл YAML, который определяет правила, применяемые агентом.
Конфигурация в основном состоит из двух разделов: policies и attributes. Раздел policies определяет, кому разрешён доступ к защищённому ресурсу. Раздел policies определяет, каким исполняемым файлам разрешён доступ к защищённым каталогам или IP-адресам. attributes определяют границы исполняемого файла, поэтому атрибут может заставить исполняемый файл подключаться только к одному IP-адресу и блокировать подключение к любому другому IP-адресу.
Существует множество способов создать политику, поэтому для каждой функции у нас есть отдельный раздел в документации, объясняющий, как создать политику для этой функции: https://docs.bomfather.dev/configuration-guide.
Но для быстрого старта вы можете использовать следующий файл политики:
policies:
- executable: "filepath = [absolute-path]/app/signer"
can_access_dirs:
- "[absolute-path]/secrets/keys : read"
is_allowed_to_access_ip:
- "kms.us-east-1.amazonaws.com:443"
attributes:
- path: "type = executable | filepath = [absolute-path]/app/signer"
can_only_access_ips:
- "kms.us-east-1.amazonaws.com:443"
Эта политика позволяет нам изолировать signer и гарантировать, что это единственный процесс в системе, который может получить доступ к данным.
В разделе policies мы определяем, что исполняемый файл signer — единственный процесс, которому разрешён доступ к каталогу /secrets/keys и IP-адресам, связанным с эндпоинтом AWS KMS.
В разделе attributes мы определяем, что исполняемому файлу signer разрешён доступ только к эндпоинту AWS KMS и никаким другим IP-адресам.
В этой относительно простой конфигурации нам удалось значительно усилить защиту нашего процесса signer (который в реальном мире мог бы быть частью более крупной системы) с помощью конфигурации длиной всего 10 строк.
В документации есть ещё пара примеров из реального мира: https://docs.bomfather.dev/examples/gpu.
При желании, если вы хотите экспортировать нарушения, которые обнаруживает агент, вы можете указать API-ключ, и агент будет отправлять нарушения на серверы Bomfather.
Но самое главное: ЭТО НЕ ОБЯЗАТЕЛЬНО, агент будет работать точно так же и без него. Никакие функции не отключаются, если вы не укажете API-ключ, и если API-ключ не указан, никакие данные любого рода не отправляются на серверы Bomfather.
Если вы всё же хотите использовать серверы Bomfather, пожалуйста, свяжитесь с нами по адресу [email protected].