Рекурсія DNS небезпечна, але необхідна для внутрішніх застосувань?


16

В управлінні Windows Server 2008 сервер розміщує DNS (є сервером імен) для деяких доменів, а також розміщує деякі програми, доступні для загального доступу.

Сканування безпеки показало, що конфігурація DNS є незахищеною, оскільки вона дозволяє рекурсивні запити.

Було спробу відключити рекурсивні запити, але виникло декілька проблем (електронні листи, надіслані з місцевих додатків, не доставлялися, а додаток, що працює локально, який підключається до стороннього сайту, не зміг вирішити доменне ім’я для з'єднання тощо). Таким чином, виявляється, що запити DNS, що надходять на сам сервер, покладаються на рекурсивні запити для функціонування.

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

Дякую за ваш час!

Відповіді:


11

Недоречно не надавати рекурсивному функціонуванню пошуку в усьому Інтернеті, тому налаштування вашого DNS-сервера відповідати лише на запити, для яких це авторитетно, - це добре TM .

На поверхні це здається, що висновок, який ви дійшли в останньому абзаці, є гарним: Налаштуйте власні настройки TCP / IP сервера для використання сервера DNS, який має право надавати рекурсивні пошуки. Процес DNS-сервера не використовує DNS-сервери, налаштовані в налаштуваннях TCP / IP в NIC серверного комп'ютера для нічого конкретного. Швидше, він пересилає запити (або використовує підказки кореня) на основі конфігурації сервера DNS.

Коли програми, запущені на сервері, намагаються запитувати домени, сервер DNS, що працює на цій машині, є авторитетним для запиту, в кінцевому рахунку, перейде до процесу сервера DNS, що працює на цій машині, і на запит буде відповідено.


14

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

Ні з DNS-сервером Microsoft, ні.

За допомогою DNS-сервера ISC, BIND, можна вирішувати погляди. DNS-сервер Microsoft не має такого механізму. Отже, для будь-якого примірника сервера Microsoft DNS потрібно вибрати, чи це DNS-сервер загальнодоступного контенту або локальний проксі - сервер DNS-сервера. Він не може вирішувати речі і претендувати на різні сервери для різних клієнтів DNS.

Служба / інструмент тестування безпеки цілком слушна. Це є хорошою практикою не надавати проксі - сервіс - будь-який тип проксі - служби: будь це HTTP - проксі сервіс, DNS проксі - служби або служби SMTP Підпорядкування - до решти Інтернету outwith власного сайту. Ви дуже повинні мати окремі сервери : сервер DNS-вмісту, який публікує ваші загальнодоступні дані DNS, про ваші доменні імена, які ви зареєстрували, для всіх в Інтернеті; і локальний проксі-сервер DNS, який виконує бурхливу роботу щодо вирішення запитів від імені комп'ютерів вашої локальної мережі / організації, доступних лише для машин вашої організації / у вашій локальній мережі. Що стосується сервера Microsoft DNS, це не особливо легко.

Було б особливо важко, якби ваша машина була також контролером домену. Ви заявляєте, що ця машина безпосередньо доступна з усього Інтернету. Якщо така машина є контролером домену, то вам слід переосмислити свою мережну організацію зараз . Ви піддаєте громадськості надзвичайно багато внутрішніх служб, а не лише проксі-сервісу 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 будь-якої форми нікому.

Подальше читання


Відмінний запис.
Нік

Ціную інформацію, дякую! Я тут працюю з меншою інфраструктурою, тому представлене рішення є надмірним для цього сценарію.
ilasno

Лише коротке зауваження, що це більше не стосується сервера 2016 - Windows тепер підтримує розділений мозок DNS , включаючи можливість обмеження рекурсивного пошуку залежно від адреси клієнта. Однак налаштування незалежного сервера для публічних запитів все-таки є більш простим варіантом.
Боб

5

Як Еван заявив у своїй відповіді, вашим програмам потрібно використовувати клієнтський компонент DNS на сервері, який повністю незалежний від компонента сервера DNS. Компонент сервера DNS може бути налаштований не виконувати рекурсії, що дозволяє йому відповідати на запити, подані до нього лише для DNS-зон, для яких він є авторитетним.

Програми можуть використовувати сервери DNS, налаштовані у властивостях TCP / IP відповідного NIC, які можуть бути налаштовані на використання будь-яких серверів DNS, які виконуватимуть рекурсію (наприклад, DNS-сервери Google). Сервери DNS, налаштовані у властивостях TCP / IP відповідного NIC, не потрібно вказувати на DNS-сервер, що працює на тому самому сервері.


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
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.