Bind DNS tingkat-batas dan nilai untuk tanggapan per detik dan jendela

8

Di server DNS saya yang bernama.conf saya melihat

    rate-limit {
            responses-per-second 5;
            window 5;
    };

Apa arti sebenarnya? Dan bisakah itu menyebabkan masalah klien DNS? Apakah ini konfigurasi yang terlalu ketat?

Kriket Merah
sumber
2
Adapun "apa artinya sebenarnya" Saya akan merekomendasikan bagian yang relevan dalam manual , juga melihat bagian yang sama untuk versi 9.10 mendatang
Håkan Lindqvist

Jawaban:

7

Ini membatasi jumlah respons identik yang dapat diperoleh klien DNS tunggal dalam sedetik. The window 5pilihan memungkinkan ledakan dari 5 * 5 tanggapan.

"Respons identik" dan "klien DNS tunggal" adalah istilah yang agak tidak jelas di sini, baca ini untuk info lebih lanjut: http://web.archive.org/web/20140209100744/http://ss.vix.su/~ vjs / rl-arm.html .

Umumnya itu adalah hal yang baik untuk menilai-batas - dapat membantu Anda dalam kasus serangan DOS suatu hari. Defaultnya harus OK untuk sebagian besar kasus.

skarap
sumber
Bagian tentang "burst" pada paragraf pertama salah. windowhanya digunakan untuk mengendalikan rentang waktu di mana "tanggapan identik" dikirim ke setiap "klien DNS tunggal" dilacak. The Pedoman BIND 9 Administrator Referensi negara: The [RRL klien] akun tidak bisa menjadi lebih positif daripada per detik batas atau lebih negatif daripada windowkali batas per-detik. Pesan dari Vernon Schryver ini menjelaskan perilaku algoritma lebih terinci.
Kempniu
11

Anda harus membaca manual referensi administrator untuk BIND 9.9 .

Pada dasarnya, responses-per-secondadalah jumlah balasan yang identik yang dapat dikirim ke satu tujuan tunggal, per detik. Definisi-definisi itu rumit.

Satu tujuan adalah blok alamat jaringan, dari ukuran yang dikonfigurasi dalam ipv4-prefix-lengthatau ipv6-prefix-lengthsebagaimana berlaku. Jadi, jika ipv4-prefix-length24, dan keduanya 192.0.2.1dan192.0.2.2 menanyakan server DNS, mereka akan membagikan kuota ini dan hanya dapat mengirim begitu banyak pertanyaan di antara keduanya.

Balasan identik adalah balasan untuk pertanyaan untuk RRtype tertentu untuk nama tertentu yang ada, atau untuk nama yang tidak ada. Pertanyaan berikut semuanya berbeda:

IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.

Namun, semua pertanyaan berikut ini identik (dengan asumsi nonexistent.domain.example.net.dll. Sesuai dengan namanya):

IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.

windowmempersulit hal-hal sedikit lebih tenang. Ini adalah jumlah detik kuota yang dapat ditagih. Mengalikan windowdan responses-per-secondmemberikan maksimum kuota apa pun bisa positif, atau lebih mendasar, kapasitas meledak.

Untuk memberikan contoh tangkapan-semua:

Anda adalah nameserver yang berulang dan otoritatif untuk example.net.. Bayangkan tidak ada lalu lintas DNS yang terlihat sama sekali dalam 10 detik terakhir, dan konfigurasi dalam pertanyaan berlaku secara global. Peristiwa berikut terjadi secara berurutan:

  1. Host 198.51.100.1 mengirim 100 permintaan untuk IN NS example.net.. 25 akan diizinkan, dan 75 sisanya akan diabaikan.
  2. Host 198.51.100.1 mengirim 100 permintaan untuk IN A nonexistent.example.net.. 25 akan diizinkan, dan 75 sisanya akan diabaikan.
  3. Host 198.51.100.1 mengirim 1 permintaan untuk IN MX nonexistent-domain.example.net. Ini akan diabaikan karena batas untuk domain yang tidak ada telah tercapai.
  4. Host 198.51.100.1 mengirim 1 permintaan untuk IN A example.net.. Boleh boleh saja.
  5. Host 192.0.2.1 hingga 192.0.2.50 masing-masing mengirim satu permintaan IN NS example.net.. 25 dari mereka mendapatkan balasan dan 25 lainnya diabaikan; kuota untuk 198.51.100.0/24 tidak berlaku untuk host ini, tetapi mereka berbagi kuota untuk 192.0.2.0/24.
  6. Satu detik berlalu
  7. Host 192.0.2.26 hingga 192.0.2.50 ulangi kueri mereka IN NS example.net.. 5 dari mereka mendapatkan balasan dan 20 sisanya diabaikan, karena kuota hanya diisi ulang oleh 5 pertanyaan per detik.
