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

Настройки для использования балансировщика или прокси‑сервера перед WAF‑нодой

Для кого этот документ

Этот документ содержит информацию для пользователей, у которых установлен прокси‑сервер или балансировщик, принимающий запросы и проксирующий их на WAF‑ноды Валарм.

Если в вашей системе нет такого балансировщика, вы можете пропустить этот шаг настройки.

По умолчанию WAF‑нода Валарм принимает IP‑адрес, с которого пришел запрос, за IP‑адрес источника запроса.
Если перед передачей на ноду запрос прошел через прокси‑сервер или балансировщик нагрузки, в веб‑интерфейсе в качестве IP‑адреса источника запроса будет отображаться IP‑адрес балансировщика.

Использование балансировщика

Для того, чтобы веб‑интерфейс Валарм корректно отображал IP‑адрес источника запросов, настройте балансировщик и WAF‑ноду так, чтобы они передавали IP‑адрес источника в заголовке запроса.

На рисунке ниже изображен пример использования заголовка X‑Client‑IP сервером HAProxy для отправки IP‑адреса клиента.

Использование HAProxy

Для того, чтобы настроить отправку IP‑адреса клиента в заголовке запроса прокси‑сервером или балансировщиком, выполните следующие шаги:

  1. Настройка прокси‑сервера/балансировщика нагрузки

  2. Настройка WAF‑ноды

Настройка прокси‑сервера или балансировщика нагрузки

Настройте прокси‑сервер или балансировщик нагрузки так, чтобы он записывал IP‑адрес, с которого был получен запрос, в заголовок этого запроса и отправлял полученный запрос с заголовком на WAF‑ноду Валарм.

Вы можете узнать о том, как настроить ваш прокси‑сервер или балансировщик, из его официальной документации. Пример ниже демонстрирует настройку заголовка X‑Client‑IP для балансировщика HAProxy.

Пример настройки балансировщика HAProxy

Директива option forwardfor сообщает балансировщику HAProxy о том, что в запрос необходимо добавить заголовок со значением IP‑адреса клиента.
Для этих целей вы можете использовать заголовок X‑Client‑IP.

В файле конфигурации /etc/haproxy/haproxy.cfg вставьте строку option forwardfor header X‑Client‑IP в блок директивы backend, отвечающий за связь HAProxy с WAF‑нодой Валарм.

Подробности о директиве

Подробную информацию о директиве option forwardfor вы можете найти в официальной документации HAProxy.

Пример фрагмента конфигурационного файла /etc/haproxy/haproxy.cfg:

# Публичный IP‑адрес для получения запросов
frontend my_frontend
    bind <haproxy-ip>
    mode http
    default_backend my_backend

# Бэкенд с WAF‑нодой Валарм
backend my_backend
    mode http
option forwardfor header X-Client-IP
server wallarm-node <node-ip>

В этом примере:

  • <haproxy-ip> — IP‑адрес прокси‑сервера HAProxy, на который он принимает запросы от клиентов;

  • <node-ip> — IP‑адрес WAF‑ноды Валарм, на который он принимает запросы от HAProxy.

Настройка WAF‑ноды

Для того, чтобы WAF‑нода Валарм распознавала значение заголовка X‑Client‑IP как адрес источника запроса, добавьте директивы set_real_ip_from и real_ip_header в конфигурационный файл NGINX.

Директива real_ip_header сообщает, что настоящий IP‑адрес клиента, отправившего запрос, передается в заголовке X‑Client‑IP.

Директива set_real_ip_from указывает IP‑адрес вашего прокси‑сервера или балансировщика, с которого приходят запросы с заголовком X‑Client‑IP.

Если в вашей системе несколько таких прокси‑серверов или балансировщиков, укажите несколько директив set_real_ip_from с их IP‑адресами.
Вы также можете указывать диапазоны IP‑адресов (например, 1.2.3.0/24).

Подробности о директивах

Подробную информацию о директивах set_real_ip_from и real_ip_header вы можете найти в официальной документации NGINX.

Пример фрагмента конфигурационного файла /etc/nginx/conf.d/default.conf:

location / {
    # Настройка режима проксирования и фильтрации WAF‑ноды
    wallarm_mode block;

    # Настройка проксирования запросов на защищаемое приложение
    proxy_pass http://<app-ip>;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_forwarded_for;

     # Настройка определения настоящего IP источника запросов
    set_real_ip_from <proxy-ip1>;
    set_real_ip_from <proxy-ip2>;
    real_ip_header X-Client-IP;
}

В этом примере:

  • <app-ip> — IP‑адрес защищаемого приложения, на который оно принимает запросы от WAF‑ноды;

  • <proxy-ip1> и <proxy-ip2> — IP‑адреса прокси‑серверов, с которых они отправляют запросы на WAF‑ноду Валарм.

После того, как вы сохранили измененный файл конфигурации NGINX, перезагрузите NGINX:

service nginx restart

Проверка результата

Проведите тестовую атаку и проверьте, что в веб‑интерфейсе Валарм корректно отображается адрес источника запроса:

События