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-серверу, чтобы он по доменному имени нашел 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-серверы.
В зависимости от того, какой поиск может вестись внутри зоны (IP-адреса по доменному имени, или, наоборот, доменного имени по IP-адресу) принято разделять зоны прямого просмотра и зоны обратного просмотра.
Серверы DNS нередко подвергаются атакам, их результаты оказываются достаточно болезненными для владельцев интернет-ресурсов. Так, атаки на уязвимости DNS-серверов могут привести не только к потере работоспособности, но и искажению хранящейся на них информации, например, подмене прежних IP-адресов на новые (DNS-спуфинг), вследствие чего пользователи вместо нужного им сайта будут попадать на контролируемый злоумышленниками ресурс.
Основное следствие DDoS-атак на DNS-серверы — их недоступность для пользователей. И поскольку DNS-серверы перестают обслуживать полезные внешние запросы, то и сайты, находящиеся «за» ними, тоже становятся недоступными. В этом случае владельцы несут потери как материальные (недополученная прибыль, иски недовольных клиентов, снижение их лояльности и отток), так и репутационные (волна негатива в СМИ и соцсетях). К сожалению, отражение DDoS-атак на DNS-серверы оказывается весьма непростым из-за того, что многие атаки проводятся посредством протокола UDP, имеющего немало уязвимостей.
Наиболее распространенными видами DDoS-атак на серверы DNS являются следующие:
В целях минимизации рисков хакерских атак на DNS и повышения целостности и достоверности хранимых в ней данных в серверы DNS встраиваются средства защиты и безопасности: DNSSEC, TSIG, DANE и др.
Кроме того, рекомендуется предпринять следующие шаги:
Чтобы мощная DDoS-атака на DNS-серверы не застала вас врасплох, следует заранее подготовить план ваших действий после ее начала, а также план аварийного восстановления в случае отказа ваших серверов DNS в обслуживании. Разумеется, необходимо обеспечить также регулярные тренировки действий ИТ-специалистов при начале атак на DNS-серверы.