Что такое служба DNS DNS (Domain Name System или система доменных имен) - простыми словами это телефонная книга Интернета. Первая версия протокола DNS была разработана Полом Мокапетрисом в 1983 году, а уже в 1987 году была опубликована спецификация протокола, дошедшая до наших дней. Благодаря этому событию Интернет получил возможность стать таким, каким мы знаем его сегодня - доступным, глобальным и динамичным. Стандартизация протокола DNS осуществляется через множество документов RFC (англ. Request for Comments, Рабочее предложение), публикуемых открытым международным сообществом IETF (Internet Engineering Task Force, Инженерный совет Интернета). Основные из них: RFC 1034 “Domain Names – Concepts and Facilities”, описывающий концептуальную модель системы доменных имен, определяющий функции DNS и принцип разделения ответственности между администраторами зон, передачи полномочий через NS-записи. RFC 1035 “Domain Names – Implementation and Specification”, описывающий базовые типы записей (о них поговорим далее) и протоколы обмена. Есть и другие - RFC 3596, RFC 2782, RFC 4025, RFC 4255, RFC 4408, RFC 6698, RFC 7208 и т.д., в которых происходит развитие протокола, введение новых типов записей и механизмов. Основные функции DNS, описанные в этих документах: Преобразование доменных имён в IP-адреса Обратное преобразование (Reverse DNS) Балансировка нагрузки Хранение дополнительной информации о домене Давайте рассмотрим эти функции более подробно. Мы привыкли оперировать понятными и легкими для запоминания доменными именами, такими, как mail.ru, neuroinform.ru или vk.com. Доменное имя — это легко запоминающийся, уникальный адрес веб-сайта или другого ресурса в интернете. Но сетевые устройства при передаче информации оперируют IP-адресами, такими как 90.156.232.4, 82.146.54.13 или 87.240.129.133, которые не так удобны для человека. Представьте, что вы хотите позвонить в компанию Нейроинформ. Вы знаете имя компании. Но операторы сотовой связи, управляя вызовами и SMS, работают с номерами телефонов, а не именами абонентов. Тогда вы открываете телефонную книгу и находите запись: «Нейроинформ - +7 (499) 322-23-12». Теперь можно звонить. Служба DNS выполняет в Интернете роль такой телефонной книги, только вместо имён людей и компаний - домены сайтов, а вместо телефонов - IP-адреса. Такое преобразование происходит совершенно незаметно и автоматически каждый раз, когда вы вводите имя сайта в адресную строку браузера. Для демонстрации такое преобразование можно сделать вручную с помощью утилиты nslookup, которая входит в стандартный набор инструментов Windows и большинства дистрибутивов Linux. Для того, чтобы воспользоваться утилитой в Windows выполните следующие шаги: Нажмите клавиши Win + R одновременно. Откроется диалоговое окно «Выполнить». В открывшемся окне введите «cmd» без кавычек и нажмите Enter. Откроется окно командной строки. Введите команду «nslookup neuroinform.ru» без кавычек. Вместо «neuroinform.ru» можете указать любое другое доменное имя. И нажмите Enter. В результате вы получите IP-адрес, соответствующий введённому доменному имени. Именно на этот адрес браузер обращается при загрузке страниц сайта. Преобразование доменного имени в IP-адрес называется разрешением имени. Из чего состоит глобальная система DNS-серверов Давайте разберемся как устроена и принцип работы этой глобальной телефонной книги, у которой утилита nslookup и браузер запрашивают адреса. Дело в том, что никто не хранит «весь интернет» у себя. Служба DNS — это иерархическая распределенная система, устроенная как дерево, в котором каждый участник владеет только своим кусочком информации. Допустим, вы хотите узнать IP-адрес сайта neuroinform.ru. Если сильно упрощать, то браузеру придется обратиться к трем DNS-серверам, которые последовательно будут ссылаться друг на друга: корневому – он знает у кого спрашивать о доменной зоне .ru (даст ссылку на нужный сервер доменной зоны) серверу доменных зон – знает у кого спрашивать о конкретном домене neuroinform.ru (даст ссылку на нужный авторитетный сервер) авторитетному DNS-серверу – вот он-то и знает конкретный IP-адрес сайта neuroinform.ru (даст искомый IP-адрес) Вся система DNS-серверов поделена на три уровня: 1. Корневые DNS-серверы Это самая первая инстанция, которая определяет, куда отправить запрос для дальнейшего разрешения имени в IP-адрес. В мире существует тринадцать корневых серверов DNS. Они управляются двенадцатью различными организациями, в число которых входят университеты, организации Министерства обороны США, некоммерческие ассоциации. При этом ни одна организация (коммерческая или правительственная) не контролирует всю систему. Эти серверы не знают IP-адреса сайтов. Все, что они знают – это адреса серверов, которые обслуживают конкретные доменные зоны (.ru, .com, и т.д.). 2. Серверы доменных зон Доменных зон существует великое множество: национальные (.ru, .РФ, .kz, .md, .tj, .tm, .tatar и .т.д.) международные (com, .net, .biz, .name, .org и т.д.) тематические (.дети, .fm, .art, .blog, .wiki и так далее) Полный список доступен в Википедии. Для каждой из них существуют серверы доменных зон. Они тоже не знают IP-адресов сайтов, но хранят ссылки на авторитетные серверы конкретных доменов. Например, администратором национальных доменов .RU и .РФ является Координационный центр доменов .RU/.РФ. Он ведет базу данных, в которой хранится информация о каждом домене в этих зонах и авторитетных DNS-серверах, которые обслуживают каждый из этих доменов. 3. Авторитетные DNS-серверы Именно здесь хранится окончательная информация о домене - его IP-адрес. Именно от него браузер получает финальный ответ при DNS-запросе. Авторитетные DNS-серверы могут администрировать: Регистраторы доменов. Это компании, которые управляют доменными именами, выступая связующим звеном между владельцем домена и администратором доменной зоны. Хостинг-провайдеры. Это компании, которые предоставляют дисковое пространство для размещения сайтов и другого контента в Интернете. Сами владельцы доменов. Крупные организации могут содержать свои собственные авторитетные серверы. Например, для neuroinform.ru авторитетный сервер выдаст: neuroinform.ru → 82.146.54.13 4. Рекурсивный сервер DNS В этой схеме мы не упомянули еще один сервер — это рекурсивный сервер DNS. Обычно он принадлежит интернет-провайдеру или может использоваться общественный, например, dns.google-8.8.8.8. Рекурсивный сервер принимает DNS-запросы от клиентов (например, веб-браузера или утилиты nslookup) и выступает в роли посредника, ища нужный IP-адрес в глобальной системе DNS-серверов, описанной выше. Для ускорения доступа, все DNS-серверы и даже клиентские компьютеры хранят временные копии часто запрашиваемых записей, чтобы не обращаться к другим серверам при повторных запросах. Это позволяет экономить время и трафик. Так рекурсивный сервер при каждом запросе проверяет свой кэш: может быть, недавно кто-то уже спрашивал этот же ресурс. Если запись есть — возвращает сразу. Если кэша нет — рекурсивный сервер начинает поиск сверху вниз начиная с корневых серверов. По разным оценкам, только от 18 до 32 % разрешений доменных имён приводит к обращению непосредственно к одному из корневых серверов, остальные запросы используют кэшированные DNS-записи. Как это работает Итак, итоговая схема работы системы DNS выглядит следующим образом: Вы ввели в адресную строку браузера «www.neuroinform.ru» Сначала ваш компьютер просматривает локальный кэш: может быть, IP уже известен Если в локальном кэше адрес не найден, он делает запрос на рекурсивный сервер DNS (провайдера или 8.8.8.8/1.1.1.1) Рекурсивный DNS-сервер смотрит свой локальный кэш: может быть, кто-то недавно уже запрашивал этот IP Если адрес не найден, он делает запрос на корневой сервер DNS: «Где находятся сервера для зоны .ru?» Корневой сервер отвечает: «Вот список серверов для зоны .ru» Рекурсивный DNS-сервер делает запрос на полученный сервер зоны .ru: «А где искать neuroinform.ru?» Сервер доменной зоны отвечает: «У него авторитетные сервера такие-то» Рекурсивный DNS делает запрос на авторитетный сервер: «Какой IP у www.neuroinform.ru?» Авторитетный сервер возвращает: «neuroinform.ru → 82.146.54.13» Рекурсивный DNS передает этот адрес браузеру Теперь браузер знает IP и соединяется с сайтом Рисунок 1. Схема DNS-запроса: Компьютер клиента → Рекурсивный DNS провайдера → Корневой сервер → Сервер доменной зоны → Авторитетный DNS сервер → IP-адрес Какую еще информацию хранит и передает служба DNS Оказалось, что служба DNS является очень удобным инструментом для того, чтобы сообщать важную информацию о домене, не ограничиваясь только его IP-адресом. Каждый параметр, который таким образом можно узнать о домене называется DNS-записью или ресурсной записью. Кто угодно может получить ресурсные записи, сделав запрос к службе DNS. Теоретически количество таких записей для каждого домена не ограничено. На практике лимит ограничивается тарифом провайдера и производительностью его серверов. Как говорилось ранее, типы DNS-записей стандартизируются в разных RFC, публикуемых IETF. Самый полный и актуальный источник опубликован в официальном реестре типов DNS-ресурсных записей, поддерживаемый IANA. Вот некоторые из них, наиболее часто использующиеся или интересные в контексте понимания DNS: А – самая популярная запись, которая связывает доменное имя с его IP-адресом. MX – указывает какие почтовые сервера обрабатывают электронные письма от имени домена. TXT – хранит произвольные текстовые данные. Его можно использовать для передачи любой текстовой информации. Например, передавать открытый ключ электронной подписи для проверки подлинности писем (запись DKIM), список IP-адресов серверов, которым разрешено отправлять почту от имени вашего домена (запись SPF) и политику обработки писем, не прошедших эти проверки (запись DMARC). Перечисленные записи служат для защиты от спама. CAA – указывает, какие центры сертификации могут выдавать SSL-сертификаты для домена, чтобы злоумышленник не мог выдать себя за вас, получив сертификат у ненадёжного или поддельного центра сертификации. LOC - используется для указания географического положения узла (широта, долгота, высота и радиус расположения ресурса). Может использоваться для выбора ближайшего сервера. SRV - используется для указания не только хоста, но и порта, где доступен сервис. И так далее. Все эти ресурсные записи могут быть запрошены и получены теми же механизмами, которые были описаны выше. Как видим, система DNS хранит и передает большое количество служебной информации, используемой в различных механизмах обеспечения защиты информации. Таким образом, система DNS-серверов играет большую роль в повышении безопасности сетей и информационных технологий в целом. Балансировка нагрузки с помощью DNS Система DNS-серверов используется не только для разрешения имён в IP-адреса и предоставления другой информации о доменах, но и активно применяется для оптимизации производительности, включая балансировку нагрузки, географическую маршрутизацию и ускорение доступа к контенту. Например, у сайта может быть несколько серверов и, соответственно, IP-адресов. Тогда DNS-сервер может отдавать разные IP-адреса разным пользователям, запросы распределяются между серверами, и никто из них не перегружается. Решать какой из IP-адресов следует сообщить клиенту DNS-сервер может разными способами: В самом простом случае DNS просто выдаёт разные IP-адреса по очереди - это так называемый Round-Robin DNS. Этот вариант применяется когда DNS-сервер ничего не знает о текущей нагрузке на сайт. Более продвинутый вариант - DNS с мониторингом (Health Checks), когда DNS-сервер периодически проверяет доступность серверов и если сервер перестает отвечать, DNS исключает его из ответов. Но даже тут DNS не видит реальную загрузку удаленного сервера (загрузку центрального процессора, использование оперативной памяти). Он только знает, доступен сервер или нет. Самый продвинутый вариант - DNS, который знает про нагрузку на удаленном сервере. Сам сервер отправляет в DNS-сервис статистику: «У меня 80% загрузки, у соседа — 30%». DNS-сервер на основе этих данных решает, какой IP выдать новому пользователю. Еще один способ ускорить загрузку сайта - это выбрать для передачи клиенту ближайший к нему сервер (GeoDNS). Как мы говорили, когда пользователь делает DNS-запрос, он идёт не напрямую с компьютера клиента, а через рекурсивный DNS-сервер (обычно это сервер провайдера или Google DNS). GeoDNS смотрит на IP-адрес этого рекурсивного сервера и по базе геолокации понимает, где он примерно находится и выбирает IP на основе этой информации. Это может быть: Ближайший IP-адрес по геолокации. Ближайший IP-адрес по сетевой близости (по длине маршрутом, задержке). Таким образом, пользователь попадает на ближайший сервер, а значит короче маршруты, меньше задержка (ping), меньше нагрузка на каналы связи, быстрее загрузка сайта. Безопасность DNS Когда протокол вводился в эксплуатацию в 1987 году, приоритетным было обеспечение скорости и надежности передачи информации. Вопросы информационной безопасности тогда не стояли так остро, как сегодня. Иногда это приводит к ряду проблем. Со временем злоумышленники придумали множество различных атак на DNS-серверы для достижения своих целей. Одна из наиболее опасных - DNS Spoofing / Cache Poisoning, когда злоумышленник с помощью отправки на DNS-сервер специальных пакетов подменяет легальную запись в его кэше на нужную злоумышленнику. В результате пользователи получат неправильный IP-адрес сайта и будут перенаправить на фальшивый сайт. А дальше этот сайт может собирать личную информацию пользователей, подменять реквизиты платежей и т.д. Другой вид атак на DNS-серверы - это атаки на отказ в обслуживании (DDoS). Они реализуются путем перегрузки DNS-серверов огромным количеством запросов и могут быть реализованы разными механизмами, например: UDP Flood - атака спам-запросами на порт 53/UDP. DNS Amplification (Reflection) - атака с поддельным IP-адресом, использующая открытые рекурсивные DNS-серверы для увеличения трафика. NXDOMAIN Attack - атака, при которой злоумышленник генерирует большое количество несуществующих доменных имён, чтобы перегрузить кэш и ресурсы DNS-сервера. В результате пользователи на какое-то время теряют возможность обращаться к ресурсам в интернете по из доменным именам. Man-in-the-Middle (MITM) на DNS - классическая атака “человек посередине”, суть которой заключается в перехвате и подмене DNS-трафика между клиентом и сервером. Это далеко не полный список. И регулярно появляются новые техники атак на DNS. Для борьбы с этими угрозами в 1997 году введена в действие первая версия набора расширений протокола DNS, описанная в RFC 2065. Новый набор расширений получил название DNSSEC. Он также описывается целой серией RFC и постоянно совершенствуется. Принцип работы DNSSEC основан на использовании цифровых подписей при передаче ресурсных записей. Каждая зона DNS подписывает свои данные с помощью закрытого ключа. Эти подписи передаются вместе с ответом DNS-сервера. Клиент проверяет подлинность и целостность данных, используя публичный ключ зоны DNS, от которой получены данные. При этом достоверность ключа подтверждается через цепочку доверия от проверяемой зоны к родительской, вплоть до корневой зоны, чей ключ является доверенным началом цепочки. Таким образом, DNSSEC гарантирует, что полученные DNS-данные не были изменены и действительно исходят от авторитетного источника. Вывод Итак, мы простыми словами объяснили, что такое DNS-серверы, какие бывают и какие задачи решают: благодаря системе доменных имён интернет становится удобным и понятным: вместо длинных числовых адресов мы используем привычные названия сайтов. Также мы поговорили о том, какую еще информацию может хранить и предоставлять служба DNS. Это позволяет решать вопросы защиты информации и дальше развивать информационные технологии. Понимая основы работы DNS, вы можете лучше разбираться в том, как устроен интернет «под капотом» и почему корректная работа DNS важна для стабильности и безопасности онлайн-сервисов и комфортной работы пользователей. Автоматическая киберзащита для вашего бизнеса Регулярный контроль чувствительных данных компании, понятные отчёты и экспертная поддержка с точными рекомендациями. запросить демо Советы по ИБ на практике Поделиться