Windows dns отключить рекурсию

Обновлено: 04.07.2024

В этой статье данная статья позволяет решить проблему, из-за которой уязвимость DNS Server для атак DNS Server Cache скандинавских атак.

Применяется к: Windows Server 2012 R2
Исходный номер КБ: 2678371

Симптомы

Snooping кэша DNS — это когда кто-то запрашивает DNS-сервер, чтобы узнать (snoop) есть ли у DNS-сервера определенный кэш записи DNS, и тем самым вывести, если владелец DNS-сервера (или его пользователи) недавно посетил определенный сайт.
Это может выявить сведения о владельце сервера DNS, например о том, какой поставщик, банк, поставщик услуг и т.д. они используют. Особенно, если это подтверждается (snooped) несколько раз в течение периода.
Этот метод можно даже использовать для сбора статистической информации , например, в какое время владелец DNS-сервера обычно имеет доступ к его чистому банку и т.д. Оставшееся значение TTL записи DNS кэшировать может предоставить очень точные данные для этого.

Snooping кэша DNS возможен, даже если DNS-сервер не настроен для повторного разрешения для 3-х сторон, если он предоставляет записи из кэша также для 3-х сторон (например. "хромые запросы").

Аудиты безопасности могут сообщать о том, что различные реализации DNS Server уязвимы для атак с помощью кэша, позволяющих удаленному злоумышленнику определить, какие домены и хосты были устранены на заданном сервере имен.

После того, как такой отчет об уязвимости кэша считываю:

Причина

Эта ошибка обычно сообщается в DNS Severs, которые делают повторную рекурсию.

Решение

Исправление кода не существует, так как это выбор конфигурации.

Существует три варианта:

Оставьте включенную повторную рекурсию, если DNS Server остается в корпоративной сети, к которую не удается достичь ненастоячивым клиентам

Не допускайте общедоступный доступ к DNS Servers, которые делают повторную рекурсию

Отключение повторной рекурсии

Дополнительная информация

По умолчанию серверы Microsoft DNS настроены, чтобы разрешить повторную рекурсию.

Повторение имен может быть отключено глобально на сервере Microsoft DNS Server, но не может быть отключено на основе каждого клиента или интерфейса.

Большинство серверов Microsoft DNS-серверов монеты с ролью сервера контроллера домена. Такие серверы обычно имеют зоны зоны и решают DNS-имена для устройств | устройства, клиенты-члены, серверы-члены и контроллеры домена в лесу Active Directory, но также могут разрешать имена для больших частей корпоративной сети. Поскольку серверы Microsoft DNS Server обычно развертываются за брандмауэрами в корпоративных сетях, они недоступны для ненадеяных клиентов. Администраторы серверов в этом параметре должны учитывать необходимость отключения или ограничения рекурсии DNS.

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

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

По умолчанию DNS-сервер выполняет рекурсивные запросы от имени своих DNS-клиентов и DNS-серверов, которые переслали запросы своих DNS-клиентов на этот сервер. Рекурсия - это способ разрешения имен, при котором DNS-сервер запрашивает другие DNS-серверы от лица своего клиента для полного разрешения имени и отправки ответа обратно клиенту.

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

Отключение рекурсии на DNS-сервере

Откройте диспетчер DNS.

В дереве консоли щелкните правой кнопкой мыши необходимый DNS-сервер и выберите Свойства.

DNS/необходимый DNS-сервер

Перейдите на вкладку Дополнительно.

В группе Параметры сервера установите флажок Отключить рекурсию и нажмите кнопку ОК.

Дополнительные сведения

  • Чтобы открыть диспетчер DNS, нажмите кнопку Пуск, выберите Администрирование, затем щелкнете DNS.

Откройте окно командной строки.

Введите указанную ниже команду и нажмите клавишу ВВОД.

Имя средства командной строки, предназначенного для управления DNS-серверами.

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

Обязательный компонент. Настройка указанного сервера с помощью этой команды.

Обязательный компонент. Отключение рекурсии.

Обязательный компонент. Чтобы отключить рекурсию, введите 1 (отключено). Чтобы включить рекурсию, введите 0 (включено). По умолчанию рекурсия включена.

Чтобы просмотреть полный синтаксис этой команды, введите следующий текст в командной строке, а затем нажмите клавишу ВВОД:

Дополнительная информация

  • Чтобы открыть окно командной строки с более высоким уровнем прав, нажмите кнопку Пуск, выберите Все программы, Стандартные, щелкните правой кнопкой мыши пункт Командная строка, а затем выберите пункт Выполнить от имени администратора.

Безопасность и тюнинг DNS в Windows Server 2012 R2 и 2016

Настройка SocketPool

Возможные проблемы, связанные с SocketPool, и настройка исключений

Теперь двигаемся дальше.

Идея этой настройки, появившейся ещё в Windows NT 4.0, и включенной по умолчанию с Windows Server 2003, проста. Она состоит в том, чтобы читать из ответа DNS-сервера только запрашиваемые ранее сведения, и игнорировать остальные. Рассмотрим пример.

Но жизнь жёстче.

