Устройство DNS сервера

Устройство DNS сервера

Устройство DNS

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

Руководство представляет из себя три главы:

  1. Как мы находим ресурсы в Интернете: URL-адреса, IP-адреса и доменные имена
  2. Определение доменных имен DNS сервером
  3. Проблемы с DNS серверами

Примечание: В данной статье, сознательно не поднимались такие вопросы, как построение DNS серверов для локальных сетей, определения зон и делегаций, а так же разновидности DoS и DDoS атак (отказ в обслуживании), так как основной целью данного материала являются: познакомить вас с основами DNS, дать ответы на большинство вопросов и предупредить о возможных проблемах.

 

1. Как мы находим ресурсы в Интернете: URL-адреса, IP-адреса и доменные имена

Система интернет имен

Интернет использует имена, адреса и маршруты для идентификации и поиска ресурсов:

  • Названия указывают, что вы ищете 
  • Адреса указывают, где искать ресурс
  • Маршруты показывают, как туда попасть

Существует две основные системы интернет имен:

  • Цифровая IP-адресация. Интернет протокол (IP) является своеобразным эталоном для установки связей и соединений в Интернете. IP-адреса идентифицируют каждое устройство в сети. Кроме того, IP-адреса так же используются и в других сетях, таких как частные или домашние сети. Сноска: Именно по этой причине, существуют выделенные диапазоны IP-адресов, которые не присваиваются ресурсам в Интернете.
  • Буквенно-цифровая система доменных имен, Domain Name System (DNS). DNS была разработана как простая и легко запоминаемая замена IP-адресации. Тем не менее, доменные имена используют IP-адреса, поскольку весь обмен в сети происходит по IP-адресам. В некотором смысле, доменное имя - это этикетка для IP-адреса

Примечание: Между этими системами интернет имен нет жесткой привязки один к одному. Так что, одному IP-адресу может соответствовать несколько доменных имен (например, простые сайты на хостингах). И так же, одному доменному имени может соответствовать несколько IP-адресов (например, любые интернет-гиганты, которые физически не смогли бы обслуживать миллионы пользователей через один компьютер).

Когда вы бродите в интернете и вводите уникальный идентификатор ресурса, он же Uniform Resource Locator (URL), вы, как правило, используете одну из этих двух систем имен, как показано в примере ниже:

 URL с доменным именемURL с IP-адресом
URL http://www.ida-freewares.ru http://185.15.208.14
URL схема http http
URL разделитель : :

Запасной разделитель
Пропустите его
и ваш браузер сам
добавит его.

// //
Имя хоста www.ida-freewares.ru 185.15.208.14

URL, как правило, идентифицирует не только адрес назначения, но и механизм, который необходимо использовать. Поэтому URL схему еще часто называют протоколом, хотя в реальности это не так. Происходит это потому, что схема, как правило, соответствует названию используемого протокола. Например, URL схема "http" обычно, но не всегда использует протокол передачи HyperText Transfer Protocol (HTTP). Тем не менее, схема - это выбранный механизм, а не протокол.

Система доменных имен, Domain Name System (DNS)

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

Примечание: В интернете существует много различных сайтов для определения IP по доменному имени, таких как www.whois-service.ru. Например, доменному имени ida-freewares.ru сейчас соответствует IP-адрес 185.15.208.14

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

Для примера, воспользуемся доменом сайта - www.ida-freewares.ru. Чтобы найти его в дереве DNS, необходимо разделять уровни, читая домен справа налево. Обратите внимание, что разделителем уровня является символ "." (точка):

Корневой домен

Он не имеет никакого названия и поэтому пуст

             

ru это домен верхнего уровня.

Поддомен корневого домена.

aero biz ... ru ... travel xxx

ida-freewares это домен 2го уровня

Поддомен ru.

    ... ida-freewares ...    

www это псевдоним в FQDN для ida-freewares.ru

