bind9 allow-query
Привет.
Я знаю, тут есть опытных сисадминов... Собственно, поводом для
исследования оказалось то, что Куклин заметил, что мой named, похоже,
участвует в DNS amplification attack и попросил быстро отключить
рекурсию. Отключить-то я отключил, потом полез на slave, типа починить
и там, и...
Цитирую /usr/share/doc/bind9-doc/arm/Bv9ARM.ch06.html из bind9-doc
1:9.8.1.dfsg (ну и вообще интернет нам рассказывает то же самое):
allow-query
Specifies which hosts are allowed to ask ordinary DNS
questions. allow-query may also be specified in the zone statement,
in which case it overrides the options allow-query statement. If not
specified, the default is to allow queries from all hosts.
Note
allow-query-cache is now used to specify access to the cache.
Обратите внимание на "If not specified".
Теперь результаты экспериментов на slave. Там версия бинда несколько
более старая, 1:9.6.ESV.R4+dfsg-0+lenny2, может, разница и есть, но
похоже, процитированное описание параметра достаточно давнее.
Итак. Все запросы выполняются с внешнего по отношению к серверу хоста,
имитирующего абстрактный хост в интернете. Изменения параметров
проводятся в глобальном блоке options, для простоты.
В отсутствие allow-query в named.conf.options:
zsh% host minas.lasgalen.net nest.lasgalen.net; host www.ru nest.lasgalen.net
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
minas.lasgalen.net has address 178.63.209.8
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
Host www.ru not found: 5(REFUSED)
То есть по умолчанию имеем то поведение, которого хотелось бы (за свою
зону отвечаем, с чужой посылаем). Локально при этом тоже все хорошо,
т.е. локально оно на рекурсивные запросы отвечает.
Эквивалентное, согласно процитированнной документации, allow-query { any; };
дает, сюрприз, нифига не эквивалентный результат, как раз позволяющий
amplification (на мастере стояло именно оно):
zsh% host minas.lasgalen.net nest.lasgalen.net; host www.ru nest.lasgalen.net
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
minas.lasgalen.net has address 178.63.209.8
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
www.ru has address 194.87.0.50
www.ru mail is handled by 5 hq.demos.ru.
Если же поставить allow-query { localhost; };, то сервер перестает
отвечать наружу и за свои зоны:
zsh% host minas.lasgalen.net nest.lasgalen.net; host www.ru nest.lasgalen.net
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
Host minas.lasgalen.net not found: 5(REFUSED)
[1] 23421 exit 1 host minas.lasgalen.net nest.lasgalen.net
Using domain server:
Name: nest.lasgalen.net
Address: 31.28.5.91#53
Aliases:
Host www.ru not found: 5(REFUSED)
Как же так, дорогая редакция? Такое, гм, недокументированное поведение
вообще где-то документировано, или как?
Reply to: