Обратный HTTP-прокси

Чтобы обратный HTTP-прокси Qrator Labs мог защищать серверы, обслуживающие ваш ресурс, нужно, чтобы весь входящий трафик, предназначенный для ресурса, всегда направлялся на обратный прокси.

Для этого нужно:

  1. Настроить DNS так, чтобы трафик к серверам проходил через обратный прокси.

  2. Изменить IP-адреса серверов в случае, если серверы уже находятся под атакой.

    Если оставить тот же IP-адрес, который использовался ранее, то злоумышленник сможет направить трафик на сервер напрямую, минуя обратный прокси Qrator Labs.

  3. Настроить файервол (firewall) на серверах так, чтобы был разрешен трафик только из доверенных сетей.

    Если сервер не будет сбрасывать (drop) соединения из неизвестных сетей, то у злоумышленника останется возможность обнаружить его путём перебора IP-адресов. Это позволит направить трафик на сервер напрямую, минуя обратный прокси Qrator Labs.

Настройка DNS

В настройках DNS-зоны измените A-запись для вашего домена на IP-адрес обратного прокси, который отображается как Qrator IP в личном кабинете. Обратите внимание, что изменения становятся видны другим DNS-серверам и пользователям не сразу. Точное время, которое займёт обновление A-записи, зависит от её значения TTL.

Сеть Qrator Labs готова обрабатывать трафик и осуществлять защиту сразу, как только трафик начнёт поступать на обратный прокси.

Смена актуального IP-адреса

Важно

Этой инструкцией следует воспользоваться, если вы уже находитесь под DDoS-атакой.

Иногда злоумышленник располагает архивом старых записей DNS для вашего домена. Поэтому даже после того, как вы смените A-запись на Qrator IP, злоумышленник может направить трафик на настоящий IP-адрес сервера, минуя обратный прокси.

Чтобы защититься от такого вектора атаки, смените IP-адрес апстрима:

  1. Убедитесь, что A-запись зоны DNS для нужного домена указывает на Qrator IP.
  2. Получите у вашего провайдера новый IP-адрес, никогда ранее не использовавшийся для вашего сайта. Не публикуйте новый IP-адрес нигде и не используйте его в записях DNS. Если есть возможность, лучше получить IP-адрес не из той же сети, что предыдущий.
  3. В личном кабинете Qrator Labs добавьте новый IP-адрес в качестве адреса апстрима. Прежний апстрим, IP-адрес которого может быть известен злоумышленнику, удалите.
  4. Прекратите обработку запросов на прежнем IP-адресе.

Qrator Labs начнёт использовать обновлённый список апстримов, как только вы сохраните его в личном кабинете.

Настройка файервола

Если IP-адреса для апстримов берутся из одного диапазона, то злоумышленник может попытаться найти актуальный IP-адрес сервера методом перебора адресов в той же сети, к которой принадлежал прежний IP-адрес. Такое бывает, если вы используете адреса из одной и той же собственной сети или от одного и того же провайдера.

Для защиты от обнаружения настройте правила файервола так, чтобы сервер отвечал на запросы только из сетей Qrator Labs и из ваших доверенных сетей, а все остальные соединения сбрасывал (drop). Если ни один из серверов не будет отвечать на попытки соединения от злоумышленника, то злоумышленник не сможет узнать, на какой адрес направлять атаку.

Обеспечьте, чтобы в списке разрешённых подсетей, запросы из которых будут обрабатываться, присутствовали четыре подсети Qrator Labs:

  • 66.110.32.128/30
  • 83.234.15.112/30
  • 87.245.197.192/30
  • 185.94.108.0/24

Также к этому списку можно добавить доверенную офисную сеть и IP-адреса некоторых сотрудников, если они планируют делать запросы в обход обратного прокси. Соединения от всех остальных адресов необходимо запретить на уровне межсетевого экрана.

В зависимости от операционной системы на апстриме вы можете использовать либо только правила iptables для plain HTTP, либо комбинировать их с правилами для iptables с поддержкой модулей conntrack и ipset. Мы рекомендуем использовать как conntrack, так и ipset, поскольку он делает набор правил iptables меньше (тем самым упрощая его обслуживание) и быстрее (меньше правил означает меньшее количество запросов на входящем пакете).

Вы можете убедиться, что настройка для портов 80 и 443 выполнена корректно, в разделе Утилиты → Уязвимости.

Ниже приведены примеры скриптов, выполняющих такую конфигурацию для iptables.

Примеры могут не подойти к вашей конфигурации

Приведённые ниже примеры скриптов могут не сработать или иметь нежелательный эффект на вашем сервере. Это зависит от того, какая конфигурация iptables используется на данный момент. Будьте внимательны и не используйте скрипты из примеров, если вы не уверены, что они подходят для вашего случая.

Пример конфигурации iptables для plain HTTP

#!/bin/sh

QRATOR_NODES="
66.110.32.128/30
83.234.15.112/30
87.245.197.192/30
185.94.108.0/24
"

ADMIN_IPS="
127.0.0.1
"

iptables -N trusted_nodes
for IP in $QRATOR_NODES $ADMIN_IPS; do
    iptables -A trusted_nodes -s $IP -j RETURN
done

iptables -A trusted_nodes -j DROP
iptables -A INPUT -p tcp -m multiport --dports 80,443 -j trusted_nodes

Пример конфигурации для iptables с поддержкой conntrack и ipset

#!/bin/sh

QRATOR_NODES="
66.110.32.128/30
83.234.15.112/30
87.245.197.192/30
185.94.108.0/24
"

ADMIN_IPS="
127.0.0.1
"

ipset -N trusted_nodes hash:net
for IP in $QRATOR_NODES $ADMIN_IPS; do
    ipset -A trusted_nodes $IP
done

iptables -N qrator
iptables -A qrator -m set --match-set trusted_nodes src -j ACCEPT
iptables -A qrator -j DROP

iptables -I INPUT --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 --state NEW -j qrator
expand_less