DNS-рекурсия небезопасна, но необходима для внутренних приложений?

16

При управлении Windows Server 2008 на сервере размещается DNS (является сервером имен) для некоторых доменов, а также размещаются некоторые общедоступные приложения.

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

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

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

Спасибо за ваше время!

ilasno
источник

Ответы:

11

Хорошая идея - не предоставлять функциональность рекурсивного поиска всему Интернету, поэтому настройка DNS-сервера на ответы только на те запросы, для которых он является авторитетным, - Good Thing TM .

На поверхности это звучит как вывод вы достигли в последнем пункте , является хорошим: Настройка параметров собственного TCP сервера / IP , чтобы использовать сервер DNS , который будет уполномочен предоставлять рекурсивный просмотр. Процесс DNS-сервер не использует DNS-серверы, настроенные в настройках TCP / IP на сетевой карте серверного компьютера, ни для чего конкретного. Скорее, он перенаправляет запросы (или использует корневые ссылки) на основе конфигурации DNS-сервера.

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

Эван Андерсон
источник
14

Есть ли способ отключить рекурсивные запросы от DNS, размещенной на сервере, при этом позволяя работать DNS-запросам, исходящим от сервера?

Не с DNS-сервера Microsoft, нет.

С DNS-сервером ISC, BIND, можно связывать вещи с представлениями. DNS-сервер Microsoft не имеет такого механизма. Таким образом, для любого конкретного экземпляра DNS-сервера Microsoft необходимо выбрать, является ли он DNS-сервером с общедоступным контентом или локальным прокси- сервером DNS. Он не может обманывать и притворяться разными серверами для разных DNS-клиентов.

Сервис / инструмент тестирования безопасности совершенно прав. Это является хорошей практикой не предоставлять прокси - сервис - любой тип прокси - службы: будь это HTTP - прокси сервис, DNS прокси - службы или службы SMTP Подчинение - к остальной части Интернета outwith собственного сайта. У вас очень должны быть отдельные серверы : контент-DNS-сервер, публикующий ваши общедоступные DNS-данные, о ваших доменных именах, которые вы зарегистрировали, всем в Интернете; и локальный прокси-сервер DNS, который выполняет основную работу по разрешению запросов от имени компьютеров вашей локальной сети / организации, который доступен только для компьютеров в вашей организации / в вашей локальной сети. С DNS-сервером Microsoft это не так просто.

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

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

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

Учитывая, что DNS-клиент вашей машины не использует DNS-сервер, работающий на машине для прокси-службы DNS, вы просто настраиваете DNS-сервер Microsoft, чтобы никому не предоставлять прокси-службу DNS в любой форме.

дальнейшее чтение

JdeBP
источник
Отличная рецензия.
Nic
Я ценю эту информацию, спасибо! Я работаю с небольшой инфраструктурой, поэтому представленное решение для этого сценария является излишним.
ilasno
Просто заметьте, что это не так с Server 2016 - Windows теперь поддерживает раздельный DNS , включая возможность ограничения рекурсивного поиска в зависимости от адреса клиента. Тем не менее, настройка независимого сервера для публичных запросов все еще более простой вариант.
Боб
5

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

Приложения могут использовать DNS-серверы, настроенные в свойствах TCP / IP соответствующей сетевой карты, которые можно настроить на использование любых DNS-серверов, которые будут выполнять рекурсию (например, DNS-серверы Google). DNS-серверы, настроенные в свойствах TCP / IP соответствующего сетевого адаптера, не должны указывать на DNS-сервер, работающий на этом же сервере.

joeqwerty
источник
0

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

Если у вас есть маршрутизатор Cisco, вот возможное исправление. Я переместил наш внешний DNS на маршрутизатор Cisco 7200VXR и настроил его для ответа только на определенные зоны DNS. Он будет запрашивать внутренние DNS-серверы, поэтому вам не нужно вводить все в двух местах.

Вот фрагмент конфигурации Cisco, который я использовал:

ip dns view default
 dns forwarder 192.168.0.xx (internal DNS server)
 domain round-robin

ip dns view-list default
 view default 1
  restrict name-group 1

ip dns name-list 1 permit abc.com
ip dns name-list 1 permit def.com
ip dns name-list 1 permit anyotherdomainthatyouhost.com
ip dns name-list 1 permit 3.2.1.in-addr.arpa (needed for reverse PTR lookups)

interface fastethernet0/0 (the interface where the IP address is that will host DNS)
 ip dns view-group default
 ip address 1.2.3.4 secondary (use the public facing IP you will use to host DNS)

ip dns server

Кроме того, не забудьте разрешить передачу пакетов DNS на маршрутизатор со списком доступа, например:

permit udp any host 1.2.3.4 eq domain
Brain2000
источник