Сервер dns поддерживает рекурсию запросов при определенных обстоятельствах возможна dos атака на сервер

Обновлено: 05.07.2024

Основная концепция преобразования DNS названий достаточно проста. Каждому веб сайту присваивается уникальный IP адрес. Для доступа к веб сайту клиенту необходимо знать этот IP адрес сайта. Конечно, пользователь обычно не вводит IP адрес в своем браузере Web browser, а вместо этого вводит название домена сайта (domain name). Для доступа к запрашиваемому веб сайту браузер (Web browser) должен уметь преобразовывать название домена сайта (domain name) в соответствующий ему IP адрес. В этом месте в игру вступает DNS. На клиентском компьютере настроен адрес предпочтительного сервера DNS (preferred DNS server). Запрашиваемый URL передается на сервер DNS, а сервер DNS возвращает IP адрес для запрашиваемого веб сайта. После этого клиент может обратиться к запрашиваемому сайту.

Как вы можете увидеть, процесс преобразования название в адрес достаточно краток. Однако, по всему миру существует огромное множество веб сайтов, и новые сайты создаются каждый день. Ваш сервер DNS просто не в состоянии знать IP адрес каждого отдельного веб сайта. Если сервер DNS не знает адрес запрашиваемого сайта, то он использует один из двух методов для определения IP адреса сайта.

Предпочтительный метод преобразования имени в адрес называется рекурсией (recursion). Если говорить в общем, то рекурсия это процесс, при котором сам сервер DNS отправляет запросы на другие сервера DNS, для того чтобы затем по обратной цепочке передать ответ клиенту, который совершил запрос. В общем, DNS сервер становится DNS клиентом. Некоторые администраторы предпочитают отключить рекурсию в целях увеличения производительности. Если рекурсия отключена, то сервер DNS использует процесс, называемый итерация (iteration), для обработки запроса.

Root Hints

Если сервер DNS не знает адрес запрашиваемого сайта, то он передает запрос другому серверу DNS. Для этого сервер DNS server должен знать IP адрес другого сервера DNS, которому он может передать запрос. Это задача корневых подсказок (root hints). Корневые подсказки предоставляют список IP адресов DNS серверов, которые находятся на корневом уровне (root level) иерархии DNS.

Хорошая новость заключается в том, что корневые подсказки (root hints) заранее настроены на DNS серверах, работающих под управлением операционной системы Windows Server 2003. Корневые подсказки (root hints) хранятся в файл под названием CACHE.DNS, который находится в папке \Windows\System32\Dns. Если вы хотите узнать, как выглядят корневые подсказки, то вы можете открыть этот файл в блокноте (Notepad). Как вы можете увидеть на рисунке A, файл с корневыми подсказками представляет собой ничто иное, чем обыкновенный текстовый файл, в котором попарно расположены DNS сервера и их IP адреса.

Рисунок A: Корневые подсказки соответствуют DNS серверам корневого уровня и их IP адресам

Рисунок A : Корневые подсказки соответствуют DNS серверам корневого уровня и их IP адресам

Теперь давайте поговорим о том, что такое корневые подсказки, что они делают, а также рассмотрим процесс рекурсии (recursion process) в действии. Диаграмма, изображенная на рисунке B иллюстрирует пример, о котором я хочу вам рассказать.

Рисунок B: Так работает DNS рекурсия (recursion)

Рисунок B : Так работает DNS рекурсия (recursion)

Если предположить также, что включена DNS рекурсия, то сервер DNS server начинает работать в роли DNS клиента и отправляет серию итерационных запросов на другие сервера DNS. Я объясню разницу между итеративным (iterative) и рекурсивным (recursive) запросом позднее, а сейчас просто представьте, что в целом процесс считается рекурсивным потому, что клиент отправляет лишь один запрос на предпочтительный сервер DNS (preferred DNS server).

Если сервер DNS не поддерживает рекурсивные очереди (recursive queries), то клиент по умолчанию будет выполнять итеративные запросы (iterative queries).

Если вы заинтересованы в достижении лучшей производительности, то должны разрешить вашему серверу DNS отправлять рекурсивные запросы. Причина для этого заключается в том, что если клиенты вынуждены совершать итеративные запросы, то они могут потенциально отправлять три или четыре запроса на сервер DNS в рамках каждого запроса на преобразование имени в IP адрес. Сервер DNS должен обработать все эти запросы рекурсивные или итеративные, но если используется рекурсия (recursion), то большинство запросов на преобразование имен обрабатывается вашим сервером DNS и происходят вдали от вашей сети. В результате этого снижается трафик и улучшается производительность.

Заключение

