Настройки для использования балансировщика или прокси‑сервера перед WAF‑нодой¶
Для кого этот документ
Этот документ содержит информацию для пользователей, у которых установлен прокси‑сервер или балансировщик, принимающий запросы и проксирующий их на WAF‑ноды Валарм.
Если в вашей системе нет такого балансировщика, вы можете пропустить этот шаг настройки.
По умолчанию WAF‑нода Валарм принимает IP‑адрес, с которого пришел запрос, за IP‑адрес источника запроса.
Если перед передачей на ноду запрос прошел через прокси‑сервер или балансировщик нагрузки, в веб‑интерфейсе в качестве IP‑адреса источника запроса будет отображаться IP‑адрес балансировщика.
Для того, чтобы веб‑интерфейс Валарм корректно отображал IP‑адрес источника запросов, настройте балансировщик и WAF‑ноду так, чтобы они передавали IP‑адрес источника в заголовке запроса.
На рисунке ниже изображен пример использования заголовка X‑Client‑IP
сервером HAProxy для отправки IP‑адреса клиента.
Для того, чтобы настроить отправку IP‑адреса клиента в заголовке запроса прокси‑сервером или балансировщиком, выполните следующие шаги:
Настройка прокси‑сервера или балансировщика нагрузки¶
Настройте прокси‑сервер или балансировщик нагрузки так, чтобы он записывал 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:
sudo service nginx restart
Проверка результата¶
Проведите тестовую атаку и проверьте, что в веб‑интерфейсе Валарм корректно отображается адрес источника запроса: