Сегодня хочется поговорить о безопасности. Стоит только открыть какой-нибудь порт в интернет, вы тут же заметите, что вас уже сканируют на предмет общеизвестных уязвимостей. Защита серверов и веб-приложений становится приоритетом для каждого, кто управляет инфраструктурой. В этой статье я расскажу о трёх современных решениях, которые помогают обеспечить безопасность: CrowdSec, OpenAppSec и BunkerWeb. Все они работаю в Kubernetes и помогут защитить вашу домашнюю лабораторию.
🔍 CrowdSec — современный аналог Fail2Ban
CrowdSec — это бесплатный open-source инструмент для выявления и блокировки вредоносных IP-адресов на основе шаблонов их поведения. Он анализирует логи системных сервисов и при обнаружении подозрительной активности принимает меры, такие как блокировка IP-адреса или добавление его в глобальную базу данных репутации.
Как работает CrowdSec:
- Агент отслеживает логи системных сервисов, указанных в настройке
- Баунсеры (bouncers) — это отдельные программные компоненты, отвечающие за выполнение решений, принятых агентом. Например, блокировка IP-адреса
CrowdSec — это современный fail2ban, отличный выбор для тех, кто хочет не только защищаться, но и участвовать в глобальной сети противодействия угрозам.
🧠 OpenAppSec — WAF нового поколения от Check Point
OpenAppSec — это Web Application Firewall (WAF), использующий машинное обучение для защиты приложений от OWASP Top 10 и других атак без необходимости постоянного обучения или настройки сигнатур. (openappsec.io)
Преимущества:
- Защита без сигнатур. Использует ML-модель, адаптирующуюся к поведению пользователей.
- Интеграция с NGINX и Envoy. Легко внедряется в существующую инфраструктуру.
- Работа в Kubernetes. Поддерживает современные облачные среды.
- Интеграция с CrowdSec. Усиливает защиту за счёт дополнительных инструментов.
- Open-source и бесплатный. Доступен для широкого круга пользователей.
OpenAppSec делает ставку на интеллектуальную защиту: он не просто ищет "запрещённые шаблоны", а анализирует поведение в реальном времени.
🧱 BunkerWeb — безопасный веб-сервер и реверс-прокси
BunkerWeb — это веб-сервер и реверс-прокси с акцентом на безопасность из коробки. Он работает поверх популярных HTTP-серверов (NGINX, Apache) и автоматически включает защиту от распространённых угроз. (docs.bunkerweb.io)
Ключевые особенности:
- Поддержка OWASP Core Ruleset (через ModSecurity). Обеспечивает защиту от распространённых атак.
- Интеграция с CrowdSec. Усиливает защиту за счёт дополнительных инструментов.
- Автоматическая настройка. Упрощает процесс обеспечения безопасного соединения.
- Контроль запросов, rate limiting, защита от ботов. Предотвращает злоупотребления и атаки.
- Совместим с Docker, Kubernetes и стандартными серверами. Легко внедряется в различные среды.
BunkerWeb идеально подходит для DevOps и тех, кто хочет "поставил и забыл" в плане базовой безопасности.
📊 Сравнение решений
Решение | Основная задача | Подходит для... |
---|---|---|
CrowdSec | Анализ логов, защита от ботов | Серверов, API, SSH, DNS и т.д. |
OpenAppSec | WAF с ML-защитой | Веб-приложений, Kubernetes, API |
BunkerWeb | Реверс-прокси + WAF | Простых и безопасных развёртываний |
CrowdSec отлично подходит для любого сервиса, по логам которого можно определить наличие угроз. Но он не защитит от инъекций, XSS и прочих атак. Для этих целей лучше подходит OpenAppSec или BunkerWeb.
На практике, эти решения можно и нужно комбинировать: например, использовать BunkerWeb с интеграцией CrowdSec, аналогично OpenAppSec в Kubernetes-кластере для ML-защиты приложений с интеграцией CrowdSec.
🧪 Мой выбор: BunkerWeb + CrowdSec для домашней лаборатории
Для своей домашней лаборатории я выбрал связку BunkerWeb с интеграцией CrowdSec. Это решение обеспечивает надёжную защиту с минимальными усилиями по настройке и обслуживанию. BunkerWeb обеспечивает базовую защиту и удобный интерфейс, а CrowdSec добавляет слой интеллектуального анализа и блокировки вредоносных IP-адресов.
В моем случае CrowdSec используется только как глобальная база репутации, запросы с таких адресов сразу отклоняются, логи он никакие не читает.
OpenAppSec
OpenAppSec мне очень понравился, процесс выглядит так: OpenAppSec регистрируется как новый ingressClass, затем вы просто меняется класс для тех ресурсов, которые должны быть доступны из Интернет — и готово! Он полностью совместим и поддерживает имеющиеся аннотации. Я использовал web ui консоль, которую предоставляет продукт бесплатно. Создаете ресурсы, включаете режим обучения и модель начинает обучаться, периодически спрашивая вас о верности принятых решений, там же вы можете задавать свои правила. Как только модель обучилась — можно включать режим защиты. Интеграция с CrowdSec отбивает запросы с "плохих" IP сразу же без анализа.
Огромное преимущество ML модели в том, что WAF не содержит предопределнных сигнатур, модель обнаруживает даже самые новые угрозы в реальном времени.
Из минусов:
- Web UI очень медленно работает
- Поды постоянно потребляют около 0.3 VCPU, даже когда нет ни одного запроса
- Периодически падают контроллеры с ошибкой "Error: Watchdog exited abnormally", причину которой я так и не понял
- Периодически запросы, проходящие через ingress выполняются очень долго
Видимо подожду следующую версию, возможно там эти проблемы исправят. Я тестировал версию 1.1.25.
helm upgrade --install open-appsec ./open-appsec/open-appsec-k8s-nginx-ingress-1.1.25.tgz \
--kubeconfig ./kubeconfig \
--namespace appsec \
--create-namespace \
--values ./open-appsec/values.yaml
BunkerWeb
Знакомство с ним у меня не задалось. Мне вообще не очень нравится настройка через конфигурационные файлы. У BunkerWeb тоже есть интеграция с Kubernetes и я точно так же настроил его как отдельный ingressClass. Меняем класс на ресурсах, которые хотим защитить и затем срабаывает автоконфигурация, которая сама для вас создаст сервисы. Но создаст она их плохо. По умолчанию в BunkerWeb очень жесткие правила. Например, список разрешенных методов: GET|POST|HEAD. Хотите вебсокеты? Настраивайте отдельно. Rate limit — 2 запроса в секунду. Ах, нужно поменять? Иди конфигурируй. А если вы вдруг хотите настроить Authentik, то несколько часов жарких сражений вам обеспечены, потому как автоконфигурация не понимает стандарных аннотаций nginx-ingress.
Отлично работает плагин "Bad behavior". Он как раз предназначен для вот этих товарищей, которую пытаются перебирать адреса и искать уязвимости. Уже после нескольких попыток он отправит такой IP в бан.
Также рекомендую вот эту веб-админку оставить только во внутренней сети, так вы сможете сами себя разбанить.
Но да, если настроено все как нужно, то решение действительно класса "настроил и забыл". Пока у вас не появится новый сервис конечно. После настройки работает как нужно и проблем у меня с ним нет.
helm upgrade bunkerweb bunkerweb/bunkerweb \
--install \
--create-namespace \
--kubeconfig ./kubeconfig \
--namespace bunkerweb \
--version 0.0.7 \
--values ./bunkerweb/values.yaml
🧾 Заключение
Современные угрозы требуют современных решений. Open-source проекты вроде CrowdSec, OpenAppSec и BunkerWeb дают нам инструменты для защиты инфраструктуры без денежных затрат и сложных настроек.
Если у вас есть открытые порты в Интернет и вы всё ещё полагаетесь на удачу — самое время пересмотреть свою стратегию безопасности.