Поэтому надо включать параметр secure cache against pollution, чтобы исключить даже теоретическую возможность получения недостоверной информации из DNS-ответа.

Настраиваем данный параметр:

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

Привязка DNS-сервера к сетевым интерфейсам

Как настраивается привязка DNS-сервера к сетевым интерфейсам

Необходимо зайти в настройки DNS Server, выбрать Properties и на вкладке Interfaces в явном виде выбрать только те адреса, на которые нужно принимать dns-запросы. Вот так:

Удалённое управление DNS-сервером

Настраиваем Global Query Block List

Как этот механизм будет работать? Рассмотрим вариант для наличия в GQBL стандартного имени wpad.

При добавлении имени в GQBL будут игнорироваться запросы для всех типов записей (это важно – не только A и AAAA, а всех) для всех зон, для которых данный сервер является authoritative. То есть, допустим, если на сервере есть зоны domain.local и _msdcs.domain.local, то запросы wpad._msdcs.domain.local и wpad.domain.local, несмотря на фактическое наличие/отсутствие данной записи, будут возвращать ответ, что запись не найдена.

Интересным является также момент про то, как данный механизм работает с логами. При первой блокировке в журнал пишется событие, где написано, что запрос от такого-то клиента заблокирован по причине нахождения искомого в GQBL. После запись уже не ведётся. Это не баг, а защита от простейшей атаки – переполнения журнала путём отправки огромного количества запросов на предсказуемо блокируемый FQDN. После перезапуска сервера счётчик сбросится на нуль и опять – первая блокировка будет записана в журнал, далее – нет.

Настройка Global Query Block List на Windows Server 2012 R2

Включить этот фильтр на уровне сервера просто:

Отключение обработки рекурсивных запросов

Отключение рекурсии выглядит так:

Ограничение времени кэширования записей

А вот как в случае, когда в меню View включён пункт Advanced:

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

Я поставлю время кэширования негативного ответа в 5 минут:

Отключаем AXFR/IXFR трансфер у зон, интегрированных в Active Directory

Это надо сделать не только у зон, интегрированных в Active Directory, но и у всех копий зоны, находящихся на secondary-серверах, с которых не забирают копию другие secondary-сервера.

Чтобы минимизировать вероятность этой ситуации, нужно сделать ряд шагов.

А теперь можно и ограничить число RR в DNS-ответе. Я поставлю 28 (это максимальное ограничение).

Настройка BIND secondaries

Настройка тайм-аута AXFR / IXFR трансфера

Настройка времени блокировки AXFR / IXFR трансфера

Фильтрация Name checking

Вариант Strict RFC (ANSI)

Вариант Non RFC (ANSI)

Strict RFC плюс подчёркивание.

Вариант Multibyte (UTF8)

Имена могут быть в Unicode (RFC 2181).

Вариант All Names

Фильтрация не производится, сервер пытается обработать все полученные строки.

Что выбрать? Тут всё достаточно сложно. Ситуаций много. Например, если ваш DNS-сервер держит исключительно внешние зоны, в которых нет хостов с именами, использующими символы национальных алфавитов, и предназначен он лишь для этой задачи (т.е. на нём нет рекурсии), то имеет смысл использовать Non RFC. Для обычного сервера, который кэширует запросы клиентов, подойдёт Multibyte. Отключать фильтрацию целиком нецелесообразно.

Как настраивается фильтрация Name Checking в Windows Server 2008 R2 DNS

Механизм Aging/Scavenging в DNS

Динамически добавленные в DNS-зону записи не умеют пропадать сами. Это не баг, это так положено. В WINS (который NBNS) (не к ночи он будет помянут) этот механизм был штатным, а вот в DNS – увы. Поэтому фирма Microsoft добавила данный механизм в свою реализацию DNS Server. Как он будет работать?

Этот механизм полезен, т.к. при должной настройке будет эффективно удалять ненужные DNS-записи, например, переименованных или удалённых из домена рабочих станций.

Не забывайте, что механизм включается и на уровне сервера, и на уровне зоны. Чтобы механизм функционировал, необходимо включить его и там и там. Т.е. и зона должна одобрять идею автоматической очистки, и конкретный сервер знать, что периодически надо удалять записи, не обновлённые уже X дней.

Включать данный механизм полезно ещё по одной причине. Мало того, что он будет удалять устаревшие записи. Он ещё будет, вводя no-refresh interval, уменьшать трафик репликации Active Directory. Т.е. если за время no-refresh interval придёт запрос на динамическое обновление записи, и в нём не будет ничего нового, кроме продления срока жизни, то без механизма aging/scavenging этот запрос будет отработан и в зону будет произведена запись (бессмысленная), что вызовет репликацию раздела Active Directory, в котором находится эта запись. А в случае, если механизм будет включен, сервер посмотрит, и если запрос не будет содержать никакой новой информации (ну, например, машину просто перезагрузили – она ту же A-запись пытается зарегистрировать, по сути – просто сбросить time stamp), он будет проигнорирован. Это никак не повлияет на качество работы DNS, а вот новую репликацию не инициирует. Профит!

Как включается Aging/Scavenging в Microsoft Windows Server 2008 R2 DNS

