Самостоятельно разворачиваемый веб-фаервол (WAF) и обратный прокси, который фильтрует HTTP-трафик и блокирует SQL-инъекции, XSS, ботов и флуд.
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
Установите модуль с помощью xcaddy
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest - 2
Соберите Caddy с модулем caddy-waf
xcaddy build --with github.com/fabriziosalmi/caddy-waf - 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 обновляется ежедневно.
Похожие проекты
Компактный сервер аутентификации и авторизации: работает как middleware для Traefik, Nginx и Caddy или как отдельный сервер SSO.
Платформа для домашнего сервера с самостоятельным размещением: защищённый reverse proxy, управление приложениями и шлюз с авторизацией, MFA, SSO и защитой от ботов.
Настольный клиент для Windows, macOS и Linux, который обеспечивает прозрачное шифрование файлов на устройстве в Dropbox, Google Drive, OneDrive и других синхронизируемых облачных папках.
Сервис Google для непрерывного фаззинг-тестирования open source-проектов с помощью libFuzzer, AFL++ и Honggfuzz с санитайзерами для поиска уязвимостей.
Безопасная Python-песочница на Rust для запуска кода, сгенерированного ИИ, без контейнеров.