Назад | Перейти на главную страницу

Что такое открытый DNS-преобразователь и как я могу защитить свой сервер от злонамеренного использования хакерами?

У меня не самый сильный опыт в области компьютерной безопасности, но вчера один из серверов моей компании был отключен нашим хостом.

Это сервер с общедоступным IP-адресом, на котором я размещаю несколько приложений веб-служб, включая веб-сайты и API. Мне сказали, что на моем сервере «работает открытый DNS-преобразователь, который используется для ретрансляции атаки отказа в обслуживании на внешний объект».

Что это значит? Как работает эта атака? И как я могу защитить свою систему от такого злоупотребления?

В моем конкретном случае рассматриваемый сервер находится на Windows Server 2012 и обслуживает DNS для домена Active Directory.

«Открытый DNS-преобразователь» - это DNS-сервер, который желает разрешить рекурсивные поисковые запросы DNS для всех в Интернете. Это очень похоже на открытый ретранслятор SMTP в том смысле, что простое отсутствие аутентификации позволяет третьим сторонам-злоумышленникам распространять свои полезные данные, используя ваше незащищенное оборудование. Проблема с открытыми ретрансляторами SMTP заключается в том, что они пересылают спам. Проблема с открытыми преобразователями DNS заключается в том, что они допускают атаку отказа в обслуживании, известную как атака с усилением DNS.

Эта атака работает довольно просто - поскольку ваш сервер будет разрешать рекурсивные DNS-запросы от кого угодно, злоумышленник может заставить его участвовать в DDoS-атаке, отправив вашему серверу рекурсивный DNS-запрос, который вернет большой объем данных, намного превышающий исходный пакет запроса DNS. Подделывая (подделывая) свой IP-адрес, они будут направлять этот дополнительный трафик на компьютеры своей жертвы, а не на свои собственные, и, конечно же, они будут делать как можно больше запросов на ваш сервер и любой другой открытый DNS. резолверы они могут найти. Таким образом, кто-то с относительно небольшим каналом может «усилить» атаку отказа в обслуживании, используя всю полосу пропускания на своем канале, чтобы направить гораздо больший объем трафика своим жертвам.

ArsTechnica опубликовала достойную статью о недавней DDoS-атаке DNS Amplification против Spamhaus., и стоит быстро прочитать, чтобы получить основы (и хорошее визуальное представление усиления).

Самый простой способ защитить вашу систему от подобных злоупотреблений - ограничить количество адресов, которые ваш сервер будет выполнять рекурсивный поиск в ваших локальных подсетях. (Конкретные особенности зависят от того, какой DNS-сервер вы используете, конечно).


Например, если бы я использовал BIND 9 и хотел просто предотвратить рекурсию DNS с внешних адресов, я бы использовал следующий код в своей конфигурации:

options {
    directory "/var/named/master";
    allow-recursion { 127.0.0.1; 10.0.0.0/8; 192.168.0.0/16; 172.16.0.0/12; };

Эта строка кода сообщает моему серверу BIND обрабатывать только рекурсивные DNS-запросы для локального адреса обратной петли (который, я думаю, я мог / должен установить для локального блока обратной связи, всего / 8) и 3 пространств частных адресов IPv4.


Для Windows Server 2012, который вы используете, у вас есть следующие варианты.

1. Отделите свой DNS-сервер от своего IIS-сервера.

  • По крайней мере, в идеальном мире нет причин, по которым вам нужно запускать DNS на том же компьютере, что и IIS.
    • Разместите DNS во внутреннем ящике без NAT, чтобы внешний мир не мог его получить, и позвольте IIS находиться на внешнем ящике, к которому может получить доступ остальной мир. Вы можете использовать правила двойной адресации или брандмауэра, чтобы выборочно разрешить доступ к вашему DNS-серверу с вашего IIS-сервера.

2. Блокируйте внешние DNS-запросы с помощью брандмауэра, например встроенного брандмауэра Windows.

  • К моему удивлению, Windows DNS не позволяет вам ограничивать адреса, по которым обрабатываются рекурсивные DNS-запросы, поэтому на самом деле это рекомендованный метод Microsoft.
    • Выберите правила DNS (TCP и UDP), перейдите в Remote IP address раздел и добавьте подсети, используемые в вашей локальной сети, а также любые общедоступные IP-адреса серверов, которым необходим доступ к Active Directory. Как и в примере с BIND, пространства частных адресов IPv4 127.0.0.0/8 10.0.0.0/8 192.168.0.0/16 и 172.16.0.0/12.

3. Отключить рекурсию.

  • Честно говоря, я не уверен, какое влияние это окажет на вашу среду, поскольку вы еще не указали, как DNS и AD настроены в вашей среде, и, соответственно, это последний вариант.
    1. Откройте диспетчер DNS.
    2. В дереве консоли щелкните правой кнопкой мыши соответствующий DNS-сервер и выберите «Свойства».
    3. Куда?
    4. DNS / соответствующий DNS-сервер
    5. Щелкните вкладку Advanced.
    6. В разделе «Параметры сервера» установите флажок «Отключить рекурсию» и нажмите кнопку «ОК».
      • Поскольку у нас есть среда с несколькими лесами и для этого используются условные серверы пересылки, я не собираюсь устанавливать этот флажок. Возможно, вам стоит также подумать.