Чтобы обратный HTTP-прокси Curator мог защищать серверы, обслуживающие ваш ресурс, нужно, чтобы весь входящий трафик, предназначенный для ресурса, всегда направлялся на обратный прокси.
Для этого нужно:
-
Настроить DNS так, чтобы трафик к серверам проходил через обратный прокси.
-
Изменить IP-адреса серверов в случае, если серверы уже находятся под атакой.
Если оставить тот же IP-адрес, который использовался ранее, то злоумышленник сможет направить трафик на сервер напрямую, минуя обратный прокси Curator.
-
Настроить файервол (firewall) на серверах так, чтобы был разрешен трафик только из доверенных сетей.
Если сервер не будет сбрасывать (drop) соединения из неизвестных сетей, то у злоумышленника останется возможность обнаружить его путём перебора IP-адресов. Это позволит направить трафик на сервер напрямую, минуя обратный прокси Curator.
Настройка DNS
В настройках DNS-зоны измените A-запись для вашего домена на IP-адрес обратного прокси, который отображается как Curator IP в личном кабинете. Обратите внимание, что изменения становятся видны другим DNS-серверам и пользователям не сразу. Точное время, которое займёт обновление A-записи, зависит от её значения TTL.
Сеть Curator готова обрабатывать трафик и осуществлять защиту сразу, как только трафик начнёт поступать на обратный прокси.
Смена актуального IP-адреса
Важно
Этой инструкцией следует воспользоваться, если вы уже находитесь под DDoS-атакой.
Иногда злоумышленник располагает архивом старых записей DNS для вашего домена. Поэтому даже после того, как вы смените A-запись на Curator IP, злоумышленник может направить трафик на настоящий IP-адрес сервера, минуя обратный прокси.
Чтобы защититься от такого вектора атаки, смените IP-адрес апстрима:
- Убедитесь, что A-запись зоны DNS для нужного домена указывает на Curator IP.
- Получите у вашего провайдера новый IP-адрес, никогда ранее не использовавшийся для вашего сайта. Не публикуйте новый IP-адрес нигде и не используйте его в записях DNS. Если есть возможность, лучше получить IP-адрес не из той же сети, что предыдущий.
- В личном кабинете Curator добавьте новый IP-адрес в качестве адреса апстрима. Прежний апстрим, IP-адрес которого может быть известен злоумышленнику, удалите.
- Прекратите обработку запросов на прежнем IP-адресе.
Curator начнёт использовать обновлённый список апстримов, как только вы сохраните его в личном кабинете.
Настройка файервола
Если IP-адреса для апстримов берутся из одного диапазона, то злоумышленник может попытаться найти актуальный IP-адрес сервера методом перебора адресов в той же сети, к которой принадлежал прежний IP-адрес. Такое бывает, если вы используете адреса из одной и той же собственной сети или от одного и того же провайдера.
Для защиты от обнаружения настройте правила файервола так, чтобы сервер отвечал на запросы только из сетей Curator и из ваших доверенных сетей, а все остальные соединения сбрасывал (drop). Если ни один из серверов не будет отвечать на попытки соединения от злоумышленника, то злоумышленник не сможет узнать, на какой адрес направлять атаку.
Обеспечьте, чтобы в списке разрешённых подсетей, запросы из которых будут обрабатываться, присутствовала подсеть Curator: 185.94.108.0/24
.
Также к этому списку можно добавить доверенную офисную сеть и IP-адреса некоторых сотрудников, если они планируют делать запросы в обход обратного прокси. Соединения от всех остальных адресов необходимо запретить на уровне межсетевого экрана.
В зависимости от операционной системы на апстриме вы можете использовать либо только правила iptables для plain HTTP, либо комбинировать их с правилами для iptables
с поддержкой модулей conntrack и ipset. Мы рекомендуем использовать как conntrack
, так и ipset
, поскольку он делает набор правил iptables
меньше (тем самым упрощая его обслуживание) и быстрее (меньше правил означает меньшее количество запросов на входящем пакете).
Вы можете убедиться, что настройка для портов 80 и 443 выполнена корректно, в разделе Утилиты → Уязвимости.
Ниже приведены примеры скриптов, выполняющих такую конфигурацию для iptables
.
Примеры могут не подойти к вашей конфигурации
Приведённые ниже примеры скриптов могут не сработать или иметь нежелательный эффект на вашем сервере. Это зависит от того, какая конфигурация iptables
используется на данный момент. Будьте внимательны и не используйте скрипты из примеров, если вы не уверены, что они подходят для вашего случая.
iptables
для plain HTTP
Пример конфигурации #!/bin/sh
CURATOR_NODE="
185.94.108.0/24
"
ADMIN_IPS="
127.0.0.1
"
iptables -N trusted_nodes
for IP in $CURATOR_NODE $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
CURATOR_NODE="
185.94.108.0/24
"
ADMIN_IPS="
127.0.0.1
"
ipset -N trusted_nodes hash:net
for IP in $CURATOR_NODE $ADMIN_IPS; do
ipset -A trusted_nodes $IP
done
iptables -N curator
iptables -A curator -m set --match-set trusted_nodes src -j ACCEPT
iptables -A curator -j DROP
iptables -I INPUT --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 80,443 --state NEW -j curator