Ini adalah Pertanyaan Canonical tentang pengamanan resolusi DNS publik
Server DNS terbuka tampaknya cukup rapi dan nyaman, karena mereka memberikan alamat IP yang dapat kita gunakan secara konsisten di perusahaan kami di mana pun mereka berada. Google dan OpenDNS menyediakan fungsionalitas ini, tetapi saya tidak yakin bahwa saya ingin perusahaan-perusahaan ini memiliki akses ke permintaan DNS kami.
Saya ingin mengatur sesuatu seperti ini untuk digunakan oleh perusahaan kami, tetapi saya mendengar banyak tentang ini sebagai praktik berbahaya (terutama dalam hal serangan amplifikasi ) dan saya ingin memastikan bahwa kami melakukan ini dengan benar. Hal-hal apa yang perlu saya ingat ketika membangun jenis lingkungan ini?
domain-name-system
Andrew B
sumber
sumber
Jawaban:
Ada beberapa hal yang perlu Anda pahami tentang hal ini:
Ini adalah masalah rekayasa jaringan.
Sebagian besar orang yang mencari untuk mengatur jenis lingkungan ini adalah administrator sistem. Itu keren, saya juga administrator sistem! Bagian dari pekerjaan adalah memahami di mana tanggung jawab Anda berakhir dan tanggung jawab orang lain dimulai, dan percayalah, ini bukan masalah yang dapat diselesaikan oleh administrator sistem sendiri. Inilah alasannya:
Ini bukan praktik terbaik. Praktik terbaik adalah tidak melakukan ini.
Sangat mudah untuk mengatur internet yang menghadapi resolver DNS. Dibutuhkan jauh lebih sedikit riset untuk membuat satu daripada memahami risiko yang terlibat dalam melakukannya. Ini adalah salah satu kasus di mana niat baik secara tidak sengaja memungkinkan kesalahan (dan penderitaan) orang lain.
Google dan OpenDNS melakukan ini, jadi mengapa saya tidak bisa?
Terkadang perlu mempertimbangkan antusiasme terhadap kenyataan. Berikut adalah beberapa pertanyaan sulit untuk ditanyakan pada diri sendiri:
Apakah ini sesuatu yang Anda ingin atasi, atau ini sesuatu yang Anda punya beberapa juta dolar untuk diinvestasikan dalam melakukannya dengan benar?
Apakah Anda memiliki tim keamanan khusus? Tim penyalahgunaan khusus? Apakah keduanya memiliki siklus untuk menangani penyalahgunaan infrastruktur baru Anda, dan keluhan yang akan Anda dapatkan dari pihak luar?
Apakah Anda memiliki tim hukum ?
Ketika semua ini dikatakan dan dilakukan, akankah semua upaya ini bahkan dari jauh mulai membayar untuk dirinya sendiri, menghasilkan keuntungan bagi perusahaan, atau melebihi nilai moneter dari berurusan dengan ketidaknyamanan yang membawa Anda ke arah ini?
Sebagai penutup, saya tahu utas ini adalah T&J adalah jenis kekecewaan bagi sebagian besar dari Anda yang terhubung dengannya. Serverfault ada di sini untuk memberikan jawaban, dan jawaban "ini adalah ide yang buruk, jangan lakukan itu" biasanya tidak dianggap sangat membantu. Beberapa masalah jauh lebih rumit daripada yang terlihat pada awalnya, dan ini adalah salah satunya.
Jika Anda ingin mencoba membuat ini berfungsi, Anda masih dapat meminta bantuan kami saat Anda mencoba menerapkan solusi semacam ini. Hal utama yang harus disadari adalah bahwa masalahnya terlalu besar dengan sendirinya untuk dijawab dalam format tanya jawab yang nyaman. Anda harus menginvestasikan banyak waktu untuk meneliti topik, dan mendekati kami dengan masalah logika spesifik yang Anda temui selama implementasi Anda. Tujuan dari T&J ini adalah untuk memberi Anda pemahaman yang lebih baik tentang gambaran yang lebih besar, dan membantu Anda memahami mengapa kami tidak dapat menjawab pertanyaan seluas ini.
Bantu kami menjaga keamanan internet! :)
sumber
Apakah Anda menjalankan recursor DNS terbuka atau server DNS resmi, masalahnya adalah sama dan sebagian besar solusi yang mungkin juga sama.
Solusi terbaik
Cookie DNS adalah standar yang diusulkan yang memberikan server DNS cara untuk meminta klien mengirim cookie untuk membuktikan bahwa alamat IP klien belum dipalsukan. Ini akan dikenakan biaya satu perjalanan pulang pergi tambahan untuk pencarian pertama, yang merupakan biaya overhead terendah yang bisa ditawarkan oleh solusi apa pun.
Pengembalian untuk klien yang lebih tua
Karena cookie DNS belum distandarisasi, tentu saja akan diperlukan untuk mendukung klien yang lebih tua sekarang dan untuk tahun-tahun mendatang.
Anda dapat menilai permintaan batas dari klien tanpa dukungan cookie DNS. Tetapi batas nilai memudahkan penyerang untuk melakukan DNS server DNS Anda. Berhati-hatilah karena beberapa server DNS memiliki fitur batas laju yang dirancang hanya untuk server DNS otoritatif. Karena Anda bertanya tentang penyelesai rekursif, implementasi pembatasan tarif semacam itu mungkin tidak berlaku untuk Anda. Batas nilai menurut desain akan menjadi hambatan bagi server Anda, dan dengan demikian seorang penyerang perlu mengirimkan lebih sedikit lalu lintas untuk menyebabkan permintaan sah dibatalkan daripada yang akan ia miliki jika tidak ada batas nilai.
Salah satu keuntungan dari batas nilai adalah jika penyerang membanjiri server DNS Anda dengan permintaan DNS, Anda lebih mungkin memiliki kapasitas tersisa yang akan memungkinkan Anda untuk melakukan ssh ke server dan menyelidiki situasinya. Selain itu, batas nilai dapat dirancang untuk terutama membatalkan permintaan dari IP klien yang mengirim banyak permintaan, yang mungkin cukup untuk melindungi Anda dari DoS dari penyerang yang tidak memiliki akses ke spoof IP klien.
Karena alasan itu, batas nilai sedikit di bawah kapasitas Anda yang sebenarnya mungkin merupakan ide yang baik, bahkan jika itu sebenarnya tidak melindungi terhadap amplifikasi.
Menggunakan TCP
Dimungkinkan untuk memaksa klien menggunakan TCP dengan mengirimkan kode kesalahan yang menunjukkan bahwa jawabannya terlalu besar untuk UDP. Ini memiliki beberapa kekurangan. Biayanya dua pulang pergi tambahan. Dan beberapa klien yang salah tidak mendukungnya.
Biaya dua pulang pergi tambahan dapat dibatasi hanya untuk permintaan pertama menggunakan pendekatan ini:
Ketika IP klien belum dikonfirmasi, server DNS dapat mengirim respons terpotong untuk memaksa klien untuk beralih ke TCP. Respons terpotong dapat sesingkat permintaan (atau lebih pendek jika klien menggunakan EDNS0 dan respons tidak) yang menghilangkan amplifikasi.
IP klien apa pun yang menyelesaikan jabat tangan TCP dan mengirim permintaan DNS pada koneksi dapat sementara masuk daftar putih. Setelah masuk daftar putih IP dapat mengirim permintaan UDP dan menerima tanggapan UDP hingga 512 byte (4096 byte jika menggunakan EDNS0). Jika respons UDP memicu pesan kesalahan ICMP, IP akan dihapus dari daftar putih lagi.
Metode ini juga dapat dibalik menggunakan daftar hitam, yang hanya berarti bahwa IP klien diizinkan untuk melakukan permintaan lebih dari UDP secara default tetapi pesan kesalahan ICMP menyebabkan IP menjadi daftar hitam yang memerlukan permintaan TCP untuk keluar dari daftar hitam.
Bitmap yang mencakup semua alamat IPv4 yang relevan dapat disimpan dalam memori 444MB. Alamat IPv6 harus disimpan dengan cara lain.
Saya tidak tahu apakah ada server DNS yang menerapkan pendekatan ini.
Juga telah dilaporkan bahwa beberapa tumpukan TCP dapat dieksploitasi dalam serangan amplifikasi. Namun itu berlaku untuk layanan berbasis TCP dan bukan hanya DNS. Kerentanan tersebut harus dikurangi dengan meningkatkan ke versi kernel di mana tumpukan TCP telah diperbaiki untuk tidak mengirim lebih dari satu paket sebagai tanggapan terhadap paket SYN.
sumber
Deliberately open recursive DNS servers are outside the scope of this document.
Untuk saat ini saya telah menambahkan peringatan tentang itu. Saya harus menguji apakah mungkin untuk mengaktifkan pembatasan tingkat pada Bind yang dikonfigurasi sebagai resolver rekursif, dan apakah itu akan berperilaku dengan benar.