Сегодня хочется поговорить о безопасности. Стоит только открыть какой-нибудь порт в интернет, вы тут же заметите, что вас уже сканируют на предмет общеизвестных уязвимостей. Защита серверов и веб-приложений становится приоритетом для каждого, кто управляет инфраструктурой. В этой статье я расскажу о трёх современных решениях, которые помогают обеспечить безопасность: 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 и т.д.
OpenAppSecWAF с 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 дают нам инструменты для защиты инфраструктуры без денежных затрат и сложных настроек.

Если у вас есть открытые порты в Интернет и вы всё ещё полагаетесь на удачу — самое время пересмотреть свою стратегию безопасности.

Источники

BunkerWeb - the open-source Web Application Firewall (WAF)
Fool attackers and protect your web services with BunkerWeb, the open-source and next-gen Web Application Firewall (WAF).
open-appsec | Automatic Open Source WAF & API Security
Open-Source Web Application Firewall & API Security using Machine Learning. WAF alternative for OWASP-Top-10 and Zero Day attacks. Kubernetes, NGINX, Envoy, Kong, Ambassador.
Curated Threat Intelligence Powered by the Crowd | CrowdSec
We turn crowd-powered intelligence into tactical intelligence with actionable blocklists to maximize your SOC efficiency and reduce your costs.