DNS — что это такое и как работает

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

Что такое DNS?

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

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

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

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

Серверы DNS — что это?

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

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

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

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

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

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

Зоны DNS

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

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

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

Виды DNS-записей

Каждый тип решает свою задачу. Так, A-запись DNS сопоставляет домен с IPv4-адресом сервера. Если она отсутствует или настроена неверно, веб-ресурс не сможет открываться по своему доменному имени. MX-запись определяет, на какие почтовые серверы направлять письма для домена. Подробнее — в таблице. 

Тип записиНазначениеПример
AСопоставляет доменное имя с IPv4-адресом, переводит название сайта в числовой IP-адрес сервера.name.ru → 93.184.216.34 
AAAAАналог A-записи для привязки доменного имени к IPv6-адресу. Обычно используется одновременно с A-записью для поддержки обеих версий IP-протокола.name.ru → 2606:2800:220:1:248:1893:25c8:1946 
CNAMEСоздаёт псевдоним (алиас) для другого, канонического домена. Нельзя использовать для корневого домена — запрещено RFC 1034 (документом, который регламентирует требования к доменным именам). Узел с CNAME не должен одновременно содержать другие записи данных (A, AAAA, MX и т.д.). www.name.ru →name.ru  
MXОпределяет почтовые серверы, принимающие входящие письма для домена. Значение приоритета задаётся числом: чем оно ниже, тем выше приоритет сервера. Несколько MX дают резервирование. Указывают имя хоста (разрешается в IP через A/AAAA), не IP и не CNAME.name.ru → 10 mail.name.ru.  
TXTСлужит для хранения произвольных текстовых данных. Часто используется при подтверждении владения доменом, а также для публикации записей SPF, DKIM и DMARC. name.ru TXT «v=spf1 include:_spf.name.ru ~all» 
NSСодержит информацию об авторитативных DNS-серверах, которые обслуживают доменную зону и отвечают на запросы о её записях. Без корректных NS делегирование доменной зоны работать не будет. name.ru → ns1.example.ru  
SOAОбязательная запись для любой DNS-зоны. В ней указываются основные служебные параметры: первичный DNS-сервер, контактный адрес администратора зоны (в специальном формате DNS), серийный номер зоны для синхронизации изменений и временные интервалы (refresh, retry, expire). name.ru → ns1.name.ru  admin.name.ru 
SRVПрименяется для автоматического обнаружения сетевых сервисов и позволяет определить, на каком сервере доступна нужная служба, например, VoIP/SIP, XMPP, Kubernetes или Active Directory. В записи задаются приоритет, вес, номер порта и целевой узел. _sip._tcp.name.ru → 10 60 5060 sip.name.ru  
PTRНужен для обратного DNS-разрешения, связывает IP-адрес с доменным именем. Такие записи часто проверяются почтовыми системами при анализе сообщений на спам. Управление PTR-записью обычно находится у владельца IP — хостинг- или интернет-провайдера, а не у владельца домена. 164.34.0.192.in-addr.arpa → referrals.icann.org    

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

DNS — критически важный и уязвимый элемент инфраструктуры: через него проходит каждый запрос к сайту или сервису. Атаки на DNS делятся на две группы — те, что выводят сервер из строя (DDoS), и те, что подменяют ответы, перенаправляя пользователей на вредоносные ресурсы. Перечислим основные векторы атак и меры защиты 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-серверы и подставляет в качестве обратного адреса IP жертвы. Сервер отвечает пакетами в разы большего объёма. Коэффициент усиления может составить 28–54×: то есть на каждый байт запроса жертва получает в десятки раз больше трафика.

DNS Hijacking (угон DNS) — злоумышленник вмешивается в сам процесс разрешения запросов, чтобы перенаправить пользователя на вредоносный ресурс. Способов подмены несколько:

  • локальный перехват — замена локальных настроек на устройстве жертвы;
  • угон через роутер — злоумышленник получает доступ к панели управления маршрутизатором и подменяет DNS-серверы. Изменения затрагивают все устройства, подключённые к этой сети;
  • поддельные DNS-серверы — хакер компрометирует DNS-сервер и вносит изменения в его записи;
  • атака «человек посередине» (man-in-the-middle) — злоумышленник перехватывает обмен данными между устройством пользователя и DNS-сервером, подменяя ответы и перенаправляя запросы на нужные ему ресурсы.

Цель — получить контроль над трафиком: украсть логины и пароли, распространить вредоносное ПО, подменить легитимный сайт фишинговым.

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

Механика такая: получив запрос, резолвер сначала проверяет кэш, и если записи нет — обращается дальше по иерархии DNS. Пока он ждёт ответа от авторитетного сервера, злоумышленник засыпает его поддельными ответами. Если фальшивый ответ приходит раньше настоящего и совпадает по параметрам запроса, которые использует резолвер для проверки соответствия ответа. Поддельная запись попадает в кэш и выдаётся всем последующим запросам, пока не истечёт её TTL (заданное время хранения).

Масштаб угрозы зависит от того, какой резолвер пострадал: атака на корпоративный сервер затронет сотрудников компании, а на устройство провайдера или публичного сервиса — тысячи и даже миллионы пользователей. Для борьбы с атаками такого типа используется протокол DNSSEC. 

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

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

Проверьте нашу защиту в действии

Организуем бесплатный тест или пилот по вашему запросу

Написать

DNSSEC — защита целостности DNS

Что такое DNSSEC? Это расширение протокола DNS, которое добавляет к DNS-записям криптографическую подпись, чтобы исключить подмену ответов. По сути, механизм аутентификации: он подтверждает, что полученные данные действительно пришли от легитимного источника и не были изменены по пути.

Как это работает: администратор домена подписывает DNS-записи закрытым ключом, а DNS-резолвер проверяет цифровую подпись с использованием открытых ключей и цепочки доверия DNSSEC. Если данные не сходятся с подписью, ответ признаётся недостоверным и отклоняется. Доверие выстраивается по цепочке от корневой зоны через DS-записи и ключи каждой дочерней зоны. 

Главная задача DNSSEC — гарантировать подлинность ответов DNS. Поскольку каждая запись снабжена цифровой подписью, злоумышленник не может незаметно внедрить поддельный ответ: он не пройдёт проверку подписи и будет отброшен. Это защищает от таких угроз, как спуфинг (подмена ответов) и отравление кэша. 

Но есть и ограничения. DNSSEC не может:

  • нейтрализовать DDoS-атаку — его роль именно в обеспечении целостности и достоверности данных. Ответы DNSSEC значительно больше по размеру, поэтому внедрение протокола повышает вероятность успешных атак типа DNS Amplification (усиление DNS);
  • зашифровать информацию. Он только подписывает данные, но не обеспечивает их конфиденциальность. Запросы и ответы остаются открытыми — DNSSEC не скрывает, к каким доменам вы обращаетесь, и не предотвращает утечку этой информации через DNS. 

Проблему конфиденциальности решают протоколы, которые шифруют сам DNS-трафик:

  1. DNS over TLS (DoT) передаёт DNS-запросы внутри зашифрованного TLS-соединения, обычно по порту 853. Защищает трафик от прослушивания и модификации в канале связи между клиентом и резолвером, поддерживается как на стороне клиента, так и на стороне DNS-сервера.
  2. DNS over HTTPS (DoH) передаёт запросы внутри HTTPS-соединения. Они защищены от чтения и изменения третьими лицами. А поскольку запросы идут по порту 443, их трудно заблокировать, не заблокировав HTTPS целиком. DoH легко интегрируется в современные браузеры. DoH и DNSSEC не исключают, а дополняют друг друга: один меняет способ передачи запросов и обеспечивает их конфиденциальность, другой проверяет подлинность.

Инструменты мониторинга 

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

  • dnstop — консольная утилита, которая анализирует DNS-трафик в реальном времени. Она собирает статистику и выводит её в виде интерактивных таблиц: по IP источника и назначения, типам запросов, доменам верхнего и второго уровня, кодам ответов. Поддерживает фильтрацию по типу запросов (A, PTR), кодам ответов (NXDOMAIN, REFUSED) и доменным именам, умеет анализировать как трафик, так и сохранённые файлы. Полезна для мониторинга нагрузки на DNS-сервер и выявления аномалий — неизвестных доменов верхнего уровня, запросов к локальным устройствам, нетипичного поведения приложений;
  • packetbeat — более комплексное решение, распределённая система мониторинга сетевого трафика. Её агенты устанавливаются на серверах, захватывают сетевой трафик и анализируют протоколы прикладного уровня (HTTP, MySQL, Redis и др.). Packetbeat коррелирует сообщения в транзакции, показывая не просто поток пакетов, а взаимодействие процессов. Интегрируется с инструментами Elasticsearch и Logstash для хранения, поиска и анализа собранных данных. Полезен для мониторинга производительности приложений, выявления «узких мест» в обмене данными между сервисами и анализа ошибок и задержек на уровне протоколов.
