Repolode
fabriziosalmi

fabriziosalmi/caddy-waf

Middleware Web Application Firewall для веб-сервера Caddy: правила на регулярных выражениях, фильтрация по IP/DNS/ASN/GeoIP, ограничение частоты запросов и блокировка Tor-узлов выхода.

Open source альтернатива:Cloudflare WAF

Звёзды
876
Форки
37
Открытые issues
1
Последний коммит
3 дня назад

Что это?

caddy-waf — HTTP-модуль для Caddy, написанный на Go. Он проверяет запросы и ответы по набору правил на регулярных выражениях. Каждому правилу назначается вес, а запрос блокируется, когда суммарный вес достигает заданного порога аномальности. Проверка выполняется в четыре этапа: заголовки запроса, тело запроса, заголовки ответа и тело ответа.

Помимо проверки по правилам, модуль применяет чёрные списки IP-адресов и CIDR-диапазонов, DNS-чёрные списки, блокировку по странам и ASN на основе MaxMind GeoLite2, а также периодически обновляемый список Tor-узлов выхода. Кроме того, он ограничивает частоту запросов для каждого IP с использованием скользящего окна и поддерживает необязательное сопоставление путей, пользовательские ответы при блокировке и JSON-эндпоинт метрик. Файлы правил и чёрных списков отслеживаются и перечитываются при изменении без перезапуска.

Модуль настраивается через Caddyfile или JSON. Его можно собрать с помощью xcaddy, установить командой caddy add-package или запустить из Docker-образа. Лицензия — AGPL-3.0.

Ключевые возможности

  • 01Механизм правил на регулярных выражениях, построенный на пакете RE2 для Go, с оценкой аномальности для каждого правила.
  • 02Проверка заголовков и тел запросов и ответов в четыре этапа.
  • 03Чёрные списки IP-адресов и CIDR-диапазонов, а также DNS-чёрные списки.
  • 04Блокировка по странам и ASN с использованием баз MaxMind GeoLite2.
  • 05Ограничение частоты запросов для каждого IP с помощью скользящего окна и необязательными шаблонами путей.
  • 06Блокировка Tor-узлов выхода и горячая перезагрузка файлов правил и чёрных списков.

Сценарии использования

  • Защита сайта на Caddy от распространённых веб-атак с помощью набора правил.
  • Блокировка трафика из определённых стран, от отдельных ASN, IP-диапазонов или Tor-узлов выхода.
  • Ограничение частоты запросов к эндпоинтам API на обратном прокси Caddy.
  • Экспорт метрик WAF для дашбордов Prometheus или Grafana.

Быстрый старт

  1. 1

    Установите модуль с помощью xcaddy

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
  2. 2

    Соберите Caddy с модулем caddy-waf

    xcaddy build --with github.com/fabriziosalmi/caddy-waf
  3. 3

    Убедитесь, что модуль WAF доступен

    ./caddy list-modules | grep waf

Что важно знать

  • Распространяется по лицензии AGPL-3.0 с требованием копилефта, которая может подойти не для всех вариантов развертывания.
  • Требуются Go 1.26.0 или новее и Caddy v2.11.x или новее.
  • Для дополнительных функций GeoIP нужен файл базы данных MaxMind GeoLite2.

Темы

Частые вопросы

Что такое caddy-waf?
Middleware Web Application Firewall для веб-сервера Caddy: правила на регулярных выражениях, фильтрация по IP/DNS/ASN/GeoIP, ограничение частоты запросов и блокировка Tor-узлов выхода. caddy-waf — HTTP-модуль для Caddy, написанный на Go. Он проверяет запросы и ответы по набору правил на регулярных выражениях. Каждому правилу назначается вес, а запрос блокируется, когда суммарный вес достигает заданного порога аномальности. Проверка выполняется в четыре этапа: заголовки запроса, тело запроса, заголовки ответа и тело ответа.
caddy-waf можно использовать бесплатно? Какая у него лицензия?
caddy-waf распространяется с открытым исходным кодом под лицензией AGPL-3.0. Перед использованием в коммерческих продуктах проверьте условия лицензии.
caddy-waf всё ещё поддерживается?
Активно поддерживается. Последний коммит в caddy-waf — 17 окт. 2026 г..
Для чего можно использовать caddy-waf?
Защита сайта на Caddy от распространённых веб-атак с помощью набора правил. Блокировка трафика из определённых стран, от отдельных ASN, IP-диапазонов или Tor-узлов выхода. Ограничение частоты запросов к эндпоинтам API на обратном прокси Caddy. Экспорт метрик WAF для дашбордов Prometheus или Grafana.
Как установить caddy-waf?
Установите модуль с помощью xcaddy: go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest Соберите Caddy с модулем caddy-waf: xcaddy build --with github.com/fabriziosalmi/caddy-waf Убедитесь, что модуль WAF доступен: ./caddy list-modules | grep waf
Где скачать caddy-waf?
Исходный код и инструкции по установке — на GitHub: https://github.com/fabriziosalmi/caddy-waf

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты