Безопасность DNS

В иерархической структуре Интернета сервера DNS можно назвать нервными узлами, от "здоровья" которых зависит существование Сети. Что же может угрожать их "здоровью"? Какие события могут вывести сервер DNS из строя? Поиск ответов на эти вопросы надо начинать с выяснения, какие задачи выполняют DNS-сервера. Если не вдаваться в технические тонкости, то можно дать следующий ответ: основной задачей DNS-сервера является трансляция доменных имен в IP-адреса и обратно. А это означает, что сервера должны получать запросы, обрабатывать их и отсылать ответы. На серверах должна храниться информация о поддерживаемых ими сетевых адресах, они должны обмениваться запросами с серверами более высокого уровня, если не в состоянии дать ответ на запрос самостоятельно. Пожалуй, этого достаточно, чтобы говорить о том, какие опасности могут угрожать серверам.

Опасность первая - вирусные атаки. Проникновение вируса на DNS-сервер может привести к различным последствиям: это и утечка информации, и ее уничтожение, и выведение из строя программного обеспечения, и просто блокировка сервера вследствие невозможности обработать все поступающие запросы из-за превышения их количества по отношению к его пропускной способности. Ярким примером последнего варианта может служить атака на корневые DNS-сервера, предпринятая в октябре 2002 года. В результате ее были парализованы 7 из 13 корневых серверов, а работоспособность Сети оказалась под угрозой.

Случившаяся атака имела форму наводнения данными: 13 серверов, содержащих информацию об именах доменов верхнего уровня - таких, как .com, .org и .uk, оказались наводнены пакетами протокола управления интернет-сообщениями (ICMP). Пакеты ICMP переносят данные сообщений об ошибках или контроля целостности сети, как, например, это делают общеупотребляемые пакеты ping. Поток таких данных может заблокировать доступ к серверам, переполнив узкие места сетевой инфраструктуры, что мешает нормальным данным достигать места назначения. После отражения этой атаки эксперты заявили, что если бы эта атака продолжалась более 10 часов, то пользователи Сети почувствовали бы существенное замедление ее реакции, а затем и остановку обработки запросов (однако в RFC-2010 сказано совершенно иначе, а именно: "система доменных имен, как доказывает практика, является настолько надежной, что мы уверены в том, что отключение (по крайней мере временное) большинства корневых серверов не должно заметно сказаться на работе Интернета").

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

О пределе устойчивости DNS-серверов очень конкретно говорится в уже упоминавшемся RFC-2010: "В любой момент каждый сервер обязан быть способен обработать поток запросов на данные из корневой зоны, который втрое превышает зафиксированный пиковый поток таких запросов на наиболее загруженном сервере при текущих нормальных условиях. Обычно эта величина выражается в запросах в секунду. Это требование обеспечивает непрерывную работу службы корневых имен даже в случае, когда две трети всех серверов будут отключены намеренно, или в результате несчастного случая либо по злому умыслу".

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

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

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

Можно ли защититься от удаленных атак? Конечно, абсолютной защиты пока не существует, но уменьшить возможные последствия от атак можно. Один из вариантов защиты DNS-серверов состоит в реализации обеспечения аутентификации и целостности информации, содержащейся в DNS. Для решения этой проблемы в масштабе Интернета в систему DNS вводятся расширения, называемые DNSSEC и описанные в RFC-2535, а также в RFC-2536, 2537, 2541, 3008. Основная идея DNSSEC состоит в использовании асимметричного шифрования для присоединения цифровой подписи к передаваемым данным. Для этого IETF создала рабочую группу DNSSEC Working Group. Использование DNSSEC не требует от получателя знания секретного ключа, что позволяет обойти неразрешимую задачу распространения секретного ключа по всем возможным DNS-серверам глобальной сети и решить проблему обеспечения достоверности передачи DNS-данных в масштабе Интернета. Платой за это является существенное (в несколько раз) увеличение базы данных каждой зоны и повышенные требования к процессорной мощности DNS-серверов, которая требуется для выполнения операций асимметричного шифрования и дешифрации.

Другой вариант защиты - использование специальных программно-аппаратных средств. К ним относятся:

программно-аппаратные шифраторы сетевого трафика;

методика Firewall, реализуемая на базе программно-аппаратных средств;

защищенные сетевые криптопротоколы;

программные средства обнаружения атак (IDS - Intrusion Detection Systems);

программные средства анализа защищенности;

защищенные сетевые ОС.

Программно-аппаратные средства позволяют в достаточной степени защитить сервера от внешних атак. Использование методики Firewall обеспечивает решение таких вопросов, как фильтрация сетевого трафика, создание приватных сетей с виртуальными IP-адресами, создание специальных proxy-схем с дополнительной идентификацией и аутентификацией пользователей. К программным средствам в первую очередь относится использование защищенных криптопротоколов, с применением которых появляется возможность надежной защиты соединения. Следует ли использовать такие средства, и какие именно - решается в каждом случае индивидуально, но ясно одно: если вы хотите устойчивой работы вашего сервера или вашей сети, защищать их необходимо.

Автор: Михаил Брод