Настройки для использования балансировщика или прокси-сервера перед фильтрующим узлом

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

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

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

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

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

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

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

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

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

  1. Настройка прокси-сервера/балансировщика нагрузки
  2. Настройка фильтрующего узла

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

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

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

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

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

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

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

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

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

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

# Бэкенд с фильтрующим узлом Валарм
backend my_backend
    mode http
option forwardfor header X-Client-IP
server wallarm-node <node-ip>

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

  • <haproxy-ip> — IP-адрес прокси-сервера HAProxy, на который он принимает запросы от клиентов;
  • <node-ip> — IP-адрес фильтрующего узла Валарм, на который он принимает запросы от HAProxy.

Настройка фильтрующего узла

Для того, чтобы фильтрующий узел Валарм распознавал значение заголовка 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 / {
    # Настройка режима проксирования и фильтрации узла
    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-адрес защищаемого приложения, на который оно принимает запросы от фильтрующего узла;
  • <proxy-ip1> и <proxy-ip2> — IP-адреса прокси-серверов, с которых они отправляют запросы на фильтрующий узел Валарм.

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

# service nginx restart

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

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

События

results matching ""

    No results matching ""