В моем DNS-сервере named.conf я вижу
rate-limit {
responses-per-second 5;
window 5;
};
Что это на самом деле означает? И может ли это вызвать проблемы у DNS-клиентов? Это слишком тесная конфигурация?
Вы должны прочитать справочное руководство администратора для BIND 9.9.
В принципе, responses-per-second
- количество идентичных ответов, которые могут быть отправлены одному адресату в секунду. Определения хитрые.
Единый пункт назначения - это блокировать сетевых адресов, размер настроен в ipv4-prefix-length
или ipv6-prefix-length
применимо. Итак, если ipv4-prefix-length
24 года, и оба 192.0.2.1
и 192.0.2.2
запрашивают DNS-сервер, они разделяют эту квоту и могут отправлять только определенное количество запросов между ними двумя.
Идентичные ответы - это ответы на запросы для определенного типа RR для конкретного существующего имени или для несуществующего имени. Следующие запросы все разные:
IN A example.net.
IN A www.example.net.
IN AAAA example.net.
IN A nonexistent.domain.example.net.
Однако все следующие запросы идентичны (при условии, что nonexistent.domain.example.net.
и т.д. соответствуют своим названиям):
IN A nonexistent.domain.example.net.
IN A nonexistent.domain2.example.net.
IN SOA other.nonexistent.domain.example.net.
window
еще больше усложняет ситуацию. Это количество секунд, на которое может быть сохранена квота. Умножение window
и responses-per-second
дает максимум, при котором любая квота может быть положительной, или, говоря более простым языком, пакетная емкость.
Чтобы дать всеобъемлющий пример:
Вы - неповторяющийся авторитетный сервер имен для example.net.
. Представьте, что трафик DNS вообще не наблюдался за последние 10 секунд, а конфигурация в вопросе применяется глобально. Последовательно происходят следующие события:
IN NS example.net.
. 25 будут разрешены, а остальные 75 будут проигнорированы.IN A nonexistent.example.net.
. 25 будут разрешены, а остальные 75 будут проигнорированы.IN MX nonexistent-domain.example.net.
Он будет проигнорирован, поскольку достигнут предел для несуществующих доменов.IN A example.net.
. Это разрешено.IN NS example.net.
. 25 из них получают ответы, а остальные 25 игнорируются; квота 198.51.100.0/24 не применяется к этим хостам, но они разделяют квоту на 192.0.2.0/24.IN NS example.net.
. 5 из них получают ответы, а остальные 20 игнорируются, поскольку квота пополняется только на 5 запросов в секунду.Он ограничивает количество идентичных ответов, которые один DNS-клиент может получить за секунду. В window 5
опция позволяет пачку ответов 5 * 5.
«Идентичные ответы» и «единый DNS-клиент» - здесь несколько неочевидные термины, подробнее читайте здесь: http://web.archive.org/web/20140209100744/http://ss.vix.su/~vjs/rl-arm.html .
Как правило, ограничение скорости - это хорошо - может когда-нибудь помочь вам в случае атаки DOS. В большинстве случаев значения по умолчанию подходят.
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 тоже может работать. Полностью исключает доступ трафика к службе в случае обнаружения атаки.
Я не думаю, что это хорошая идея - ограничивать скорость, спросите себя: вы тоже ограничиваете скорость ответов веб-сервера? Как вы думаете, почему ответы DNS менее важны, чем ответы веб-сервера?
И даже если вы ограничите скорость, эти 5 запросов в секунду звучат очень низко.