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: поддерживает три вида CAPTCHA: hCaptcha, reCAPTCHAv2 и reCAPTCHAv3.
Особенности
- Совместимость с ModSecurity.
- Поддержка IPV4 и IPV6.
- Поддержка включения CAPTCHA, включая 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 и библиотеки OpenResty Lua.
- lastversion: Инструмент командной строки, который помогает вам загрузить или установить конкретную версию проекта.
- ngx_lua_waf: Веб-фаервол на основе lua-nginx-module (openresty).
- nginx-book: Руководство по разработке для nginx на китайском языке.
- nginx-development-guide: Руководство по разработке для nginx на китайском языке.
GitHub
Вы можете найти дополнительные советы по конфигурации и документацию для этого модуля в репозитории GitHub для nginx-module-waf.