Я установил сервер BIND 9 и настроил криптографические ключи, чтобы разрешить обновления от клиента. Теперь в моем named.conf
, Я установил следующее:
allow-update { key dns1.example.org.; };
Это работает, и я могу выполнять обновления (добавлять, удалять записи зоны) с моего клиента (nsupdate
команда).
Мне интересно, могу ли я объединить его с ACL. В основном я хочу, чтобы клиенту нужен был правильный ключ, но он также должен исходить из определенной подсети или IP-адреса. Могу я как-нибудь это сделать? Я не нашел ничего об этом сценарии в документации.
Alcs - первый матч. Если вы исключите нужные адреса, вы можете отклонить все несовпадающие адреса, используя любые; затем проверьте соответствие ключа.
allow-update { !{ !allowed; any; }; key keyname; };
Уродливый ответ # 1
Вы можете сделать это только в том случае, если хотите быть творческими, уродливыми и грубыми.
Разрешить обновления только с 1.2.3.0/24 с ключом dns1.example.com.
acl “mix-match” {
! 128.0.0.0/1;
! 64.0.0.0/2
! 32.0.0.0/3
! 16.0.0.0/4
! 8.0.0.0/5
! 4.0.0.0/6
! 2.0.0.0/7
! 0.0.0.0/8 //0 instead of 1 since bit is set in the desired network
! 1.128.0.0/9
! 1.64.0.0/10
! 1.32.0.0/11
! 1.16.0.0/12
! 1.8.0.0/13
! 1.4.0.0/14
! 1.0.0.0/15 //0 instead of 2 since bit is set in the desired network
! 1.3.0.0/16 //1-st bit = 1: we DENY hosts with 1.3.0.0/16 but allow 1.2.0.0/16
! 1.2.128.0/17
! 1.2.64.0/18
! 1.2.32.0/19
! 1.2.16.0/20
! 1.2.8.0/21
! 1.2.4.0/22
! 1.2.0.0/23 //0 instead of 2 since bit is set in the desired network
! 1.2.2.0/24 //1-st bit = 9: we DENY hosts with 1.2.2.0/24 but allow 1.2.3.0/24
key dns1.example.com.;
};
Как выполнить побитовую математику:
На самом деле я не пробовал, но должно работать.
Если у вас несколько разрешенных подсетей, желаю вам удачи.
В связи с этим я рад, что IPv6 еще не получил широкого распространения. :)
Уродливый ответ # 2
Установить отдельно скрытность (т.е. не указан как NS) основной главный сервер имен, в его правилах брандмауэра разрешены пакеты только из "разрешенной" подсети и с его подчиненных серверов имен. В этом режиме разрешите обновления только с помощью ключа. Настройте ведомые устройства для получения данных зоны через AXFR / IXFR и NOTIFY. И не забудьте отключить пересылку обновлений на ведомых устройствах.
Однажды вы сделали это ужасно, имейте в виду, что кто-нибудь из везде может подменить адрес источника в этом пакете обновления UDP DNS, что делает все эти усилия совершенно бессмысленными. (Хотя вы можете отключить UDP, чтобы сделать усилия немного менее бессмысленными).
Я знаю, что вы можете определить match_list, но я не уверен, что вы можете объединить ключ и список совпадений.
allow-update { address_match_list };
например:
options {
allow-update { !192.168.2.7;192.168.2/24;};
};
Я не пробовал это, но, насколько я понимаю, определения следующие:
address_match_list = element ; [ element; ... ]
element = [!] (ip [/prefix] | key key-name | "acl_name" | { address_match_list } )
и поэтому вы можете делать такие вещи, как
acl “mix-match” {
“two-subnets”;
! 10.10.30.101;
10.10.30.0/24;
key dns1-dns2.example.com;
};
zone "abc.def.example.com" in {
type master;
file "named.abc.data";
allow-update{ mix-match };
};
и поэтому передача зон теперь ограничена теми, у которых есть ключ (вне списка совпадений).