Сетевые средства Debian/BIND/Ключи транзакций

Материал из Викиучебника — открытых книг для открытого мира

Для обеспечения защищенного обмена между DNS-серверами (в частности — между первичным и вторичными серверами зоны) используются цифровые подписи транзакций (англ. transaction signature, TSIG), обеспечиваемые, в свою очередь, ключами транзакций.

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

Создание[править]

Созданы ключи транзакций также могут быть программой dnssec-keygen(8), подобно:

# dnssec-keygen -a HMAC-SHA256 -b 256 -n HOST -- bar-foo. 

Здесь мы используем алгоритм SHA-2 разрядности 256 бит, и такую же разрядность ключа, в том числе и для совместимости с DNS-сервером NSD. Результирующее имя файла будет подобно Kbar-foo.+163+42042.key.

Именем данного ключа выбрано bar-foo. В общем случае, имена ключей могут быть выбраны достаточно произвольно. Имеет смысл, однако, использовать имена ключей, производные от имен использующих их серверов. Также, чтобы избежать путаницы, можно выбрать конкретный порядок перечисления имен серверов в имени ключа; например — алфавитный (bar-baz., baz-foo, foo-qux.)

Внесение в конфигурацию[править]

Ключи подлежат внесению в конфигурацию BIND, для чего имеет смысл предусмотреть отдельный, доступный для чтения только серверу, конфигурационный файл, например — /etc/bind/named.conf.shared-keys:

# (umask 0027 && sg bind -c touch\ /etc/bind/named.conf.shared-keys) 

К сожалению, чтение этого файла не предусмотрено конфигурацией BIND в Debian. Соответствующую команду include можно, однако, включить в named.conf.options:

include "/etc/bind/named.conf.shared-keys";

В файл помещаются определения ключей следующего вида:

key bar-foo. {
    algorithm hmac-sha256;
    secret "ключ";
};

Где ключ — ключ в представлении Base64, извлекаемый из .key-файла.

Привязка к удаленным серверам[править]

Наконец, для того, чтобы связать ключ с конкретным удаленным сервером, используются блоки server. Например (предполагая, что удаленный сервер ns2.example.org также известен как l33t.example.org, и доступен по IP-адресам 2001:db8:1337::53:53 и 192.0.2.153):

server 2001:db8:1337::53:53 {
    keys { betby-l33t. };
};

server 192.0.2.153 {
    keys { betby-l33t. };
};

В заключение отметим, что актуализировать внесенные изменения вновь можно командой # rndc reload .

См. также[править]