Пример PHP-кода для интеграции Nemesida WAF с функционалом reCAPTCHA (снятие блокировки с IP-адресов, определенных Nemesida WAF как источники DDoS, атак методом перебора и флуда). nw-captcha вместе с настроенным Nginx доступен также в виде Docker-образа.
В панели управления Google reCAPTCHA получите site
и secret
ключи для reCAPTCHA v2 и внестите изменения в файл settings.php
.
Создайте файл SQLite, инициируйте его структуру. Перейдите в каталог, где будет храниться файл (например, /opt/nw-captcha/), и создайте его:
mkdir -p /opt/nw-captcha/ sqlite3 /opt/nw-captcha/nw.db
Создайте необходимую таблицу:
create table client ( url text, token text, uuid text, waf_id text ); create unique index client_uuid_uindex on client (uuid);
Описание параметров:
url
- URL-адрес сервера с установленным динамическим модулем Nemesida WAF (в формате СХЕМА://АДРЕС СЕРВЕРА[:ПОРТ]);token
- значение параметра nwaf_ban_captcha_token;uuid
- уникальный идентификатор экземпляра Nemesida WAF;waf_id
- идентификатор группы лицензионных ключей.
Добавьте в базу данных записи для каждого используемого сервера с Nemesida WAF.
Пример:
INSERT INTO client(url, token, uuid, waf_id) VALUES ("https://example.ru","token","uuid","waf_id");
UUID и WAF ID доступны в журнале error.log
сервиса Nginx.
Пример:
# cat /var/log/nginx/error.log | grep 'WAF ID' 2022/01/01 00:00:00 [info] ...: Nemesida WAF: UUID: XXX; WAF ID: XXX. ...
Обновите параметр DB_PATH
в settings.php
.
На сервере с установленным Nemesida WAF в настройках nwaf.conf
установите параметр nwaf_ban_captcha_token
, который определяет строку-секрет для разблокировки IP-адреса.
Для развертывания контейнера с nw-captcha
необходимо выполнить следующие действия:
- Загрузите образ, содержащий
nw-captcha
вместе с настроенным Nginx:
# docker pull nemesida/nw-сaptcha
- Создайте каталог:
# mkdir -p /opt/nwaf/nw-captcha
- В каталоге конфигурационных файлов создайте файл
first-launch
:
# touch /opt/nwaf/nw-captcha/first-launch
- Запустите контейнер с
nw-captcha
, используя команды:
# iptables -t filter -N DOCKER # docker run --rm -d -v /opt/nwaf/nw-captcha:/nw-captcha -p 80:80 nemesida/nw-сaptcha
где:
--rm
- удаление контейнера после завершения работы;-d
- запуск контейнера в фоновом режиме;/opt/nwaf/nw-captcha:/nw-captcha
- монтирование каталога с конфигурационными файлами внутрь контейнера;-p 80:80
- проброс порта80
контейнера на внешний порт80
.
Посмотреть ID контейнера (cтолбец CONTAINER ID) можно командой:
# docker ps -a
Остановить контейнер можно командой:
# docker stop /ID контейнера/
- Разрешите доступ на чтение для всех для каталога
nw-captcha
:
# chmod -R 0555 /opt/nwaf/nw-captcha
-
Установите
SQLite3
и внесите изменения в конфигурацию. -
Для запуска контейнера выполните следующие команды:
# iptables -t filter -N DOCKER # docker run --rm -d -v /opt/nwaf/nw-captcha:/nw-captcha -p 80:80 nemesida/nw-сaptcha
где:
--rm
- удаление контейнера после завершения работы;-d
- запуск контейнера в фоновом режиме;/opt/nwaf/nw-captcha:/nw-captcha
- монтирование каталога с конфигурационными файлами внутрь контейнера;-p 80:80
- проброс порта80
контейнера на внешний порт80
.
- Перед обновлением образа
nw-captcha
проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:
# docker ps -a
- Если контейнер запущен, остановите его, используя команду:
# docker stop /ID контейнера/
- При остановленном контейнере удалите образ:
# docker image rm nemesida/nw-captcha
- Загрузите образ, содержащий
nw-captcha
:
# docker pull nemesida/nw-captcha
- Запустите контейнер с образом
nw-captcha
, используя команду:
# iptables -t filter -N DOCKER # docker run --rm -d -v /opt/nwaf/nw-captcha/:/nw-captcha nemesida/nw-captcha