Falcon Momot
sumber
4
iptables -A INPUT -p udp --dport 53 -m recent --set --name dnslimit
iptables -A INPUT -p udp --dport 53 -m recent --update --seconds 60 --hitcount 11 --name dnslimit -j DROP 

Tabel IP dapat bekerja dengan baik. Menjaga lalu lintas keluar dari layanan sepenuhnya jika serangan ditemukan.

Tiffany Walker
sumber
luar biasa! Aku bahkan tidak memikirkan iptables. Tetapi apa artinya itu dalam bahasa Inggris. Saya bisa menebak ... jika beberapa IP mengirim 11 atau lebih permintaan dns memblokirnya selama 60 detik, kan?
Red Cricket
Tidak, terjemahannya adalah: Terima tidak lebih dari 11 paket dalam jangka waktu 60 detik, lepaskan semua paket lainnya.
drcelus
1
Saya mempunyai masalah, setelah mencoba menerapkan solusi bagus Anda, saya mengalami kesalahan seperti: "iptables: Menerapkan aturan firewall: iptables-restore v1.4.7: -c penghitung paket tidak numerik Kesalahan terjadi pada baris: 17" Baris 17 adalah yang pertama salah satu milikmu. Saya harus memuat beberapa modul khusus?
baris pertama adalah sebagai berikut: iptables -A INPUT -p udp -m udp --dport 53 -m baru-baru ini --set --name dnslimit --rsource
2
Saya tidak akan mengatakan bahwa itu "bekerja dengan baik". Nilai batas ini tanpa gagasan sama sekali jika itu sebenarnya permintaan yang sama dengan spam atau permintaan yang berbeda, yang terakhir ini kemungkinan besar akan menjadi lalu lintas yang sah.
Håkan Lindqvist
0

Saya tidak berpikir itu ide yang baik untuk menilai batas, tanyakan pada diri sendiri: apakah Anda menilai membatasi tanggapan server web juga? Menurut Anda mengapa respons DNS kurang penting daripada respons server web?
Dan bahkan jika Anda menilai batas, 5 req / detik itu terdengar sangat rendah.

Sandor Marton
sumber
2
Respons webserver Ratelimiting mungkin tidak menjadi ide yang buruk dalam kasus-kasus tertentu. Tetapi DNS sebagian besar adalah UDP, yang mudah dipalsukan (tidak seperti http), sehingga pembatasan tingkat diperlukan untuk mencegah server nama Anda digunakan dalam serangan amplifikasi atau refleksi.
arjarj
Jika dia bukan resolver terbuka maka saya tidak berpikir itu target yang baik untuk serangan refleksi / amplifikasi, tetapi Anda punya hak. 5 req / detik saya pikir masih terlalu rendah.
Sandor Marton
1
Dia tidak menentukan apakah itu server rekursif atau otoritatif. Untuk membatasi laju server otoritatif masih penting. Juga, ini bukan hanya 5 permintaan per detik, ini 5 dari jawaban yang sama per detik, dan bahkan diperbaiki jika Anda menghasilkan jawaban yang berbeda. Umumnya pengaturan 5 permintaan per detik baik-baik saja diikat (karena server yang sah juga mengajukan pertanyaan lain di antaranya).
arjarj
Ok, saya memeriksa dokumen dan karena saya melihat tingkat-batas adalah pengaturan per klien dan bukan per server. Saya mendapat kesan bahwa binding akan terbatas pada total jika 5req / s. Per klien 5req / detik tidak apa-apa.
Sandor Marton