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-адреса, более «человеческое» название, понятное многим пользователям.
Доменное имя выглядит как последовательность доменов (символьных имен областей Интернета, выстроенных в иерархическую систему), с точками в качестве разделителей. Например, 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 от атак.
Узнайте подробнее об услуге «Хостинг с защитой от DDoS-атак».
Зоны 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-серверы.