В этой статье я рассказал о том, как работает рекурсивная очередь DNS (recursive DNS query). Большинство серверов DNS поддерживают, как рекурсивные (recursive), так и итеративные запросы от клиентов. Если вы настроите ваш сервер DNS на поддержку рекурсивных очередей (recursive queries), то в общем сможете добиться лучшей производительности, т.к. благодаря этому можно добиться снижению количества запросов, которые должен совершить сетевой клиент.

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

Злоумышленники могут использовать рекурсию, чтобы вызвать отказ DNS-сервера в обслуживании клиентов. Поэтому если DNS-сервер в сети не должен получать рекурсивные запросы, рекурсия должна быть отключена.

Отключение рекурсии на DNS-сервере

Откройте диспетчер DNS.

В дереве консоли щелкните правой кнопкой мыши необходимый DNS-сервер и выберите Свойства.

DNS/необходимый DNS-сервер

Перейдите на вкладку Дополнительно.

В группе Параметры сервера установите флажок Отключить рекурсию и нажмите кнопку ОК.

Дополнительные сведения

  • Чтобы открыть диспетчер DNS, нажмите кнопку Пуск, выберите Администрирование, затем щелкнете DNS.

Откройте окно командной строки.

Введите указанную ниже команду и нажмите клавишу ВВОД.

Имя средства командной строки, предназначенного для управления DNS-серверами.

Обязательный компонент. DNS-имя узла, на котором содержится DNS-сервер. Также можно ввести IP-адрес DNS-сервера. Чтобы указать DNS-сервер на локальном компьютере, можно ввести точку (.).

Обязательный компонент. Настройка указанного сервера с помощью этой команды.

Обязательный компонент. Отключение рекурсии.

Обязательный компонент. Чтобы отключить рекурсию, введите 1 (отключено). Чтобы включить рекурсию, введите 0 (включено). По умолчанию рекурсия включена.

Чтобы просмотреть полный синтаксис этой команды, введите следующий текст в командной строке, а затем нажмите клавишу ВВОД:

Дополнительная информация

  • Чтобы открыть окно командной строки с более высоким уровнем прав, нажмите кнопку Пуск, выберите Все программы, Стандартные, щелкните правой кнопкой мыши пункт Командная строка, а затем выберите пункт Выполнить от имени администратора.

Об атаках этого типа было известно еще в 2006 году, но сегодня это обретает масштабы бедствия.

Вы можете наблюдать неоправданно значительный исходящий трафик udp пакетов.

Или утилитой iptraf:


Решение:

Обновление пакетов

Обновите bind. Старые версии более подвержены уязвимости и имеют еще несколько дырок кроме этой.

Для Centos:

Для Debian (Ubuntu):

Проверка рекурсии

Для проверки рекурсии вы должны запросить у вашего сервера сведения о чужом домене:

Команда должна выполнятся извне, для таких запросов, выполняемых непосредственно на вашем сервере, рекурсия должна выполняться.

Ответ защищенного сервера (не поддерживающего рекурсию):

Если ваш сервер выдаст вам подробную информацию о домене, то ваш сервер уязвим. Рекурсию надо отключить.

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


Отключение рекурсии

На Debian (Ubuntu): /etc/bind/named.conf.options

И в самый верх файла /etc/named.conf (CentOS ):

Или в существующий блок значений options файла /etc/bind/named.conf.options (Debian) добавляем следующее:

Затем перезапускаем демон named (CentOS):

Проверка

И снова следует проверить работу вашей службы DNS и доступность рекурсии.

Через некоторое время проверьте как изменился трафик на вашем сервере в статистике панели управления виртуальным сервером.


Как видите хотя трафик был относительно небольшой, но огромное количество мелких UDP пакетов создавало загрузку (Load Average) этого сервера при минимальном количестве клиентов на уровне 30 единиц.

Отключение рекурсии - минимально необходимое действие. Для усиления защиты используйте методики описанные в статьях по ссылкам внизу. Но следует знать, что использование этих методик требует специальных знаний и опыта.

Бездумное повторение описанных действий может привести ваш сервер к неработоспособности.

DDoS-атаки с DNS-усилением: как это работает и как их остановить?

DDoS-атаки с DNS-усилением (или Амплификация DDoS-атаки с помощью DNS) — это один из популярных способов, используемый злоумышленниками для увеличения пропускную способности своих атак, которые они могут нацелить на потенциальные жертвы. Сам способ не является чем-то новым — первые упоминания о подобных атаках датируются еще серединой 2000-х годов. Но с тех пор мало что изменилось, кроме, пожалуй, количества и мощности таких атак (ведь если работает, зачем что-то менять?). И основная причина все та же: сотни тысяч неправильно сконфигурированных DNS-серверов во Всемирной Сети, принимающие и отвечающие на любой запрос от любого пользователя в Интернете.

