構築ネタ(FreeBSD) BIND を ports と入れ替える

Pocket

ここのところ立て続けにCERT勧告で BIND の脆弱性が指摘されている。BASE に含まれる BIND はバージョンも古いし更新も遅れ気味なので、ports と入れ替えることにした。BIND の設定そのものは特に目新しいこともないので省略。

参考:
ISC BIND 9 の脆弱性を使用したサービス運用妨害攻撃に関する注意喚起(2011.05.31)
ISC BIND 9 サービス運用妨害の脆弱性に関する注意喚起(2011.07.06)
ISC BIND 9 サービス運用妨害の脆弱性に関する注意喚起(2011.11.17)

現在のバージョンを確認する。

# named -v
BIND 9.6.2-P2

ports から最新のBIND をインストールする。このとき、make のオプションに "WITH_REPLACE_BASE=yes" を加えると、BASE の BIND を ports のものと完全に置き換えることが出来るが、これはお勧めしない。なぜなら、freebsd-update を実行する度に BASE の BIND に戻そうとするから。BASE と ports と両方インストールしておき、rc.conf で named のパスを指定することで使い分ける方法を採る。

# portinstall bind98

rndc.key を再生成する。

# rndc-confgen -b 512 > /usr/local/etc/rndc.conf

このとき、/usr/local/etc/rndc.key が /etc/namedb/rndc.key のシンボリックリンクとして作成される。rndc.key は元々存在するファイルであるため、新たに生成されたrndc.conf とは内容が一致しない。念のため、rndc.conf に合わせて rndc.key の内容も修正しておく。具体的には、secret 行を新しい rndc.conf のものと差し替える。

続いて、/etc/rc.conf に以下の一文を追加。

[/etc/rc.conf]
named_program="/usr/local/sbin/named"

しかる後に、BIND を再起動。明示的に停止した上で起動させる。

# ps ax | grep named
  877  ??  Ss     0:02.21 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -
 2033  ??  Is     1:54.54 /usr/sbin/named -t /var/named -u bind
98231   0  S+     0:00.00 grep named
# kill 2033

# /usr/local/sbin/named -t /var/named -u bind
# ps ax | grep named
  877  ??  Ss     0:02.38 /usr/sbin/syslogd -l /var/run/log -l /var/named/var/run/log -
98235  ??  Ss     0:10.87 /usr/local/sbin/named -t /var/named -u bind
 6680   0  S+     0:00.00 grep named

なぜか起動時にSYSLOGにエラーを吐く。
syslog抜粋:

Nov 19 20:57:07 atom named[98235]: Warning: view local-zone: 'empty-zones-ena
ble/disable-empty-zone' not set: disabling RFC 1918 empty zones
Nov 19 20:57:07 atom named[98235]: command channel listening on 127.0.0.1#953
Nov 19 20:57:07 atom named[98235]: managed-keys-zone ./IN/local-zone: loading 
from master file 77705e291908193a368e1a63ec464c83c5519736a0faa4bc753d76fc79750
a68.mkeys failed: file not found
Nov 19 20:57:07 atom named[98235]: managed-keys-zone ./IN/external: loading fr
om master file 3c4623849a49a53911c4a3e48d8cead8a1858960bccdea7a1b978d73ec2f06d
7.mkeys failed: file not found

実用上は特に影響はないが、これを回避するには managed-keys.bind という名の空ファイルを作ってやればよい。

# touch /etc/namedb/working/managed-keys.bind

ちなみに、現時点のバージョン

# named -v
BIND 9.8.1-P1

この記事にコメントする

Powered by WordPress, WP Theme designed by WSC Project. ログイン