waf: Модуль веб-приложений брандмауэра для NGINX
Установка
Вы можете установить этот модуль в любой дистрибутив на базе RHEL, включая, но не ограничиваясь:
- RedHat Enterprise Linux 7, 8, 9 и 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 и Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-waf
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-waf
Включите модуль, добавив следующее в верхнюю часть файла /etc/nginx/nginx.conf:
load_module modules/ngx_http_waf_module.so;
Этот документ описывает nginx-module-waf v10.1.2 выпущенный 9 июля 2022 года.
English | 简体中文
Удобный, высокопроизводительный модуль брандмауэра Nginx.
Почему ngx_waf
- Базовая защита: такие как черные и белые списки IP-адресов или диапазонов IP, черные и белые списки uri, черный список тел запросов и т.д.
- Легкость в использовании: конфигурационные файлы и файлы правил легко писать и читать.
- Высокая производительность: эффективные алгоритмы и кэширование.
- Расширенная защита: совместимость с ModSecurity, вы можете использовать OWASP(Open Web Application Security Project®) ModSecurity Core Rule Set.
- Дружественная проверка для краулеров: поддерживает проверку краулеров Google, Bing, Baidu и Yandex и автоматически позволяет им избежать ложных срабатываний.
- Captcha: поддерживает три вида капчи: hCaptcha, reCAPTCHAv2 и reCAPTCHAv3.
Возможности
- Совместимость с ModSecurity.
- Поддержка IPV4 и IPV6.
- Поддержка включения CAPTCHAs, включая hCaptcha, reCAPTCHAv2 и reCAPTCHAv3.
- Поддержка аутентифицированных краулеров (на основе идентификации user agent и IP), чтобы избежать блокировки этих краулеров (например, GoogleBot).
- Защита от CC, если скорость запросов превышает лимит, IP будет автоматически заблокирован на определенный период времени или использовать CAPTCHA для идентификации человека и разрешить доступ в случае успеха.
- Исключительное разрешение для конкретного IP-адреса.
- Блокировка указанного IP-адреса.
- Блокировка указанного тела запроса.
- Исключительное разрешение для конкретного URL.
- Блокировка указанного URL.
- Блокировка указанной строки запроса.
- Блокировка указанного UserAgent.
- Блокировка указанного Cookie.
- Исключительное разрешение для конкретного Referer.
- Блокировка указанного Referer.
Документация
- Рекомендуемая ссылка: https://docs.addesp.com/ngx_waf/
- Альтернативная ссылка 1: https://add-sp.github.io/ngx_waf-docs/
- Альтернативная ссылка 2: https://ngx-waf-docs.pages.dev/
Контакт
- Канал Telegram: https://t.me/ngx_waf
- Группа Telegram (на английском): https://t.me/group_ngx_waf
- Группа Telegram (на китайском): https://t.me/group_ngx_waf_cn
Спонсор
Надеемся, вы сможете помочь продвигать этот проект. Чем больше звезд, тем лучше этот проект. :)
Набор тестов
Этот модуль поставляется с набором тестов на Perl. Тестовые случаи также декларативны. Благодаря модулю Test::Nginx в мире Perl.
Чтобы запустить его на вашей стороне:
## Это займет много времени, но его нужно запустить только один раз.
cpan Test::Nginx
# Вам нужно указать временный каталог.
# Если каталог не существует, он будет создан автоматически.
# Если каталог уже существует, он будет **удален** сначала, а затем создан.
export MODULE_TEST_PATH=/path/to/temp/dir
# Вам нужно указать абсолютный путь к динамическому модулю, если он у вас установлен,
# в противном случае вам не нужно выполнять эту строку.
export MODULE_PATH=/path/to/ngx_http_waf_module.so
cd ./test/test-nginx
sh ./init.sh
sh ./start.sh ./t/*.t
Некоторые части набора тестов требуют, чтобы стандартные модули proxy, rewrite и SSI были включены при сборке Nginx.
Спасибо
- ModSecurity: Открытый, кроссплатформенный движок брандмауэра веб-приложений (WAF).
- uthash: Макросы C для хеш-таблиц и не только.
- libcurl: Библиотека для передачи файлов по нескольким протоколам.
- cJSON: Ультралегкий JSON парсер на ANSI C.
- libinjection: Парсер и анализатор токенов SQL / SQLI.
- libsodium: Современная, портативная, простая в использовании криптографическая библиотека.
- test-nginx: Структура тестирования на основе данных для разработки C-модуля Nginx и библиотеки Lua OpenResty.
- lastversion: Инструмент командной строки, который помогает вам загрузить или установить конкретную версию проекта.
- ngx_lua_waf: Брандмауэр веб-приложений на основе lua-nginx-module (openresty).
- nginx-book: Руководство по разработке на китайском языке для nginx.
- nginx-development-guide: Руководство по разработке на китайском языке для nginx.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-waf.