База знанийПротоколыDNS (Domain Name System)

DNS (Domain Name System)

DNS (Domain Name System) — система, хранящая информацию о доменах Интернета. Ключевая ее функция ― предоставление IP-адреса узла или ресурса по его полному доменному имени.

Оглавление:

Что это такое

Каждый узел Интернета, а также сетей, построенных на его стандартах, имеет свой собственный уникальный сетевой адрес, состоящий из четырех байт (в версии протокола IPv4) или 16 байт (в версии протокола IPv6). В символьном виде его можно представить, например, так: 192.124.0.8 (IPv4) или так: 2001:0fb6:89ac:0000:0000:8a4b:0330:8634 (IPv6). Понять, о каком именно узле сети из такой вот нотации бывает непросто, поэтому в Интернете принято обозначать узлы доменными именами, например, www.stormwall.pro. Полное доменное имя — это, по сути, синоним IP-адреса, более «человеческое» название, понятное многим пользователям.

Доменное имя выглядит как последовательность доменов (символьных имен областей Интернета, выстроенных в иерархическую систему), с точками в качестве разделителей. Например, domain1 в доменном имени domain3.domain2.domain1 — это домен самого верхнего уровня иерархии, domain2 — домен второго уровня, ddomain3 — домен третьего уровня. Аналогичным образом в доменном имени www.stormwall.pro домен pro — это домен самого верхнего уровня иерархии, stormwall — домен второго уровня, www — домен третьего уровня.

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

Серверы DNS

Работу DNS обеспечивают множество географически распределенных программных серверов, выстроенных в иерархическую (древовидную) структуру.

Система работает примерно так. Браузер или иная программа, взаимодействующая с Интернетом, отправляет запрос к «ближайшему» DNS-серверу, чтобы он по доменному имени нашел IP-адрес нужного узла. Если этот DNS-сервер «знает» адрес, то возвращает его в качестве ответа на запрос. Если же DNS-сервер не может найти адрес в своей базе данных, то отправляет запрос на вышестоящий по иерархии сервер либо на корневой. Вышестоящий сервер рассматривает запрос и поступает аналогичным образом: либо находит у себя и отправляет в качестве ответа IP-адрес искомого узла, либо передает запрос на корневой DNS-сервер, который начинает поиск на DNS-серверах, нижестоящих в иерархии доменов. Если IP-адрес удается найти, то он передается по цепочке тому DNS-серверу, с которого начался поиск, и тот отправляет ответ программе, которая сформулировала первоначальный запрос. Если поиск оказывается неудачным, то в программу возвращается сообщение об ошибке.

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

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

Еще один важный вариант запроса — на добавление или изменение информации, содержащейся в DNS. Например, чтобы сайт с новым доменным именем (что-то вроде newservername.com) заработал, необходимо зарегистрировать его, сделать необходимые настройки и указать IP-адреса DNS-серверов, которые «знают», где находится новый сайт. Чтобы информация о новом доменном имени стала известна всему Интернету и чтобы новый сайт заработал, потребуется некоторое время — обычно 24 часа

Очень часто владельцы сайтов предпочитают не держать DNS-серверы у себя, а размещать их на сторонних хостинговых площадках — это позволяет повысить доступность сайтов. Чтобы свести риски к минимуму, владельцы сайтов пользуются услугами нескольких хостинг-провайдеров: если вдруг DNS-сервер на одной из площадок окажется недоступен, путь к сайту «укажут» DNS-серверы, расположенные на других площадках.

Отметим, что более продвинутые провайдеры услуг хостинга DNS-серверов, такие как StormWall, помимо собственно хостинга, предоставляют также сервисы защиты DNS от атак.

Зоны DNS

Всё пространство имен DNS поделено на зоны, ответственность за которые несут те или иные DNS-серверы или группы DNS-серверов. Ответственные (или уполномоченные) серверы DNS могут выполнять запросы внутри своих зон. Если представить всю структуру DNS как дерево доменных имен, то зона — это, по сути, часть этого дерева, которая хранится на ответственном DNS-сервере.

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

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

Защита DNS-серверов от атак

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

Основное следствие DDoS-атак на DNS-серверы — их недоступность для пользователей. И поскольку DNS-серверы перестают обслуживать полезные внешние запросы, то и сайты, находящиеся «за» ними, тоже становятся недоступными. В этом случае владельцы несут потери как материальные (недополученная прибыль, иски недовольных клиентов, снижение их лояльности и отток), так и репутационные (волна негатива в СМИ и соцсетях). К сожалению, отражение DDoS-атак на DNS-серверы оказывается весьма непростым из-за того, что многие атаки проводятся посредством протокола UDP, имеющего немало уязвимостей.

Наиболее распространенными видами DDoS-атак на серверы DNS являются следующие:

  • Простой DNS-флуд — генерация мощного потока запросов к DNS-серверу с целью создания чрезмерной нагрузки на DNS-сервер. Как правило, для создания достаточного для успешной атаки потока хватает относительно небольшой бот-сети.
  • DNS-атака с отражением (DNS Reflection) основана на том, что ответ на DNS-запрос оказывается в разы длиннее самого запроса. Для атаки на DNS-сервер, намеченный в качестве цели, на один или несколько других DNS-серверов высылаются DNS-запросы, в которых вместо IP-адреса источника указывается IP-адрес жертвы. В результате на нее обрушивается поток DNS-ответов, на анализ которых тратится значительная часть производительности сервера-жертвы — вплоть до полного отказа в обслуживании.
  • DNS-амплификация или на DNS-атака с усилением — разновидность DNS-атак с отражением, использующая уязвимости серверов DNS. Путем ряда манипуляций с использованием DNS-серверов, использующих рекурсивную обработку запросов, длина запроса увеличивается в 30-60 и более раз. Таким образом, злоумышленник, применяющий сеть ботов, отправляющих ложные запросы к рекурсивным серверам, получает возможность создать очень мощный поток ложных запросов к DNS-серверу — жертве.

В целях минимизации рисков хакерских атак на DNS и повышения целостности и достоверности хранимых в ней данных в серверы DNS встраиваются средства защиты и безопасности: DNSSEC, TSIG, DANE и др.

Кроме того, рекомендуется предпринять следующие шаги:

  • Убедиться, что DNS-серверы работают на выделенных физических серверах достаточной мощности. Желательно разместить их в разных дата-центрах, принадлежащих к разным сегментам сети и имеющим несколько маршрутов.
  • Обеспечить регулярное обновление программного обеспечения DNS-серверов.
  • Ограничить доступ к серверам DNS с правами администратора узкому кругу лиц, причем только изнутри сети или через VPN.
  • «Закрыть» на сервере обработку неиспользуемых сетевых протоколов и сервисов.
  • Отключить рекурсивную обработку запросов на DNS-серверах.
  • Запретить динамические обновления зон DNS.
  • Путем настроек обеспечить защиту от спуфинга.
  • Отменить дополнительный поиск IP-адресов серверов DNS.
  • Отключить перенос доменных зон на ваши DNS-серверы.
  • Запретить и отключить все прочие функции DNS-серверов, которые в данный момент не используются.
  • Обеспечить регулярное сканирование DNS-серверов на наличие известных уязвимостей.
  • Заранее подключить сервис предварительной фильтрации трафика, направляемого на DNS-серверы, с автоматическим включением отражения атак на DNS.

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