- эти термины будут рассмотрены ниже.

    ... www ...    

Полностью определенные имена доменов, Fully Qualified Domain Names (FQDN)

Доменное имя, которое можно определить одним конкретным узлом дерева DNS называют полностью определенным именем домена или полным доменным именем (FQDN). Другими словами, полное доменное имя точно идентифицируется одним DNS именем. Как и говорилось ранее, одно полное доменное имя (FQDN) не означает наличие только одного IP-адреса. Каждый FQDN может иметь несколько IP-адресов. Например, всем известные социальные сети имеют одно полное доменное имя, но располагаются на множестве серверов со своими IP-адресами. Верно и обратное. Один IP-адрес может соответствовать множеству доменных имен. Например, на серверах хостингов с несколькими IP-адресами, обычно, располагаются множество сайтов со своими FQDN.

Типы DNS записей

Полное доменное имя (FQDN) представляет собой основной тип записи для разрешения DNS запросов. В IPv4, хост (компьютер) обозначается буквой "A" в IPv6 с помощью "AAAA". Эти записи можно найти в любом конфигурационном файле, определяющем IP-адреса для DNS имен списка сайтов. Например, для ida-freewares.ru сейчас в записи "A" указывается IP-адрес 185.15.208.14.

Другие типы DNS записей расширяют функции DNS серверов. Для их просмотра, вы можете использовать сервисы, по типу whois (dns watch и т.п.). Вот, наиболее часто встречаемые записи:

  • "CNAME" (каноническое имя) - тип dns записи, который позволяет задавать псевдонимы и указывать на какие реальные имена они должны ссылаться. Например, ftp.ida-freewares.ru может ссылаться на ida-freewares.ru. Эта запись помогает облегчить настройку. Сегодня, отдельного ftp-сервера у сайта нет, но завтра он может появится. Легче сразу указывать будущие настройки. 
  • "LOC" записи указывают на географическое положение (широта и долгота) компьютера с данным DNS именем. Данная запись в основном полезна для больших организаций, которым необходимо планировать обмен данными между серверами. Сноска: обычно, именно по этому параметру определяется местоположение компьютера в различных онлайн сервисах.
  • "MX" (почтовый трансфер) - запись, которая указывает имя почтового(ых) сервера(ов) для данного домена, а так же их приоритет (от 0 - высокий приоритет до 65535 - низкий приоритет), при обработке писем. Эта запись позволяет DNS-серверам определять, через какие домены должна проходить почта. Например, в большинстве случаев для сайтов используется поддомен mail. 
  • "NS" (сервера имен) - запись, которая указывает полномочные сервера доменных имен (DNS-сервера). Другими словами, в данных записях хранятся имена серверов, которые обслуживают dns записи данного домена.
  • "PTR" (обратная зона) - запись, которая определят обратное соответствие между IP-адресом и его доменным именем. Запись применяется в тех случаях, когда необходимо по IP-адресу определять нужный сервер. Часто применяется для борьбы со спамом, при проверке доменов, с которых была отправлена почта. 

 

2. Определение доменных имен DNS сервером

DNS сервер

DNS сервер, или более корректно сервер DNS имен, - это компьютер, зарегистрированный и присоединенный к системе доменных имен (DNS). Эта система имеет высокую степень децентрализации иерархии, и в настоящее время существует более 240 серверов корневого уровня, которые используются для доступа к полномочным серверам DNS имен верхнего уровня. По данным статистики, сегодня существует более 20 миллионов DNS серверов, которые поддерживают более 220 миллионов доменных имен.

Существует два основных типа DNS серверов:

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