DDoS-атаки с усилением

Представьте себе, что вы злоумышленник и управляете ботнетом, способным отправлять, предположим для примера, 100 Мбит/с трафика. Хотя этого может быть достаточно, чтобы на время парализовать работу некоторых сайтов, это довольно незначительный объем трафика в мире DDoS. Чтобы увеличить объем вашей атаки, вы можете попробовать добавить в свой ботнет больше скомпрометированных устройств. Это довольно сложная задача, требующая значительных затрат времени и ресурсов. Но есть и альтернативный вариант — вы можете найти способ превратить свои 100 Мбит/с во что-то гораздо большее. И помогут вам в этом невнимательность и откровенные ошибки, допущенные системными администраторами вполне легальных ресурсов.

Первоначальная атака усиления была известна как SMURF атака, которая включала в себя отправку злоумышленником ICMP-запросов (другими словами, ping-запросов) на сетевой широковещательный адрес маршрутизатора (то есть, формата X.X.X.255), настроенного для ретрансляции этого ICMP-запроса на все устройства, находящихся за этим маршрутизатором.

Злоумышленник подменяет источник ICMP-запроса на IP-адрес предполагаемой жертвы. Поскольку ICMP не включает квитирование установления связи, у устройства назначения нет способа проверить, является ли исходный IP-адрес легитимным. Маршрутизатор получает запрос и передает его всем находящимся за ним устройствам. Затем все эти устройства начинают отвечать на этот ping-запрос. Злоумышленник может усилить атаку в разы, в зависимости от того, сколько устройств находится за маршрутизатором (то есть, если за маршрутизатором расположено 5 устройств, то злоумышленник может усилить атаку в 5х раз, если 100 устройств, то в 100х раз, как это показано на рисунке 1).

Диаграмма, иллюстрирующая общий принцип осуществления злоумышленниками атаки усиления.


Рисунок 1. Диаграмма, иллюстрирующая общий принцип осуществления злоумышленниками атаки усиления.

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

Амплификация DDoS-атаки с помощью DNS

С точки зрения злоумышленника, существует два критерия для хорошего вектора атаки с усилением:

  1. Запрос может быть установлен с поддельным IP-адресом источника (например, через такой протокол, как ICMP или UDP, который не требует квитирования установления связи).
  2. Ответ на запрос должен быть значительно больше, чем сам запрос.

DNS — это основополагающая и повсеместная Интернет-платформа, которая практически идеально соответствует этим критериям и, соответственно, стала одним из крупнейших источников амплификации DDoS-атак.

Пример «крошечного» запроса, используемого злоумышленниками для осуществления усиления DDoS-атаки с помощью DNS.


Рисунок 2. Пример «крошечного» запроса, используемого злоумышленниками для осуществления усиления DDoS-атаки с помощью DNS.

Пример «гигантского» ответа, отправку которого на IP-адрес предполагаемой жертвы могут добиться злоумышленники при реализации DDoS-атаки с DNS-усилением.


Рисунок 3. Пример «гигантского» ответа, отправку которого на IP-адрес предполагаемой жертвы могут добиться злоумышленники при реализации DDoS-атаки с DNS-усилением.

Открытые преобразователи DNS: проклятие Интернета

Открытые преобразователи DNS: проклятие Интернета

Ключевой термин, используемый уже несколько раз в этой статье — «открытый преобразователь DNS». Лучшей практикой, если ваша компания использует рекурсивный преобразователь DNS, будет убедиться, что он отвечает только на запросы авторизованных клиентов. Другими словами, если вы используете рекурсивный DNS-сервер для своей компании, и IP-пространство вашей компании составляет, например, «5.5.5.0/24» (то есть, диапазон IP-адресов «5.5.5.0 - 5.5.5.255»), то ваш DNS-сервер должен отвечать только на запросы из этого диапазона IP-адресов. И, например, если запрос поступает из IP-адреса «9.9.9.9», то ваш DNS-сервер не должен отвечать вовсе.

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

Таким образом, если ваша компания использует открытый рекурсивный преобразователь DNS, вам следует его как можно скорее закрыть. Оставить его открытым автоматически будет означать, что вы продолжите оказывать пассивную помощь в многочисленных DDoS-атаках. Так, если вы используете наиболее распространенную открытую реализацию DNS-сервера BIND, то вы можете внести в свой файл конфигурации одно или несколько из ниже предлагаемых изменений, чтобы ограничить возможности киберпреступников, злоупотребляющих вашей сетью:

Читайте также: