dnssecについて勉強しているが実感がわかないので実際に設定してみようと思った。
vpsを2台持っているので、まずはそれぞれにbindをインストールする。
1台はcentos8、もう一台はUbuntu 18.04.5 LTS
bindについて調べていたら、centos8が今年で終わるということを知った。
まあなんかしらの後継が出るのだろうから、それはさておき
centosとubuntuでbindのインストール・設定方法が違うのでまずそれを書く。
まずcentos8
# rpm -q bind bind-chroot bind-utils パッケージ bind はインストールされていません。 パッケージ bind-chroot はインストールされていません。 bind-utils-9.11.20-5.el8_3.1.x86_64 # dnf install bind bind-chroot bind-utils (略)
基本設定
# cat /etc/named.conf options { listen-on port 53 { 127.0.0.1; xx.xx.xx.xx; }; // listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; yy.yy.yy.yy; }; recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; zone "monqy.net" { type master; file "monqy.net.zone"; };
dnssec-enable yes; dnssec-validation yes; がデフォルトで書いてある。
デフォルトからの変更箇所
まずlistenするipアドレス。xx.xx.xx.xxは自身のIPアドレス。
listen-on port 53 { 127.0.0.1; xx.xx.xx.xx; };
queryを許可するアドレス。とりあえず確認のため、localhostともう一台のbindを動かすサーバーのIPアドレスyy.yy.yy.yyだけを許可する。
allow-query { localhost; yy.yy.yy.yy; };
zoneファイルの情報。こっちをmasterにする。
zone "monqy.net" { type master; file "monqy.net.zone"; };
zoneファイル。ns01.monqy.netが自身のfqdnである。 参考にした情報だと、fqdnのAレコードとホスト名のみのAレコードが両方あったのでとりあえずマネする。
# cat /var/named/monqy.net.zone $TTL 3600 @ IN SOA ns01.monqy.net. root.monqy.net. ( 2021042801 ;Serial 3600 ;Refresh 300 ;Retry 360000 ;Expire 86400 ) ;Negative IN NS ns01.monqy.net ns01.monqy.net IN A xx.xx.xx.xx ns01 IN A xx.xx.xx.xx www2 IN A xx.xx.xx.xx www3 IN A yy.yy.yy.yy
named-checkconfと named-checkconf -zをやって設定に問題がないことを確認。
# named-checkconf (問題がなければ何もでない) # named-checkconf -z zone localhost.localdomain/IN: loaded serial 0 zone localhost/IN: loaded serial 0 zone 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa/IN: loaded serial 0 zone 1.0.0.127.in-addr.arpa/IN: loaded serial 0 zone 0.in-addr.arpa/IN: loaded serial 0 zone monqy.net/IN: loaded serial 2021042801
firewallについては省略。 queryを許可したyy.yy.yy.yyからdigで名前解決できることを確認する。
~$ dig @xx.xx.xx.xx www2.monqy.net (略) ;; ANSWER SECTION: www2.monqy.net. 3600 IN A xx.xx.xx.xx (略)
今度はubuntu。パッケージ名(だっけ?)がcentosと違う。
sudo apt-get install bind9
ubuntuの方は、named.confの中にincludeが書いてあって、設定ファイルが分かれている。
/etc/bind/named.conf.options /etc/bind/named.conf.local /var/cache/bind/monqy.net.zone ※作る
/etc/bind/named.options は、listen-onとallow-queryを書く。
$ sudo cat /etc/bind/named.conf.options [sudo] password for clebriz: options { directory "/var/cache/bind"; listen-on port 53 { localhost; yy.yy.yy.yy; }; allow-query { localhost; xx.xx.xx.xx; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
/etc/bind/named.conf.local は、zone情報を書く。自身をslaveとして、masterのIPアドレスを書く。
ゾーンファイルはmasterからコピーされることになると思う。masterと同じ名前でいいと思うが、一応変えておく。
$ sudo cat /etc/bind/named.conf.local zone "monqy.net" IN { type slave; file "monqy.net.slave.zone"; masters { xx.xx.xx.xx; }; };
/var/cache/bind/monqy.net.slave.zone がゾーンファイル。
これはmasterからコピーされるので中身はなくてもいいのか?でも動作確認のため書いておく。
(後でゾーンファイルの中身を見ようとcatとかすると文字化けして表示できない。これは直接見ちゃいけないファイルなのか?)
bindを起動する。
sudo systemctl enable bind9 sudo systemctl start bind9 sudo systemctl status bind9
statusを見てみると... 動いてはいるのだが、パーミッションがなくてzoneファイルを更新できないというメッセージが。
sudo systemctl status bind9 (略) zone monqy.net/IN: transfer: could not set file modification time of 'monqy.net.slave.zone': permission denied (略)
chownでownerとグループを bindに変える。
$ sudo chown bind:bind /var/cache/bind/monqy.net.slave.zone $ ls /var/cache/bind/ -l total 16 -rw-r--r-- 1 bind bind 821 Apr 28 02:35 managed-keys.bind -rw-r--r-- 1 bind bind 512 Apr 28 02:35 managed-keys.bind.jnl -rw-r--r-- 1 bind bind 525 Apr 28 02:33 monqy.net.slave.zone
dnssec-validation auto; という設定があるが、dnssec-enable yes; は、ない。
$ sudo cat /etc/bind/named.conf include "/etc/bind/named.conf.options"; include "/etc/bind/named.conf.local"; include "/etc/bind/named.conf.default-zones"; $ sudo cat /etc/bind/named.conf.local zone "monqy.net" IN { type slave; file "monqy.net.slave.zone"; masters { xx.xx.xx.xx; }; }; $ sudo cat /etc/bind/named.conf.options options { directory "/var/cache/bind"; listen-on port 53 { localhost; yy.yy.yy.yy; }; allow-query { localhost; xx.xx.xx.xx; }; dnssec-validation auto; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; };
dnssec-enable yes; を書くだけじゃダメだよね。鍵を作ったり署名したりしないと... (続く)