Bug 29572

Summary: [DNS Amplification Attacks] настройки по-умолчанию
Product: Sisyphus Reporter: Sergey Y. Afonin <asy>
Component: bindAssignee: placeholder <placeholder>
Status: ASSIGNED --- QA Contact: qa-sisyphus
Severity: enhancement    
Priority: P3 CC: evg, george, glebfm, ldv, placeholder, sem, slev
Version: unstable   
Hardware: all   
OS: Linux   
Attachments:
Description Flags
Предлагаемый вариант bind.options.conf none

Description Sergey Y. Afonin 2013-11-12 11:47:42 MSK
Мне кажется, что стоит расскомментировать в конфиге по-умолчанию allow-query { localnets; } и allow-recursion { localnets; }. И, возможно, добавить allow-query-cache { localnets; } (это в 9.4 появилось). Может быть, ещё описать acl со списком "10.0.0.0/8; 100.64.0.0/10; 172.16.0.0/12; 192.168.0.0/16;" и, тоже, добавить в allow-query/allow-recursion/allow-query-cache. Устал лазить и добавлять/раскомментировать...
Comment 1 Sergey Y. Afonin 2014-10-14 11:40:20 MSK
Так что по поводу allow-query/allow-recursion ? Хотя, есть и другой путь для ограничения данного безобразия: Bug 30398
Comment 2 Fr. Br. George 2014-11-19 16:55:45 MSK
(В ответ на комментарий №0)
> Мне кажется, что стоит расскомментировать в конфиге по-умолчанию allow-query {
> localnets; } и allow-recursion { localnets; }. И, возможно, добавить
> allow-query-cache { localnets; } (это в 9.4 появилось). Может быть, ещё описать
> acl со списком "10.0.0.0/8; 100.64.0.0/10; 172.16.0.0/12; 192.168.0.0/16;" и,
> тоже, добавить в allow-query/allow-recursion/allow-query-cache. Устал лазить и
> добавлять/раскомментировать...

М-м-м. Добавил allow-query-cache в комментарий :). Опишите, пожалуйста, когда ваше решение применимо, и покажите работающий вариант конфигурационного файла с acl. Менять настройку по умолчанию не хочется, но можно же и control написать.
Comment 3 Sergey Y. Afonin 2014-11-19 20:02:39 MSK
Настройку по-умолчанию менять необходимо, так как сейчас Bind - сразу готовый усилитель. 
Слово "localnets"  означает адреса, входящие во все сети, поднятые на интерфейcах, так что, в подавляющем большинстве, этого достаточно. То есть, если у DNS-сервра
eth0: 10.1.1.1/8
eth1: 192.168.1.200/24
"localnets" будет соответствовать "10.0.0.0/8; 192.168.1.0/24". Если в локалке внутреннего маршрутизатора нет, то все локальные клиенты получат доступ. allow-query { any; }; нужно только в случае, если DNS поддерживает публичные зоны. Это, тоже, не очень частый случай. Для корпоративного или локального кэша "localnets" более, чем достаточно, и тут.

allow-query-cache, как выяснилось при более подробном чтении, не очень нужен: если не сказано иное, этот параметр соответствует allow-recursion (и наоборот): 
http://kb.isc.org/article/AA-00503/0/Whats-the-difference-between-allow-query-cache-and-allow-recursion.html
Comment 4 Sergey Y. Afonin 2014-11-19 20:08:09 MSK
Created attachment 6177 [details]
Предлагаемый вариант bind.options.conf

Вот конфиг. Если "localnets" кажется излишне ограниченным всё равно, можно раскомментировать и добавить acl "privatenets_v4" и добавить везде к "localnets".

allow-query { localnets; privatenets_v4; };

По поводу "100.64.0.0/10" - это новый приватный диапазон, но рекомендован для операторов. Может быть, его стоит и убрать. Если надо кому - добавят...
Comment 5 Dmitry V. Levin 2014-11-19 20:18:21 MSK
imho лучше вообще сделать всё по умолчанию localhost-only, либо
allow-query { localhost; }; allow-recursion { localhost; };
либо вообще
listen-on { 127.0.0.1; };

А сисадмин все равно сам настроит, что куда раздавать.
Comment 6 Sergey Y. Afonin 2014-11-19 22:05:16 MSK
(In reply to comment #5)

> либо вообще
> listen-on { 127.0.0.1; };

Без "allow-query { localhost; }; allow-recursion  { localhost; };" велика вероятность, что listen-on закомментируют, и будет то же самое. Разве что, рядом ссылку разместить на
http://www.us-cert.gov/ncas/alerts/TA13-088A с кратким пояснением.
Comment 7 Sergey Y. Afonin 2016-10-21 16:39:27 MSK
(In reply to comment #0)

> allow-recursion { localnets; }

Интересно... Напоминаю: в конфиге содержится вот такое:

 /*
  * Specifies which hosts are allowed to make recursive queries
  * through this server.  If not specified, the default is to allow
  * recursive queries from all hosts.  Note that disallowing recursive
  * queries for a host does not prevent the host from retrieving data
  * that is already in the server's cache.
  */
 //allow-recursion { localnets; };

Сегодня поставил bind-9.9.8-alt4, и он не пускает по-умолчанию (скопировано из options.conf именно этого пакета). В какой-то момент умолчание поменяли ? Тогда комментарий уже не соответствует действительности, получается.