Разрешающий сервер имен позволяет определить IP-адрес для домена. Говоря техническим языком, эти сервера находят решение на DNS запрос. Большинство разрешающих серверов имен используют два метода для разрешения DNS запросов:

  • Рекурсивные сервера имен используют повторяющийся алгоритм, который проходится по дереву DNS и определяет полномочный сервер имен для доменного имени. Пример выполнения алгоритма будет показан в конце этой главы.
  • Кэширующие сервера имен ищут IP-адрес в их кэшированной базе данных доменных имен. Этот метод является более эффективным, поскольку DNS серверу не приходится каждый раз искать полномочный сервер имен. На таком сервере, каждое доменное имя хранится определенных срок (параметр TTL). Когда срок жизни кэша истекает, кэширующий сервер будет заново искать полномочный сервер. Сноска: для различных небольших проектов, обычно, данный срок составляет секунды или часы. В некоторых случаях срок кэширования составляет дни или недели.

Существует две категории DNS серверов, о которых стоит знать:

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

IPv6 DNS-серверы встречаются сравнительно редко, но они будут постепенно замещать IPv4 сервера. Переход может занять годы, десятилетия, столетия - это не суть важно. Адреса постепенно заканчиваются, поэтому IPv6 или другой протокол, но он заменит IPv4. Пример адреса IPv6: 1003:8bd0:3a85:0000:0000:e2a8:0730:4337. Согласитесь, что возможных комбинаций несколько больше, чем у ed:a0:02:05 (237.160.2.5).

 

DNS на вашем компьютере 

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

  • Системный DNS сервер (он же локальный DNS сервер) представляет собой обычный DNS сервер, который использует ваша система. Обычно, таких серверов два: первичный и альтернативный (вторичный). Они указываются в настройках IP сетевого адаптера или получаются вместе с адресом в сетях с DHCP. Альтернативный сервер используется только тогда, когда первичный перестает отвечать на запросы.
  • Операционная система так же имеет и собственный разрешающий сервер с кэшем DNS имен. Большинство DNS запросов кэшируются на определенный срок. Это позволяет системе продолжать использовать интернет, даже в случае если DNS сервера не доступны.
  • Каждый браузер на вашем компьютере так же хранит собственный кэш DNS имен.
  • Файл hosts в Windows представляет собой обычный текстовый файл, в котором можно определить IP-адреса для различных доменов. Кроме FQDN доменов, в данный файл так же можно включать и псевдонимы. Чаще всего, файл hosts используется в двух случаях. Во-первых, для блокировки вредоносных сайтов пользователем. Для этого опасный сайт попросту перенаправляется либо на несуществующий адрес, либо на безобидный. Во-вторых, как бы это не звучало, но файл hosts активно используется вирусами и злоумышленниками для подмены адресов.

 

Пример определения DNS (разрешения доменных имен)

Теперь, после того, как вы узнали особенности поиска и базовое устройство DNS серверов, можно привести пример того, как система будет искать доменное имя www.ida-freewares.ru, при условии, что доменное имя не находится в кэше DNS имен. Всего в рамках определения запроса отсылалось и обрабатывалось восемь DNS запросов. 

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

1. Системный DNS клиент посылает запрос к системному DNS серверу, чтобы найти запись "А" для www.ida-freewares.ru 

       

Системный DNS сервер получает адрес DNS сервера корневого уровня из своего файла конфигурации

       

2. Системный DNS сервер отправляет запрос серверу корневого уровня с просьбой получить адрес DNS сервера для домена верхнего уровня ru 

       

3. Корневой сервер возвращает адрес DNS сервера для домена ru 

aero biz ... ru

4. Системный сервер отправляет запрос серверу домена ru на получение адреса DNS сервера для домена ida-freewares.ru

       

5. Сервер домена ru возвращает адрес 91.224.140.100 для полномочного DNS сервера ns3.allns.net

... ida-freewares

6. Системный DNS сервер отправляет запрос ns3.allns.net для получения адреса www.ida-freewares.ru 

       

7. DNS-сервер ns3.allns.net найдет псевдоним CNAME для www.ida-freewares.ru и вернет запись CNAME (в ней определялся www)

    ... www

