Контейнер в проде неожиданно начинает читать /etc/passwd, или кто-то запускает bash внутри пода, или процесс вдруг открывает сетевое соединение, которого раньше не было. Логи это зафиксируют, но через час, когда кто-то до них доберётся. К тому моменту уже поздно.
Falco — опенсорсный инструмент для runtime-безопасности. Он работает на уровне ядра Linux через eBPF, перехватывает системные вызовы и сравнивает их с набором правил.
Если правило срабатывает, Falco отправляет алерт куда вы настроили: в stdout, Slack, Kafka, syslog или любую из 50+ интеграций.
Правила пишутся на простом YAML-like синтаксисе. Вот пример встроенного правила, которое срабатывает, если кто-то запускает оболочку внутри контейнера:
- rule: Terminal shell in container
desc: A shell was spawned in a container
condition: >
spawned_process and container
and shell_procs and proc.tty != 0
output: >
A shell was spawned in a container
(user=%user.name container=%container.name
image=%container.image.repository shell=%proc.name)
priority: WARNING
Когда условие выполняется, Falco пишет что-то вроде:
WARNING A shell was spawned in a container
(user=root container=my-app image=nginx:latest shell=bash)
Что мониторит из коробки
Дефолтные правила покрывают типичные атаки и нарушения. Среди них: запись в системные директории вроде /etc или /usr, запуск привилегированных процессов внутри контейнеров, нестандартные сетевые соединения, изменения конфигурации Kubernetes, попытки читать чувствительные файлы.
Кроме системных вызовов Falco умеет работать с Kubernetes Audit Logs, AWS CloudTrail, GitHub Events и Okta через плагины. То есть вы можете мониторить не только то, что происходит внутри контейнера, но и то, кто и что делает в облаке.
➡️ Документация и quickstart
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