Второе – включаем на уровне зоны. Задаём no-refresh и refresh интервалы. Обычно стандартное время менять не нужно. В общем, всё.

Работа Round Robin и Netmask Ordering

Посмотреть исключённые в данный момент типы записей можно как обычно, командой show dnsserver .

Блокировка динамической регистрации по типу RR

Для управления этим есть параметр updatetypes, текущие настройки его можно посмотреть той же командой show dnsserver :

Настройка EDNS0 в Windows Server 2012 R2

Настройка DNS-форвардеров в Windows Server

Командлет Set-DnsServerRecursion поможет настроить более тонкую обработку рекурсии. Какие у него будут параметры?

Параметр -SecureResponse

Параметр -Timeout

Параметр -AdditionalTimeout

Параметр -RetryInterval

Ускоряем загрузку DNS-зон в Windows Server 2012 R2 и старше

В общем, пока всё.

Заключение

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




На вкладке Дополнительно вы можете настроить дополнительные параметры DNS-сервера. Они загружаются при запуске службы DNS-сервера из информационного загрузочного файла, системного реестра или Active Directory. В большинстве случаев значения параметров, установленные по умолчанию, не требуют модификации.

В поле Номер версии сервера вы можете узнать номер версии службы DNS-сервера. Это бывает необходимо для выяснения совместимости службы DNS-сервера Windows 2000 с другими DNS-серверами.

Раскрывающийся список Проверка имен позволяет выбрать метод проверки имен при изменении записей средствами Консоли управления. Возможны следующие значения:

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

Кроме того, вы можете настроить следующие параметры DNS-сервера:

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

Щелкнув кнопку Восстановить умолчания, вы восстановите значения параметров по умолчанию.

Внимание!
При хранении конфигурации в загрузочном файле или в системном реестре для применения новых значений параметров необходимо перезапустить службу DNS-сервера. При хранении конфигурации в Active Directory некоторые параметры начинают действовать по щелчку кнопки OK в окне свойств.


Сведения о корневых серверах хранятся в файле %systemroot%\system32\DNS\ Cache.dns. Вы можете редактировать его вручную в текстовом редакторе, либо воспользоваться вкладкой Корневые ссылки окна свойств DNS-сервера. Файл корневых ссылок Cache.dns автоматически создается и заполняется при первом запуске службы DNS-сервера Windows 2000.

Примечание!
Вы можете обновить или модифицировать файл корневых ссылок в зависимости от используемой конфигурации DNS-серверов.

Чтобы добавить новый корневой сервер, щелкните кнопку Добавить. В появившемся окне введите DNS-имя сервера (или, если оно определено в одной из зон, обслуживаемых локальным сервером, найдите его, щелкнув кнопку Обзор). Если соответствующий хост уже имеет доменное имя DNS, щелкните кнопку Сопоставить, чтобы получить IP-адрес хоста. Если же у него еще нет доменного имени DNS, самостоятельно укажите один или более IP-адресов сервера, последовательно вводя их в поле IP-адрес и щелкая кнопку Добавить. Для добавления DNS-сервера должно быть указано и его имя, и как минимум один его IP-адрес. Заполнив все необходимые поля, щелкните кнопку ОК.

Чтобы изменить информацию о корневом сервере, щелкните кнопку Изменить.


Примечание!
При добавлении корневого сервера в файл cache.dns заносятся две записи: запись NS сервера и запись A соответствующего хоста. Запись A добавляется независимо от того, определена она в какой-либо зоне или нет. Такая запись называется glue record и предназначена для того, чтобы соответствующее имя хоста можно было использовать даже в случае неработоспособности зоны, в которой он определен. DNS-сервер Windows 2000 добавляет glue-записи для всех серверов, указываемых в записях NS.
Ниже приводится содержимое стандартного файла cache.dns (начальные комментарии опущены):

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


На вкладке Ведение журнала вы можете настроить список параметров, фиксируемых в журнале DNS-сервера. Журнал располагается в файле %systemroot%\ system32\dns\dns.log. Чтобы начать ведение журнала, включите как минимум один параметр журнала и щелкните кнопку ОК.

Чтобы включить параметр, установите соответствующий флажок.

В журнале могут фиксироваться следующие события:

Кнопка Восстановить умолчания позволяет восстановить параметры ведения журнала по умолчанию (т. е. отключает его ведение).

Внимание!
Функция ведения журнала DNS-сервера предназначена исключительно для отладки его работы и не должна использоваться при нормальной работе сервера по причине ее большой ресурсоемкости.


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

Вы можете использовать два вида тестов.

После того как вы выберете хотя бы один тест, станет доступна кнопка Тест. Кроме того, установив флажок Автоматическое тестирование и желаемый интервал выполнения проверки в поле Интервал теста, вы можете включить автоматическую многократную проверку сервера через определенные интервалы времени. Одиночный или многократный тест запускается щелчком кнопки Тест.

Результаты тестов выводятся в таблице в нижней части окна. В ней отображается дата и время исполнения каждого теста, а также результат (ПРОШЕЛ или ОШИБКА ) простого и рекурсивного запросов.

Читайте также: