Перейти к содержанию

Пример конфигурации NGINX для зеркалирования трафика

Начиная с версии 1.13, NGINX поддерживает зеркалирование трафика на дополнительные бэкенд‑сервисы. В этой инструкции приведен пример конфигурации NGINX для зеркалирования трафика и ноды Вебмониторэкс для обработки зеркалированного трафика.

Шаг 1: Конфигурация NGINX для зеркалирования трафика

Чтобы NGINX зеркалировал входящий трафик:

  1. Настройте модуль NGINX ngx_http_mirror_module, задав директиву mirror в блоке location или server.

    Пример ниже зеркалирует трафик с location / на location /mirror-test.

  2. В настройках location, на который указывает директива mirror, перечислите заголовки, которые необходимо зеркалировать. В качестве IP‑адреса укажите машину с нодой Вебмониторэкс, которая принимает копию трафика.

location / {
        mirror /mirror-test;
        mirror_request_body on;
        root   /usr/share/nginx/html;
        index  index.html index.htm; 
    }

location /mirror-test {
        internal;
        #proxy_pass http://111.11.111.1$request_uri;
        proxy_pass http://222.222.222.222$request_uri;
        proxy_set_header X-SERVER-PORT $server_port;
        proxy_set_header X-SERVER-ADDR $server_addr;
        proxy_set_header HOST $http_host;
        proxy_set_header X-Forwarded-For $realip_remote_addr;
        proxy_set_header X-Forwarded-Port $realip_remote_port;
        proxy_set_header X-Forwarded-Proto $http_x_forwarded_proto;
        proxy_set_header X-Scheme $scheme;
        proxy_set_header X-Request-ID $request_id;
    }

Шаг 2: Конфигурация ноды Вебмониторэкс для фильтрации зеркалированного трафика

Чтобы нода Вебмониторэкс обрабатывала зеркалированный трафик, в конфигурационном файле ноды задайте следующее:

wallarm_force server_addr $http_x_server_addr;
wallarm_force server_port $http_x_server_port;
#Change 222.222.222.22 to the address of the mirroring server
set_real_ip_from  222.222.222.22;
real_ip_header    X-Forwarded-For;
#real_ip_recursive on;
wallarm_force response_status 0;
wallarm_force response_time 0;
wallarm_force response_size 0;
  • Директива real_ip_header необходима, чтобы в Консоли управления Вебмониторэкс правильно отображались IP‑адреса атакующих.

  • Директивы wallarm_force_response_* отключают обработку всех запросов, за исключением копий, полученных из зеркалированного трафика.

  • Так как блокировка вредоносных запросов невозможна, нода Вебмониторэкс всегда анализирует трафик в режиме мониторинга, даже если в директиве wallarm_mode или в Консоли управления задан режим мягкой или обычной блокировки. Исключение — анализ трафика отключен (wallarm_mode off или соответствующая настройка в Консоли управления).

Обработка зеркалированного трафика поддерживается только нодой на основе NGINX. Можно задать приведенную конфигурацию следующим образом:

  • Запускаете ноду из DEB/RPM пакетов — задайте приведенную конфигурацию в файле NGINX /etc/nginx/conf.d/default.conf.

  • Запускаете ноду из облачного образа AWS или GCP — задайте приведенную конфигурацию в файле NGINX /etc/nginx/nginx.conf.

  • Устанавливаете ноду из Docker-образа — примонтируйте файл с приведенной конфигурацией в контейнер.

  • Запускаете ноду как Sidecar-прокси или Ingress-контроллер — примонтируйте ConfigMap с приведенной конфигурацией в под.