Безопасность DNS (часть 1): проблемы безопасности DNS

Опубликовано: 8 Апреля, 2023

Введение

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

Однако если вы задумаетесь об этом, вы поймете, что возможность использовать имена вместо IP-адресов — это огромное удобство. Большинство людей запоминают имена гораздо легче, чем числа. В «старые времена», чтобы звонить по телефону, нам приходилось запоминать (или искать) телефонные номера. Затем появился быстрый набор, и сегодня многие из нас не могут даже назвать номера телефонов наших ближайших друзей и родственников, потому что они «запрограммированы» в наших телефонах, и мы можем звонить им, просто касаясь их имен в списке (или, чтобы было еще проще, их фотографии).

Можете ли вы представить себе необходимость запоминать IPv4-адреса всех хостов в Интернете, к которым вы хотите или должны подключиться? Или вам приходится листать книгу или прокручивать список вниз, чтобы найти их вручную? Даже в вашей интрасети, если у вас не очень маленькая сеть, маловероятно, что вы сможете запомнить все IPv4-адреса всех серверов, не говоря уже об IP-адресах клиентов (которые обычно назначаются через DHCP). А если учесть, что мир IPv6 приближается к нам медленно, но верно, этот сценарий становится еще более проблематичным. Запомнить 128-битные адреса IPv6 было бы практически невозможно, поэтому в мире IPv6 точный и надежный DNS — это не роскошь, а абсолютная необходимость.

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

Учитывая критическую важность DNS для нормальной работы сети как для интрасети, так и для интернет-соединений, становится ясно, что безопасность DNS является важным фактором, и ее не следует оставлять на усмотрение «с этим мы справимся». Но прежде чем мы приступим к защите нашей DNS-инфраструктуры, было бы интересно изучить некоторые из наиболее распространенных угроз, направленных против DNS-серверов. В целом, вы можете классифицировать эти угрозы следующим образом:

  • Компрометация файла зоны
  • Утечка информации о зоне
  • Скомпрометированные динамические обновления
  • Переполнение DNS-клиента (отказ в обслуживании)
  • Отравление кеша

Компрометация файла зоны

В среде DNS-сервера Windows DNS-сервер размещается в одной из нескольких версий операционной системы Windows Server. Администратор DNS может настроить конфигурацию зоны и записи ресурсов с помощью интерфейса командной строки или консоли DNS mmc. Один из самых простых и распространенных способов компрометации вашей DNS-инфраструктуры — это кто-то, кто может напрямую редактировать конфигурацию DNS-сервера или сами записи ресурсов прямо на DNS-сервере или с удаленной консоли.

Этот тип атаки на DNS не обязательно должен быть элегантным или «экстремальным hAx0r» — на самом деле, это может сделать практически любой, кто немного знаком с DNS и имеет доступ к серверу. Злоумышленник может физически сидеть перед сервером, подключаться через RDP или даже входить в систему через Telnet. Преступником может быть злонамеренный инсайдер или даже администратор из лучших побуждений, совершивший критическую ошибку. Ключевым сообщением безопасности здесь является то, что вы должны заблокировать DNS-сервер, чтобы только авторизованным людям был разрешен доступ к конфигурации DNS, и любой метод удаленного доступа к DNS-серверу должен быть ограничен авторизованными лицами и, возможно, авторизованными машинами.

Утечка информации о зоне

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

Утечка информации о зоне может произойти, когда злоумышленник может получить важную информацию о возможных ролях серверов в вашей сети на основе имен этих серверов. Например, если у вас есть сервер, доступный по имени PAYROLL, эта информация может быть очень ценной для злоумышленника. Иногда это называют «отпечатком».

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

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

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

Скомпрометированные динамические обновления

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

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

Конечно, не все безопасные динамические обновления созданы одинаковыми; некоторые из них более безопасны, чем другие. Например, если вы ограничиваете возможность присоединения к домену только администраторами домена или администраторами безопасности, то динамические обновления DNS могут быть достаточно безопасными в среде Windows. Однако, если вы разрешаете всем и каждому присоединять машину к домену, вы теряете безопасность, которую в противном случае имели бы, если бы у вас было ограниченное присоединение к домену доверенному персоналу.

Как только процесс динамического обновления скомпрометирован, злоумышленник потенциально может изменить информацию в ключевых записях ресурсов, чтобы имена можно было перенаправить на серверы, которые злоумышленник настроил для достижения целей злоумышленника (например, для загрузки вредоносного программного обеспечения на ваш компьютер, чтобы сделать его часть ботнета, контролируемого злоумышленником). Еще одна вещь, которую злоумышленник может сделать в этой ситуации, — создать простую атаку типа «отказ в обслуживании» (DoS), просто удалив ключевые записи, такие как записи для DNS-сервера или контроллеров домена.

Переполнение DNS-клиента (отказ в обслуживании)

Говоря о DoS, если вы никогда не подвергались атаке отказа в обслуживании DNS, то считайте, что вам повезло. Поскольку DNS-запросы не аутентифицируются, DNS-сервер всегда будет пытаться ответить на получаемые им DNS-запросы; в конце концов, это его работа. Это означает, что запустить распределенную атаку типа «отказ в обслуживании» (DDoS) против DNS-сервера относительно легко, и существует множество ботнетов, которые существуют специально для создания таких DDoS-атак, чтобы DNS-сервер был отключен достаточно долго. для злоумышленника установить мошеннический DNS-сервер, который будет отвечать на запросы от его имени. У пользователей не будет возможности узнать, что новый DNS-сервер на самом деле является вредоносным, и они будут перенаправлены на сайты, принадлежащие злоумышленнику. Эти сайты обычно предназначены для имитации реальных сайтов и использования (или, скорее, злоупотребления) доверием пользователей к этим реальным сайтам, чтобы получить доступ к личной информации, которая потенциально может быть использована для кражи личных данных.

Отравление кеша

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

Хотя это повышает общую эффективность всей инфраструктуры DNS, оно также открывает потенциальную брешь в безопасности. Угроза, которая использует эту дыру в безопасности, называется «отравление кэша DNS». Отравление кэша DNS происходит, когда DNS-сервер отправляет запрос другому DNS-серверу, и этот DNS-сервер возвращает ложную информацию о ресурсе. В большинстве случаев DNS-сервер, возвращавший ложную информацию, был заранее скомпрометирован.

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

Вывод

В этой статье мы рассмотрели некоторые проблемы безопасности DNS и то, как безопасность ваших DNS-серверов может быть скомпрометирована. Во второй части этой статьи мы более подробно рассмотрим некоторые вещи, которые вы можете сделать, чтобы улучшить общую схему безопасности DNS, и углубимся в функцию безопасности в Windows Server 2008 и более поздних версиях, которая называется DNSSEC. Мы настроим безопасную зону с помощью DNSSEC и объясним, как вы можете использовать DNSSEC для повышения безопасности DNS в вашей организации. Тогда увидимся! -Деб.