Rekursi DNS tidak aman, tetapi perlu untuk aplikasi internal?

16

Dalam pengelolaan Windows Server 2008, server host DNS (adalah server nama) untuk beberapa domain, serta hosting beberapa aplikasi yang dapat diakses secara publik.

Pemindaian keamanan telah menunjukkan bahwa konfigurasi DNS tidak aman, karena memungkinkan permintaan rekursif.

Menonaktifkan kueri rekursif telah dicoba, tetapi beberapa masalah terjadi (email yang dikirim dari aplikasi lokal tidak dikirimkan, dan aplikasi yang berjalan secara lokal yang menghubungkan ke situs pihak ketiga tidak dapat menyelesaikan nama domain untuk koneksi, dll.). Jadi tampaknya permintaan DNS yang berasal dari server itu sendiri bergantung pada permintaan rekursif untuk berfungsi.

Apakah ada cara untuk menonaktifkan kueri rekursif oleh DNS yang dihosting di server sementara masih memungkinkan kueri DNS yang berasal dari server berfungsi? Saya bertanya-tanya apakah kita dapat menonaktifkan permintaan rekursif pada server DNS lokal dan mengatur DNS keluar dalam pengaturan jaringan ke sesuatu yang eksternal (seperti 8.8.8.8), sehingga permintaan DNS keluar akan pergi ke sana terlebih dahulu, dan DNS server ini hanya akan berakhir bertanya untuk domain yang sebenarnya di-host secara lokal.

Terima kasih atas waktunya!

ilasno
sumber

Jawaban:

11

Merupakan ide bagus untuk tidak menyediakan fungsionalitas pencarian rekursif ke seluruh Internet, jadi mengonfigurasi server DNS Anda untuk hanya menjawab pertanyaan yang otoritatif adalah Good Thing TM .

Pada permukaan kedengarannya seperti kesimpulan yang telah dicapai dalam paragraf terakhir Anda adalah satu yang baik: Konfigurasi server TCP sendiri / pengaturan IP untuk menggunakan server DNS yang adalah berwenang untuk memberikan pencarian rekursif. Proses Server DNS tidak menggunakan server DNS yang dikonfigurasi dalam pengaturan TCP / IP pada NIC komputer server untuk hal-hal tertentu. Sebaliknya, itu meneruskan permintaan (atau menggunakan petunjuk root) berdasarkan pada konfigurasi Server DNS.

Ketika aplikasi yang berjalan pada server mencoba untuk menanyakan domain, DNS Server yang berjalan pada mesin itu otoritatif untuk permintaan tersebut, pada akhirnya, akan membuatnya ke proses DNS Server yang berjalan pada mesin itu dan permintaan akan dijawab.

Evan Anderson
sumber
14

Apakah ada cara untuk menonaktifkan kueri rekursif oleh DNS yang dihosting di server sementara masih memungkinkan kueri DNS yang berasal dari server berfungsi?

Tidak dengan server DNS Microsoft, tidak ada.

Dengan server DNS ISC, BIND, orang dapat melakukan hal-hal dengan pandangan. Server DNS Microsoft tidak memiliki mekanisme seperti itu. Jadi untuk setiap contoh server DNS Microsoft, kita harus memilih apakah itu server DNS konten publik atau server DNS proksi lokal-situs . Itu tidak dapat membentuk sesuatu dan berpura-pura menjadi berbagai jenis server untuk klien DNS yang berbeda.

Layanan / alat pengujian keamanan cukup tepat. Ini adalah praktik terbaik untuk tidak menyediakan layanan proxy - segala jenis layanan proxy: baik itu layanan proxy HTTP, layanan proxy DNS, atau layanan Pengiriman SMTP - ke seluruh Internet melebihi situs sendiri. Anda harus memiliki server terpisah : server DNS konten yang menerbitkan data DNS publik Anda, tentang nama domain Anda yang telah Anda daftarkan, kepada semua orang di Internet; dan server DNS proksi lokal, yang melakukan pekerjaan kasar dari resolusi kueri atas nama komputer LAN / organisasi Anda, yang hanya dapat diakses oleh mesin di organisasi Anda / di LAN Anda. Dengan server DNS Microsoft, ini tidak mudah.

Ini akan sangat sulit jika mesin Anda juga merupakan pengontrol domain. Anda menyatakan bahwa mesin ini dapat langsung dijangkau dari seluruh Internet. Jika mesin seperti itu adalah pengontrol domain, maka Anda harus memikirkan kembali organisasi jaringan Anda sekarang . Anda akan mengekspos banyak sekali layanan internal kepada publik, bukan hanya layanan DNS proxy. Jadi mari kita bekerja dengan anggapan bahwa ini bukan pengontrol domain.

Karena ini bukan pengontrol domain, dan hanya server anggota , Anda tidak memiliki persyaratan bahwa klien DNS pada mesin harus menggunakan server DNS milik mesin sendiri (atau, awalnya, server DNS pengontrol domain lain) untuk proxy Layanan DNS, itulah yang terjadi untuk pengontrol domain. Jika sudah, Anda tidak akan dapat mematikan layanan DNS proksi di server DNS mesin. Untungnya, itu bukan pengontrol domain, dan klien DNS-nya dapat menggunakan mesin lain untuk layanan DNS proxy, bukan dirinya sendiri.

Klien DNS pada mesin server anggota masih harus menggunakan server DNS proxy internal . Anda tidak bisa hanya mengarahkannya ke beberapa server DNS eksternal seperti yang disediakan oleh ISP Anda, Google, atau pihak lain mana pun yang tidak mengetahui semua data DNS yang digunakan Active Directory pada LAN Anda . Anda dapat mengarahkan klien DNS mesin di server DNS pada satu atau lebih pengontrol domain Anda. Ini cukup sederhana, dan itulah yang Anda - setelah semua - sudah lakukan pada semua workstation Anda di LAN Anda. Klien DNS di server anggota Anda hanya perlu dikonfigurasi seperti klien DNS di semua workstation Anda .

Mengingat bahwa klien DNS mesin Anda tidak menggunakan server DNS yang berjalan pada mesin untuk layanan DNS proksi, Anda kemudian hanya mengkonfigurasi server DNS Microsoft untuk tidak menyediakan layanan proxy DNS dalam bentuk apa pun kepada siapa pun.

Bacaan lebih lanjut

JdeBP
sumber
Tulisan yang bagus.
Nic
Saya menghargai informasinya, terima kasih! Saya bekerja dengan infrastruktur yang lebih kecil di sini, jadi solusi yang disajikan terlalu banyak untuk skenario ini.
ilasno
Hanya catatan singkat bahwa ini tidak lagi berlaku pada Server 2016 - Windows sekarang mendukung DNS otak-ganda , termasuk opsi untuk membatasi pencarian rekursif tergantung pada alamat klien. Namun, pengaturan server independen untuk permintaan publik masih merupakan opsi yang lebih mudah.
Bob
5

Seperti yang dinyatakan Evan dalam jawabannya, aplikasi Anda harus menggunakan komponen klien DNS di server, yang sepenuhnya independen dari komponen server DNS. Komponen server DNS dapat dikonfigurasikan untuk tidak melakukan rekursi, yang memungkinkannya untuk menjawab pertanyaan yang diajukan kepadanya hanya untuk zona DNS yang berwenang untuknya.

Aplikasi dapat menggunakan server DNS yang dikonfigurasi dalam properti TCP / IP dari NIC yang relevan, yang dapat dikonfigurasi untuk menggunakan server DNS apa pun yang akan melakukan rekursi (seperti server DNS Google). Server DNS yang dikonfigurasi dalam properti TCP / IP dari NIC yang relevan tidak perlu mengarah ke server DNS yang berjalan di server yang sama.

joeqwerty
sumber
0

Saya baru-baru ini memiliki masalah yang sama dan server DNS kami digunakan untuk serangan amplifikasi. Tapi saya harus terus rekursi untuk server internal kami yang lain.

Jika Anda memiliki router Cisco, berikut ini kemungkinan perbaikannya. Saya memindahkan DNS eksternal kami ke router Cisco 7200VXR dan mengkonfigurasinya untuk membalas hanya ke zona DNS tertentu. Ini akan menanyakan server DNS internal sehingga Anda tidak perlu memasukkan semuanya di dua tempat.

Berikut ini cuplikan dari konfigurasi Cisco yang saya gunakan:

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

Selain itu, jangan lupa untuk mengizinkan paket DNS ke router dengan daftar akses, seperti:

permit udp any host 1.2.3.4 eq domain
Brain2000
sumber