Системный DNS сервер теперь отправит другой запрос на получение записи "A" для канонического имени (CNAME псевдонима) ida-freewares.ru (уже без www).

Примечание: Если бы исходный запрос содержал бы каноническое имя, то данного запроса бы не было.

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

       

8. Системный DNS сервер отправляет запрос ns3.allns.net для доменного имени ida-freewares.ru

       

9. Сервер DNS ns3.allns.net найдет запись "А" для ida-freewares.ru и вернет ее. 

       

10. Системный DNS сервер передаст запись "A" для ida-freewares.ru и передаст ее системному DNS клиенту

       

Теперь, браузер сможет подключиться к ida-freewares.ru 

       
         

 

3. Проблемы с DNS серверами

Основные проблемы

Глобальные DNS сервера 

В использовании глобальных серверов, таких как Google или OpenDNS, есть свои преимущества:

  • Скорость: Они имеют огромные базы данных с кэшами, что означает быструю скорость нахождения доменного имени.
  • Надежность: Глобальные DNS сервера меньше подвержены локальным катастрофам потому, что они имеют множество различных серверов, расположенных в разных дата центрах по всему миру.
  • Безопасность: Огромные массивы данных требуют обеспечения высокого уровня безопасности.

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

Сети доставки дистрибуции, Content Distribution Networks (CDN)

CDN располагают сетевые ресурсы рядом с людьми, которые будут их использовать. А если быть точнее, то рядом с DNS серверами. Такая организация позволяет быстро доставить контент пользователю и минимизировать трафик. Зачем скачивать что-либо с северного полюса, если вы находитесь в Африке? CDN применяют многие крупные веб-сайты для обеспечения отличного качества обслуживания и высокой скорости. 

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

Публичные DNS сервера всегда могут стать частными.

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

Вторичные или альтернативные DNS сервера зачастую медленнее 

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

Примечание: Некоторые поставщики услуг DNS предоставляют свои услуги сторонним организациям. Часто такие услуги немного медленнее. Пример, UltraDNS, которая предоставляет Comodo Secure DNS.

 

Уязвимости и угрозы DNS

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

Примечание: Как минимум, публичные сети могут получать данные с источников, добавленных неизвестными пользователями.

Подмена доменного имени или IP-адреса

Существует ряд программных средств, которые позволяют подменять IP-адреса для маскировки реального IP-адреса. При некоторых условиях, это можно сделать даже без каких-либо программ. То же самое происходит и с DNS. Такая атака называется подменой DNS или "отправление" кэша. В результате ее выполнения, в базе кэша DNS сервера будут хранится поддельные адреса для доменных имен. И эти "отравленные данные" будут возвращаться в ответ на DNS запросы пользователей.

Чтобы проверить DNS сервер на возможность "отравления кэша", вы можете использовать специальный тест.

Маскировка адреса под внутренний адрес сети

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

Перенаправление, при обращении к несуществующему доменному имени

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

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

  • Исправление опечаток. Например, "gogole.ru" будет переправлен на "google.ru"
  • Фильтрация и блокировка вредоносных ресурсов, при выдаче поддельного IP адреса, как это делает OpenDNS

Отсутствие DNSSEC аутентификации 

Изначально DNS не предусматривал никаких функций безопасности. Поэтому со временем появился Domain Name System Security Extensions (DNSSEC), использующий криптографию с открытым ключом для защиты DNS данных. Тем не менее, многие DNS сервера не имеют данного расширения, и поэтому более уязвимы к таким атакам, как "отравление кэша". 

Если вам интересно узнать еще больше подробностей о DNS, то вот материалы, которые могут пригодится:

Теперь, вы знаете о базовом устройстве DNS серверов, а так же об угрозах и проблемах, связанных с DNS.

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Рекомендуемые

Комментарии / отзывы  

0 # Мифодий 11.10.2017 01:19
Шикарнейшая статья!
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)