TSIGについてまとめてみた(未整理)

TSIG って何

ゾーン転送における、スレイブサーバ側の、マスターサーバからのなりすまし防止のための仕組み。

スレーブ・サーバのゾーン転送とセキュリティ (3/3):実用 BIND 9で作るDNSサーバ(5) - @IT
http://www.tatsuyababa.com/NW-DNS/NW-200302-DNS07.pdf
https://jprs.jp/tech/material/rfc/RFC2845-ja.txt

TSIG(Transaction Signature)。
TSIGはサーバとクライアントで共通の秘密鍵保有し、DNSメッセージ全体に署名を行うことでメッセージの完全性の保証やリクエスト認証を可能にします。

鍵生成コマンド

結構時間がかかる。中々結果が返らなくてもあせらない。

/usr/sbin/dnssec-keygen -a HMAC-MD5 -b 512 -n HOST example.com
# 結果
$ ll *key
 Kexample.com.+157+13212.key ( key の前の数字はランダム?)
$ ll *private
 Kexample.com.+157+13212.private ( private の前の数字はランダム?)

bind への設定 (マスターサーバ・スレーブサーバ両方での設定)

生成された「Kexample.com.+157+*.key」ファイルを開くと以下のようになる。

cat  Kexample.com.+157+13212.key
example.com. IN KEY 512 3 157 jRRJA...(省略)

の 157 以降「jRRJA...(省略)」部分を /etc/bind/tsig-keys/example.com.key (bind:bind 600) で以下のように保存。
なお、本操作は root 権限での実施が望ましい。(というかじゃないと操作できなかったっぽい)

key example.com {
    algorithm hmac-md5;
    secret "jRRJA...(省略)";
};

bind への設定方法

http://www.tatsuyababa.com/NW-DNS/NW-200302-DNS07.pdf
に記載の通り。named.conf に以下のように記載する。

TSIG付きDNSダイナミックアップデートの設定(named.confファイル)

# 正引きゾーン sample
zone "example.com" {
        type master;
        file "example.com.zone";
        allow-update { key ddns.example.com.; };
};
# 逆引きゾーン  sample
zone "0.168.192.in-addr.arpa" {
        type master;
        file "0.168.192.in-addr.arpa.zone";
        allow-update { key ddns.example.com.; };
};
# TSIG鍵の設定  sample
key ddns.example.com. {
        algorithm hmac-md5;
        secret "iSUuKtizDJEK/9ptgewTHQ==";
};

セカンダリサーバにおけるゾーン転送の設定(named.confファイル)

// TSIGを使用するサーバの設定
server 192.168.0.10 {
keys { axfr.example.com.; };
};
// TSIG鍵の設定
key axfr.example.com. {
algorithm hmac-md5;
secret "nAgPY1cTo8HJ/FXw1waaow==";
};