Критерийdnstoppacketbeat
СпециализацияТолько DNSПрикладные протоколы (HTTP, MySQL и др.)
МасштабУзкоспециализированный инструментРаспределённая система
ВизуализацияИнтерактивные таблицы в консолиДашборды 
Сложность внедренияПростая установка и запускТребует настройки агентов, инструментов для сбора данных
Когда применятьМониторинг DNS-запросов на сервере или в сетиАнализ взаимодействия сервисов, мониторинг производительности

Для ручной проверки записей и отладки DNS используют утилиту dig, которая выводит детальную структуру ответа и значения TTL, а также утилиты nslookup и host для быстрой проверки прямого и обратного соответствия IP-адресов доменам. При работе с защищенными зонами незаменим drill — инструмент, специально предназначенный для отладки и валидации цепочек доверия DNSSEC.

Ответы на частые вопросы

Что такое DNS?

DNS (Domain Name System) — это распределённая иерархическая система разрешения имён, работающая по клиент-серверной модели. Она сопоставляет доменные имена с различными ресурсными записями (A, AAAA, MX, TXT и другими) через последовательные запросы к корневым, TLD- и авторитативным DNS-серверам. Наиболее известный сценарий — получение IP-адреса по имени сайта. Без этой системы приходилось бы вручную вводить числовые адреса для доступа к сервисам.

Зачем нужен DNS-сервер?

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

  • участвуют в распределении трафика, возвращают разные IP-адреса в зависимости от политики балансировки, географии или состояния сервисов;
  • помогают обнаружить сервисы в микросервисной архитектуре; 
  • обслуживают почту через MX-записи;
  • участвуют в безопасности (политики email, подтверждение владения доменом при выпуске SSL/TLS-сертификатов, фильтрация вредоносного контента);
  • кэшируют ранее разрешённые имена для ускорения повторных запросов;
  • обеспечивают отказоустойчивость за счёт перенаправления запросов на резервные узлы при сбоях.

Что произойдёт, если DNS-сервер недоступен?

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

Чем отличается рекурсивный DNS-резолвер от авторитативного?

Эти компоненты выполняют разные задачи в архитектуре DNS. Рекурсивный резолвер выступает посредником между пользователем и системой доменных имён. Получив запрос, он сначала ищет нужную информацию в собственном кэше. Если записи там нет, резолвер самостоятельно проходит весь путь разрешения имени: обращается к корневым DNS-серверам, затем к серверам доменных зон верхнего уровня (TLD) и далее к авторитативным серверам. После получения ответа он возвращает результат клиенту. Благодаря этому устройству или браузеру пользователя достаточно отправить всего один запрос. Дополнительно резолвер кэширует полученные данные на заданный в настройках срок, что ускоряет повторные обращения и уменьшает нагрузку на DNS-инфраструктуру.

Авторитативный DNS-сервер — источник достоверной информации о домене. В отличие от резолверов, которые хранят данные временно, он содержит актуальные записи доменной зоны: A, AAAA, MX, NS, CNAME, TXT, SOA и другие. Именно этот сервер предоставляет окончательный ответ на запросы, сообщая IP-адреса ресурсов, параметры почтовой инфраструктуры и прочие сведения о домене. Любые изменения в DNS-конфигурации сначала вносятся на авторитативные серверы и лишь затем распространяются по остальной системе. Для повышения отказоустойчивости и распределения нагрузки обычно используется несколько авторитативных серверов для одной доменной зоны.

Если кратко, то рекурсивный резолвер ищет ответ, а авторитативный сервер его хранит и выдаёт.

Как DDoS-атака на DNS влияет на работу сайта?

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

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

Задайте вопрос
нашим экспертам

Получить консультацию