Межсетевое экранирование

Ограничение участников транзакции DNS Query/Response


Рассмотрим пример использования подутверждения allow-query для указания ограничений для транзакции Query / Response, определяя допустимые IP-адреса / подсети в запросах DNS) как на уровне сервера, так и на уровне зоны (для зоны example.ru):

options { allow-query {254.10.20.10; 239.10.30.0/24; }; }; zone "example.ru." { type master; file "zonedb.example.ru"; allow-query {192.249.249.1; 192.249.249.4; }; };

Указывая список IP-адресов или IP-префиксов внутри утверждений options или zone, можно внести путаницу в конфигурационный файл. Более того, список IP-адресов и IP-префиксов может быть одним и тем же для многих утверждений управления доступом внутри name-сервера, и ошибка может возникнуть, если сделано какое-то одно добавление или удаление в данный список. Чтобы избежать таких проблем, в BIND существует способ создания поименованных списков адресов, которые называются access control lists (ACLs). Эти ACLs могут использоваться в тех местах, где допустимо использование списка IP-адресов или IP-префиксов (в качестве аргумента списка соответствующих адресов) в утверждениях управления доступом.

ACLs создаются с использованием утверждения acl в BIND 9.х. Общий синтаксис утверждения acl следующий:

acl acl-list-name { address_match_list };

acl-list-name есть определенная пользователем строка (например, "internal_hosts"). Address_match_list может быть списком IP-адресов, префиксами IP-адресов (обозначающих подсети) или криптографическими ключами. Пример утверждения acl, который использует IP-адрес и подсеть в address_match_list, приведен ниже. В примере 254.10.20.10 обозначает IP-адрес хоста, IP-префикс 239.10.30.0/24 обозначает подсеть класса С.

acl "internal_hosts" { 254.10.20.10; 239.10.30.0/24; };

Можно использовать ACL internal_hosts в тех местах, где используется список IP-адресов или IP-префиксов в утверждениях options и zone следующим образом:

options { allow-query { internal_hosts; }; }; zone "example.ru." { type master; file "zonedb.example.ru"; allow-query { internal_hosts; }; };


Параметр списка соответствующих адресов в утверждении управления доступом может содержать любое из следующих значений:

  • IP-адрес или список IP-адресов;
  • IP-префикс или список IP-префиксов;
  • ACLs;
  • комбинация перечисленных выше значений.


Определение ACLs является важным элементом при конфигурировании ограничений транзакций DNS. Следовательно, администратор первым делом должен задать ACLs, относящиеся к различным транзакциям DNS.

Рекомендация:



Необходимо, чтобы администратор создал поименованный список доверенных хостов (или черный список хостов) для каждого типа транзакций DNS. В общем случае следует рассмотреть следующие категории хостов для включения их в соответствующий ACL:



  • хосты в DMZ, доступные во всех зонах предприятия;



  • все вторичные name-серверы, которым разрешено инициировать зонные пересылки;



  • внутренние хосты, которым разрешено выполнять рекурсивные запросы.



Дополнительно к IP-адресам, IP-префиксам или ACL, параметр списка соответствующих адресов в утверждениях управления доступом может принимать следующие специальные значения:



  • none: нет соответствующих хостов;


  • any: все хосты;


  • localhost: соответствует всем IP-адресам сервера, на котором выполняется name-сервер.


  • localnets: соответствует всем IP-адресам и маскам подсетей сервера, на котором выполняется name-сервер.


Приведем несколько примеров команд для создания ACLs и использования ACLs в утверждениях options и zone:

acl "local_hosts" { 254.10.20.10; 239.10.30.0/24; }; acl "fake-net" { 0.0.0.0/8; 1.0.0.0/8; {; options { allow-query { any; }; blackhole { fake-net; }; }; zone "example.ru" { type master; file "zonedb.example.ru"; allow-query {local_hosts; }; };

Во фрагменте named.conf, приведенном выше, определены два ACLs, local_hosts и fake_net. На уровне сервера разрешены DNS-запросы с любого хоста. Никакие транзакции не разрешены с хостов, включенных в fake-net. Запросы для зоны example.ru могут быть инициированы только хостами, включенными в ACL local_hosts, потому что любое ограничение, указанное в утверждении zone, перекрывает ограничение, указанное в утверждении options.


Содержание раздела