Вспомни, как обычно устроена безопасность в Linux: ставим условный Falco или классический auditd, собираем терабайты логов системных вызовов и настраиваем алерты в Telegram. А потом злоумышленник за доли секунды выполняет вредоносный скрипт, выкачивает дампы баз данных и подчищает за собой следы. Ты получаешь красивый алерт о том, что сервер успешно взломан полчаса назад.
Разработчик Эрен Ари (Eren Ari) предложил принципиально иной подход в открытом проекте AegisBPF. Вместо пассивного наблюдения в пользовательском пространстве агент работает прямо внутри ядра Linux через подсистему Linux Security Modules (LSM) и технологию eBPF, блокируя подозрительные действия до их завершения.
Разница философий: детекция против превентивного перехвата
Традиционные HIDS-системы работают по принципу детектирования: процесс делает системный вызов, ядро его выполняет, а копия события отправляется демону аудита. Если демон завис или очередь событий переполнилась, атака проходит незамеченной.
AegisBPF исповедует подход Enforcement-First. Программы eBPF встраиваются непосредственно в 15 хуков LSM ядра:
- Файловые операции:
file_open,inode_permission,inode_copy_up,bprm_check_security. - Сетевые сокеты: полный цикл соединений от
socket_connectиsocket_bindдоsocket_sendmsgиsocket_recvmsg.
Когда неавторизованный бинарник пытается открыть защищенный файл или инициировать исходящее TCP-соединение, хук LSM синхронно возвращает ошибку -EPERM. Вызов прерывается прямо в ядре, не доходя до диска или сетевого интерфейса.
Защита от побега из контейнеров и подмены путей
В контейнерных средах Kubernetes злоумышленники часто эксплуатируют уязвимости OverlayFS: подменяют симлинки (TOCTOU-атаки) или модифицируют файлы нижнего слоя.
AegisBPF решает эту проблему элегантно:
- Перехват copy-up: хук
inode_copy_upфиксирует момент, когда файл из нижнего read-only слоя контейнера продвигается в верхний слой записи, и автоматически переносит правило блокировки на новый номерinode. - Проверка IMA-хэшей: на ядрах 6.1+ функция
bpf_ima_file_hash()сверяет криптографический SHA-256 хэш исполняемого файла при вызовеbprm_check_security. Даже если вредонос переименовали в/usr/bin/python, запуск будет мгновенно заблокирован.
Для работы AegisBPF требуется ядро Linux 5.8+ с включенным BPF LSM (CONFIG_BPF_LSM=y). Проверить статус подсистемы на сервере можно командой cat /sys/kernel/security/lsm | grep bpf.
Цена вопроса: замеры накладных расходов
Главный страх любого сисадмина перед безопасниками — «вы уроните производительность продакшена». В AegisBPF накладные расходы сведены к минимуму:
- Файловые замеры показывают 1.68 мкс на операцию (на чистой системе без агента — 1.69 мкс, то есть в пределах статистической погрешности).
- Сетевой оверхед составляет всего +6.9% при мониторинге всех шести фаз жизни сокета.
Для сравнения: традиционные решения, копирующие контекст каждого системного вызова в userspace через кольцевой буфер, дают оверхед до 30-40% на интенсивном вводе-выводе.
Практика: запуск и декларативные политики
Управление агентом происходит через CLI-утилиту, написанную на C++20:
# Запуск агента в режиме превентивной блокировки с отправкой SIGTERM процессу
sudo aegisbpf run --enforce --enforce-signal=term
# Включение эскалации до SIGKILL при регулярных повторных попытках нарушения
sudo aegisbpf run --enforce --enforce-signal=kill \
--kill-escalation-threshold=8 \
--kill-escalation-window-seconds=60
# Оперативная блокировка подозрительного файла без перезапуска
sudo aegisbpf block add /usr/bin/xmrig
Правила безопасности описываются в конфигурационном файле /etc/aegisbpf/policy.conf:
version=6
# Запрет запуска по путям
[deny_path]
/usr/bin/xmrig
/tmp/miner.sh
# Запрет доступа по номерам inode (устойчиво к переименованиям)
[deny_inode]
259:12345
# Доверенные группы cgroups v2
[allow_cgroup]
/sys/fs/cgroup/system.slice
# Запрет сетевых подключений для изолированного контейнера
[cgroup_deny_port]
cgid:123456 443:tcp:egress
# Разрешение запуска только бинарников с доверенным хэшем SHA-256
[allow_binary_hash]
sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef
Применение политики происходит атомарно: sudo aegisbpf policy apply /etc/aegisbpf/policy.conf.
Перспективы проекта
Проект пока молод (активная разработка началась в 2026 году), и автор честно предупреждает: независимый внешний аудит кода запланирован ближе к релизу 1.0 GA. Но вектор очевиден: эпоха «постфактум-логирования» уходит в прошлое. Будущее защиты Linux-инфраструктуры — за превентивной фильтрацией на уровне хуков ядра.
