Skip to content

Latest commit

 

History

History
133 lines (98 loc) · 7.09 KB

README-RU.md

File metadata and controls

133 lines (98 loc) · 7.09 KB

nw-captcha

Пример PHP-кода для интеграции Nemesida WAF с функционалом reCAPTCHA (снятие блокировки с IP-адресов, определенных Nemesida WAF как источники DDoS, атак методом перебора и флуда). nw-captcha вместе с настроенным Nginx доступен также в виде Docker-образа.

Nemesida WAF with reCAPTCHA

Получите ключи reCAPTCHA

В панели управления Google reCAPTCHA получите site и secret ключи для reCAPTCHA v2 и внестите изменения в файл settings.php.

Инициируйте файл SQLite:

Создайте файл 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 - идентификатор группы лицензионных ключей.

Init SQLite file

Добавьте в базу данных записи для каждого используемого сервера с 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-адреса.


Docker-образ

Развертывание Docker-контейнера с nw-captcha

Для развертывания контейнера с nw-captcha необходимо выполнить следующие действия:

  1. Загрузите образ, содержащий nw-captcha вместе с настроенным Nginx:
# docker pull nemesida/nw-сaptcha
  1. Создайте каталог:
# mkdir -p /opt/nwaf/nw-captcha
  1. В каталоге конфигурационных файлов создайте файл first-launch:
# touch /opt/nwaf/nw-captcha/first-launch
  1. Запустите контейнер с 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 контейнера/
  1. Разрешите доступ на чтение для всех для каталога nw-captcha:
# chmod -R 0555 /opt/nwaf/nw-captcha
  1. Установите SQLite3 и внесите изменения в конфигурацию.

  2. Для запуска контейнера выполните следующие команды:

# 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.

Обновление Docker-образа

  1. Перед обновлением образа nw-captcha проверьте, запущен ли контейнер. Для этого необходимо посмотреть ID контейнера (cтолбец CONTAINER ID), используя команду:
# docker ps -a
  1. Если контейнер запущен, остановите его, используя команду:
# docker stop /ID контейнера/
  1. При остановленном контейнере удалите образ:
# docker image rm nemesida/nw-captcha
  1. Загрузите образ, содержащий nw-captcha:
# docker pull nemesida/nw-captcha
  1. Запустите контейнер с образом nw-captcha, используя команду:
# iptables -t filter -N DOCKER
# docker run --rm -d -v /opt/nwaf/nw-captcha/:/nw-captcha nemesida/nw-captcha