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

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

В этой инструкции приведен пример конфигурации Traefik для зеркалирования трафика и ноды Вебмониторэкс для обработки зеркалированного трафика.

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

Приведенная конфигурация основана на подходе dynamic configuration file. Веб-сервер Traefik поддерживает и другие подходы, вы можете адаптировать пример конфигурации к любому из них, так как они имеют похожие структуры.

### Dynamic configuration file
### Note: entrypoints are described in static configuration file
http:
  services:
    ### This is how to map original and wallarm `services`.
    ### In further `routers` configuration (see below), please 
    ### use the name of this service (`with_mirroring`).
    ###
    with_mirroring:
      mirroring:
        service: "httpbin"
        mirrors:
          - name: "wallarm"
            percent: 100
    ### The `service` to mirror traffic to - the endpoint
    ### that should receive the requests mirrored (copied)
    ### from the original `service`.
    ###
    wallarm:
      loadBalancer:
        servers:
          - url: "http://wallarm:8445"
    ### Original `service`. This service should receive the
    ### original traffic.
    ###
    httpbin:
      loadBalancer:
        servers:
          - url: "http://httpbin:80/"
  routers:
    ### The router name must be the same as the `service` name
    ### for the traffic mirroring to work (with_mirroring).
    ###
    with_mirroring:
      entryPoints:
        - "web"
      rule: "Host(`mirrored.example.com`)"
      service: "with_mirroring"
    ### The router for the original traffic.
    ###
    just_to_original:
      entryPoints:
        - "web"
      rule: "Host(`original.example.local`)"
      service: "httpbin"

Подробнее в документации Traefik

Шаг 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.

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

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

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