Trong máy chủ DNS của tôi có tên. Tôi thấy
rate-limit {
responses-per-second 5;
window 5;
};
Điều này thực sự có ý nghĩa gì? Và nó có thể gây ra sự cố máy khách DNS không? Đây có phải là một cấu hình quá chặt chẽ?
Trong máy chủ DNS của tôi có tên. Tôi thấy
rate-limit {
responses-per-second 5;
window 5;
};
Điều này thực sự có ý nghĩa gì? Và nó có thể gây ra sự cố máy khách DNS không? Đây có phải là một cấu hình quá chặt chẽ?
Câu trả lời:
Nó giới hạn số lượng phản hồi giống hệt nhau mà một máy khách DNS có thể nhận được trong một giây. Các window 5tùy chọn cho phép sự bùng nổ của 5 * 5 câu trả lời.
"Phản hồi giống hệt nhau" và "máy khách DNS đơn" là một số thuật ngữ không rõ ràng ở đây, hãy đọc phần này để biết thêm thông tin: http://web.archive.org/web/20140209100744/http://ss.vix.su/~ vjs / rl-arm.html .
Nói chung, đó là một điều tốt để giới hạn tỷ lệ - có thể giúp bạn trong trường hợp DOS tấn công một ngày nào đó. Mặc định sẽ ổn cho hầu hết các trường hợp.
windowchỉ được sử dụng để kiểm soát thời gian trong đó "phản hồi giống hệt" được gửi đến từng "máy khách DNS duy nhất" được theo dõi. Các BIND 9 Quản trị Reference Manual trạng thái: các [RRL khách hàng] Tài khoản không thể trở thành tích cực hơn so với mỗi giây giới hạn hay tiêu cực hơn windowgiới hạn cho mỗi thứ hai lần. Thông báo này của Vernon Schryver giải thích chi tiết hơn về hành vi của thuật toán.
Bạn nên đọc hướng dẫn tham khảo của quản trị viên cho BIND 9.9 .
Về cơ bản, responses-per-secondlà số lượng trả lời giống hệt nhau có thể được gửi đến một đích duy nhất, mỗi giây. Các định nghĩa là khó khăn.
Một đích duy nhất là một khối các địa chỉ mạng, có kích thước được định cấu hình trong ipv4-prefix-lengthhoặc ipv6-prefix-lengthcó thể áp dụng. Vì vậy, nếu ipv4-prefix-lengthlà 24 và cả hai 192.0.2.1và 192.0.2.2đang truy vấn máy chủ DNS, họ sẽ chia sẻ hạn ngạch này và chỉ có thể gửi rất nhiều truy vấn giữa hai người.
Trả lời giống hệt là trả lời các truy vấn cho một RRtype cụ thể cho một tên tồn tại cụ thể hoặc cho một tên không tồn tại. Các truy vấn sau đây đều khác biệt:
IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.
Tuy nhiên, tất cả các truy vấn sau đây giống hệt nhau (giả sử, nonexistent.domain.example.net.v.v. sống đúng với tên của chúng):
IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.
windowlàm phức tạp thêm một chút vẫn còn. Đó là số giây mà hạn ngạch có thể được đánh dấu. Nhân windowvà responses-per-secondđưa ra mức tối đa mà bất kỳ hạn ngạch nào cũng có thể tích cực, hoặc trong điều kiện cơ bản hơn, khả năng bùng nổ.
Để đưa ra một ví dụ bắt tất cả:
Bạn là máy chủ tên không có thẩm quyền cho example.net.. Hãy tưởng tượng không có lưu lượng DNS nào được nhìn thấy trong 10 giây qua và cấu hình trong câu hỏi được áp dụng trên toàn cầu. Các sự kiện sau đây xảy ra tuần tự:
IN NS example.net.. 25 sẽ được cho phép, và 75 còn lại sẽ bị bỏ qua.IN A nonexistent.example.net.. 25 sẽ được cho phép, và 75 còn lại sẽ bị bỏ qua.IN MX nonexistent-domain.example.net. Nó sẽ bị bỏ qua vì đã đạt đến giới hạn cho các miền không tồn tại.IN A example.net.. Điều đó được cho phép.IN NS example.net.. 25 trong số họ nhận được trả lời và 25 người còn lại bị bỏ qua; hạn ngạch cho 198.51.100.0/24 không áp dụng cho các máy chủ này, nhưng chúng chia sẻ hạn ngạch cho 192.0.2.0/24.IN NS example.net.. 5 trong số họ nhận được trả lời và 20 người còn lại bị bỏ qua, vì hạn ngạch chỉ được bổ sung bởi 5 truy vấn mỗi giây.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
IPtables có thể hoạt động tốt như vậy. Giữ lưu lượng truy cập ra khỏi dịch vụ hoàn toàn nếu một cuộc tấn công được tìm thấy.
Tôi không nghĩ rằng nên đánh giá giới hạn, hãy tự hỏi: bạn có đánh giá giới hạn phản hồi của máy chủ web không? Tại sao bạn nghĩ phản hồi DNS ít quan trọng hơn phản hồi của máy chủ web?
Và ngay cả khi bạn đánh giá giới hạn, 5 req / giây nghe có vẻ rất thấp.