Представь картину: команда DevSecOps потратила недели на внедрение системы мониторинга среды выполнения Falco в продакшен-кластер Kubernetes. Написаны десятки кастомных правил аудита системных вызовов, настроена пересылка алертов через Falcosidekick в корпоративный Slack и SIEM. В дашбордах тишина и покой, ни одного критического алерта за месяц.
Руководство довольно, но у опытного инженера внутри нарастает холодный скепсис: а система вообще работает? Что, если в сложном логическом выражении правила закралась банальная опечатка, и реальный злоумышленник прямо сейчас читает конфиги сервера, пока датчики молчат?
Проект с открытым исходным кодом Falco (выпускник фонда CNCF) решает эту проблему специализированным инструментом event-generator. Ранее мы обсуждали, как меняется общая безопасность репозиториев и эксплойты в современных средах. Сегодня разберем, как на практике построить синтетическое регрессионное тестирование правил Falco.
Зачем нужен генератор синтетических инцидентов
Главная задача event-generator — генерировать в контролируемой среде ровно те системные события и паттерны поведения, на которые должны реагировать правила Falco:
- Проверка работоспособности eBPF-проб и модуля ядра Linux;
- Верификация срабатывания цепочки доставки оповещений от ядра до SIEM;
- Регрессионное тестирование: гарантия того, что обновление правил Falco или версий компонентов не сломало существующие детекты.
Но у такой эмуляции есть обратная сторона: чтобы проверить алерт «попытка перезаписи бинарника в /bin», утилита действительно обязана попытаться модифицировать файлы в системном каталоге.
Именно поэтому разработчики категорически настаивают: запускать event-generator необходимо исключительно внутри изолированного контейнера Docker. Запуск бинарника напрямую на хостовой операционной системе без контейнеризации чреват повреждением системных конфигов и нарушением стабильности сервера.
Арсенал сценариев: от системных вызовов до Kubernetes API
Инструмент разделяет тестовые сценарии на три большие группы:
syscall(системные вызовы ядра Linux):- Чтение чувствительных файлов (
/etc/shadow,/etc/sudoers); - Попытка добавления публичного ключа в
~/.ssh/authorized_keys; - Побег из контейнера через системный вызов смены пространств имен
unshare; - Создание псевдоустройств в каталоге
/devили скрытых папок с точкой; - Запуск бинарных файлов из оперативной памяти (
memfd_createили/dev/shm); - Запуск сетевых сканеров портов и утилит сетевой разведки.
- Чтение чувствительных файлов (
k8saudit(аудит событий Kubernetes API):- Создание привилегированных подов со снятыми ограничениями безопасности;
- Назначение ClusterRole с опасными полными правами подстановки (
*); - Монтирование чувствительных путей хоста (
/var/run/docker.sock, корневой ФС); - Запуск подов в сетевом пространстве имен узла (
hostNetwork: true).
helper: вспомогательные сетевые службы для генерации клиент-серверного трафика.
# Непрерывный цикл эмуляции подозрительных системных вызовов в Docker
docker run -it --rm \
--name falco-event-tester \
falcosecurity/event-generator run syscall --loop
# Точечная проверка правила детекта побега из контейнера
docker run -it --rm \
falcosecurity/event-generator run syscall.ChangeNamespacePrivilegesViaUnshare
Декларативные сьюты: команда suite в версии v0.13
В свежем релизе утилиты v0.13 (согласованном с Falco версии 0.44.0+) появилась долгожданная команда suite.
Раньше все тестовые сценарии были жестко зашиты в исходный код утилиты на Go. Теперь инженеры могут описывать собственные тест-кейсы в декларативных YAML-файлах. Это позволяет подключить event-generator прямо в конвейер CI/CD: при любом изменении репозитория с правилами Falco автоматически поднимается тестовый кластер Kind, прогоняется набор сьютов и подтверждается наличие алертов.
# Эмуляция создания привилегированного пода в Kubernetes для проверки аудита API
event-generator run k8saudit.CreatePrivilegedPod
Никогда не запускайте event-generator с флагами широкого диапазона действий на рабочих production-узлах вне изолированного тестового пространства имен или отдельного сэндбокс-кластера, так как генерируемый шум может перегрузить аналитиков дежурной смены SOC.
Практический итог
Безопасность инфраструктуры строится на постоянном сомнении и проверке гипотез. Использование event-generator позволяет превратить аудит Falco из «черного ящика с надеждой» в измеримый, автоматически тестируемый инженерный контур, где каждое правило доказало свою эффективность на реальных синтетических атаках.
