[Memo2008][EPA]tako作業メモ(納多)(080710)

Bind の設定

アップデート

本作業中, Bind にセキュリティホールが報告された ので, アップデートを行う.

$ sudo -s
# cd /usr/local/src
# wget http://ftp.isc.org/isc/bind9/9.4.2-P1/bind-9.4.2-P1.tar.gz
# tar zxfv bind-9.4.2-P1.tar.gz
# cd bind-9.4.2-P1

念のため過去のデータのバックアップをしておく.

# cp -R /usr/local/bind /usr/local/bind-20080710
# ./configure --prefix=/usr/local/bind

configure の最後で以下のような警告が出現した.

WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
WARNING                                                                 WARNING
WARNING         Your OpenSSL crypto library may be vulnerable to        WARNING
WARNING         one or more of the the following known security         WARNING
WARNING         flaws:                                                  WARNING
WARNING                                                                 WARNING
WARNING         CAN-2002-0659, CAN-2006-4339, CVE-2006-2937 and         WARNING
WARNING         CVE-2006-2940.                                          WARNING
WARNING                                                                 WARNING
WARNING         It is recommended that you upgrade to OpenSSL           WARNING
WARNING         version 0.9.8d/0.9.7l (or greater).                     WARNING
WARNING                                                                 WARNING
WARNING         You can disable this warning by specifying:             WARNING
WARNING                                                                 WARNING
WARNING               --disable-openssl-version-check                   WARNING
WARNING                                                                 WARNING
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING
WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING WARNING

Bind は OpenSSL のバージョン番号のみをチェックしているためこのような警告を出すが, Debian ではバージョン番号が古いままパッチを当てているためこのような警告が出る.

以下のようにして再実行.

# ./configure --prefix=/usr/local/bind --disable-openssl-version-check

# make
# make install

設定中のため bind は起動していない. よって再起動は不要.

途中から作業やり直し

前回 (080417 頃) から時間が開いてしまったため,

  • ika のゾーンファイルが更新された
  • ahs.scitec.kobe-u.ac.jp を担当していた tide が引退した
  • 以前は tako をプライマリ, ika をセカンダリとして 運用するように設定していたが, 研究室ミーティングにより ika はセカンダリにしないことにした.
  • 納多が作業内容を忘れた

など, 環境がかなり変わってしまった. 再度設定したほうが混乱が少ないと判断し, 途中から設定をやり直すことに決めた.

ゾーンファイルの用意

ika から namedb を移植する. ika にログインする.

ika$ ssh -l noda ika
ika$ cd /usr/local/bind/etc
ika$ sudo -s
ika# tar zcfv namedb.tar.gz namedb/

tako に戻る.

# cd /usr/local/bind/etc

念のため, 古い namedb は別名として保存しておく.

# mv namedb namedb-20080710

ika:/usr/local/bind/etc/namedb.tar.gz を /usr/local/bind/etc/ika_namedb.tar.gz として保存する.

# tar zxfv ika_namedb.tar.gz

2008 年度の DNS の設定

念のため DNS の設定について示す.

  • 過去 (2007 年度) の運用方針
    • ahs は tide が担当, epa は ika が担当, 逆引きは ika が担当.
  • 今回 (2008 年度) の運用方針
    • ahs, aoe, epa は tako が担当, 逆引きも tako が担当.
    • セカンダリ DNS は置かない

上記の場合に変更が行われる設定を列挙する. 特に明記しない限り, /usr/local/bind/etc/namedb/ 内のファイルを指す.

  • epa.zone の変更内容
    • MX レコード
      • 注意
        • tako の qmail が設定されていないうちは MX レコードは変更しないほうがいい
      • 変更前
        • IN MX 10 ika.epa.scitec.kobe-u.ac.jp.
      • 変更後
        • IN MX 10 tako.epa.scitec.kobe-u.ac.jp.
    • CNAME レコード
      • 変更前
        • www IN CNAME ika.epa.scitec.kobe-u.ac.jp.
      • 変更後
        • www IN CNAME tako.epa.scitec.kobe-u.ac.jp.
    • A レコード
      • 変更前
        • ns IN A 133.30.109.22
        • mail IN A 133.30.109.22
        • @ IN A 133.30.109.22
      • 変更後
        • ns IN A 133.30.109.21
        • mail IN A 133.30.109.21
        • @ IN A 133.30.109.21
  • ahs.rev, ahs.zone, named.conf などについては変更の必要なし
  • ika:/usr/local/bind/etc/namedb/epa.zone の変更内容
    • tako の epa.zone と同様
  • gradis.scitec.kobe-u.ac.jp:/etc/named.conf
    • epa.scitec.kobe-u.ac.jp. ゾーンの master の IP を ika の IP(133.30.109.22) から tako の IP (133.30.109.21) に変更.
  • gradis.scitec.kobe-u.ac.jp:/var/named/scitec.zone
    • epa.scitec.kobe-u.ac.jp. ゾーンのネームサーバを ika から tako に変更.
      • 変更前
        • ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.22
      • 変更後
        • ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.21
  • その他
    • 情報実験機の IP の情報を書き換えなくてはならないのでは?
    • 最近新しく登録された固定 IP 群を追記する必要がある
    • aoe.scitec.kobe-u.ac.jp ドメインの MX レコードの設定が gradis に直接書かれていることに注意 (変更の必要はないが)
    • ahs.rev は epa.rev に名前変更
    • ika, tako の設定入れ替え時はキャッシュの生存時間を短くすること

namedb の変更

/usr/local/bind/etc/namedb/ 内のファイルに変更を加える.

epa.zone

epa.zone 内の項目について, それぞれ, 上の行を下の行に書き換えた.

IN      MX      10      ika.epa.scitec.kobe-u.ac.jp.
IN      MX      10      tako.epa.scitec.kobe-u.ac.jp.
www             IN      CNAME   ika.epa.scitec.kobe-u.ac.jp.
www             IN      CNAME   tako.epa.scitec.kobe-u.ac.jp.

ns              IN      A       133.30.109.22
ns              IN      A       133.30.109.21

mail            IN      A       133.30.109.22
mail            IN      A       133.30.109.21

@               IN      A       133.30.109.22
@               IN      A       133.30.109.21
ahs.zone

ahs.zone 内の項目について, それぞれ, 上の行を下の行に書き換えた.

IN      MX      10      ika.epa.scitec.kobe-u.ac.jp.
IN      MX      10      tako.epa.scitec.kobe-u.ac.jp.
ns              IN      A       133.30.109.22
ns              IN      A       133.30.109.21

mail            IN      A       133.30.109.22
mail            IN      A       133.30.109.21

@               IN      A       133.30.109.22
@               IN      A       133.30.109.21

起動テスト

以下のコマンドを実行すると, bind ユーザで, /usr/local/bind/etc/namedb/named.conf を config_file として読み込む. ちなみに -c オプションを指定しない場合は /etc/namedb/named.conf が読み込まれる

# /usr/local/bind/sbin/named -u bind \
    -c /usr/local/bind/etc/namedb/named.conf

何も表示されなかった.

/var/log/syslog を確認. 関係ありそうな行を以下に示す.

Jul 10 15:28:21 tako named[15182]: starting BIND 9.4.2-P1 -u bind -c /usr/local/bind/etc/namedb/named.conf
Jul 10 15:28:21 tako named[15182]: loading configuration from '/usr/local/bind/etc/namedb/named.conf'
Jul 10 15:28:21 tako named[15182]: /usr/local/bind/etc/namedb/named.conf:139: open: /usr/local/bind/etc/rndc.key: file not found
Jul 10 15:28:21 tako named[15182]: loading configuration: file not found
Jul 10 15:28:21 tako named[15182]: exiting (due to fatal error)

named.conf を見ると, 最後の行に

include "/usr/local/bind/etc/rndc.key";

とあるが, 存在しないので読み込めず, エラーが出て起動できなかったようだ.

一旦置いておき, 他の設定に進む.

上流 DNS サーバの設定

上流 DNS サーバの設定については, 大半の作業が 2007 年の ika 構築時に行われており, 新たに行うことは少ない.

念のため, 確認を行う.

epa.scitec.kobe-u.ac.jp ゾーンなどのエントリ確認

scitec.kobe-u.ac.jp を担当している gradis.scitec.kobe-u.ac.jp の /etc/named.conf に epa.scitec.kobe-u.ac.jp ゾーンのエントリがあることを確認する.

なお, 以下は古い設定 (ika を DNS サーバとしている) であるが, 本運用開始時には tako を DNS サーバとするよう書き換える必要がある.

gradis.scitec.kobe-u.ac.jp:/etc/named.conf 内に以下の記述を確認した.

zone "ahs.scitec.kobe-u.ac.jp" {
        type slave;
        file "slave/ahs.zone";
        masters {
                133.30.109.22;
        };
        allow-query { any; };
};

zone "epa.scitec.kobe-u.ac.jp" {
        type slave;
        file "slave/epa.zone";
        masters {
                133.30.109.22;
        };
        allow-query { any; };
};

gradis.scitec.kobe-u.ac.jp:/var/named/scitec.zone 内に 以下の記述を確認.

;; for 133.30.109.22 domain
; ahs
ahs.scitec.kobe-u.ac.jp.        IN      NS      ika.epa.scitec.kobe-u.ac.jp.
ika.epa.scitec.kobe-u.ac.jp.    IN      A       133.30.109.22
ahs.scitec.kobe-u.ac.jp.        IN      NS      gradis.scitec.kobe-u.ac.jp.
; epa
epa.scitec.kobe-u.ac.jp.        IN      NS      ns.epa.scitec.kobe-u.ac.jp.
ns.epa.scitec.kobe-u.ac.jp.     IN      A       133.30.109.22
epa.scitec.kobe-u.ac.jp.        IN      NS      gradis.scitec.kobe-u.ac.jp.
; aoe
aoe.scitec.kobe-u.ac.jp.        IN      A       133.30.109.22
; cps
cps.scitec.kobe-u.ac.jp.        IN      A       133.30.109.22

gradis 側の逆引きゾーンファイルを見て 0/25 の権限を ns.epa.scitec.kobe-u.ac.jp にあることを確認.

gradis:/etc/named.conf 内で "109.30.133" で検索すると, 以下の記述を見つけた.

zone "109.30.133.in-addr.arpa" {
        type master;
        file "master/ahs/ahs.rev";
        allow-query { any; };
};

gradis 側の逆引きゾーンファイルは /var/named/master/ahs/ahs.rev にあった. /var/named/master/ahs/ahs.rev に以下の記述を確認.

0/25    3600    IN      NS      ns.epa.scitec.kobe-u.ac.jp.

ゾーンファイルの確認

tako:/usr/local/bind/etc/namedb/ahs.rev について以下を確認した.

  • 逆引きのゾーンファイル ahs.rev が epa の名前を返すことを確認

すべての PTR レコードが "xxxx.epa.scitec.kobe-u.ac.jp" というリソース を持っていることを確認した.

  • 逆引きの権限は ns.epa.scitec.kobe-u.ac.jp が持っていることを確認

以下の行を確認.

@       IN      NS      ns.epa.scitec.kobe-u.ac.jp.

ファイルフォーマットチェック

root@tako:/usr/local/bind/etc/namedb# named-checkconf named.conf kobe-
named.conf:139: open: /usr/local/bind/etc/rndc.key: file not found

まず, rndc.key を作らなくてはならない.

root@tako:/usr/local/bind/etc/namedb# named-checkzone ahs.scitec.kobe-u.ac.jp ahs.zone
zone ahs.scitec.kobe-u.ac.jp/IN: loaded serial 2008052202
OK

root@tako:/usr/local/bind/etc/namedb# named-checkzone epa.scitec.kobe-u.ac.jp epa.zone
zone epa.scitec.kobe-u.ac.jp/IN: loaded serial 2008062502
OK

rndc の設定

rndcコマンドは zone のリロード, 再起動, コンフィグファイルの読み直しなどを行うコマンドである.

まず, rndc-confgenを実行することで, 必要な設定ファイルの「もと」を生成する.

root@tako:/usr/local/bind/etc/namedb# rndc-confgen
# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;
        secret "SZN/mCIMkFJmFJ/98jlcMQ==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "SZN/mCIMkFJmFJ/98jlcMQ==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

secret "SZN/mCIMkFJmFJ/98jlcMQ=="; は認証に用いる共通鍵(パスワード)を表す. 従って, ここに挙げているのは例であって, 実際の設定とは異なる.

rndc-confgen を試しに何度か実行してみたが, 実行するたびに鍵の内容が変わった.

rndc-confgen の出力を /usr/local/bind/etc/rndc.conf として保存する.

# rndc-confgen > /usr/local/bind/etc/rndc.conf

生成された rndc.conf のコメントアウトされている箇所のうち, controls 以下を named.conf の末尾に追記する (ika から持ってきたので, 既に追記されていた).

また, 次の一行を named.conf に追記する (これも既に追記されていた).

include "/usr/local/bind/etc/rndc.key";

rndc.conf コメントアウトされている箇所のうち, key で始まる4行を /usr/local/bind/etc/rndc.key として保存する.

念のため, rndc.conf のコメントアウトされている箇所を削除する.

パーミッションを以下のように設定する.

root@ika:/usr/local/bind/etc# chgrp -R epaadmin .

epaadmin グループを作っていないので設定できない. とりあえず root を使っているときにデフォルトの staff にしておく. gate の設定待ち.

root@ika:/usr/local/bind/etc# chgrp -R staff .   # とりあえず

root@ika:/usr/local/bind/etc# chown bind rndc.key
root@ika:/usr/local/bind/etc# chmod 600 rndc.key
root@ika:/usr/local/bind/etc# chmod 640 rndc.conf
root@ika:/usr/local/bind/etc# chown bind namedb/named.conf
root@ika:/usr/local/bind/etc# chmod 640 namedb/named.conf

rndcのテスト

epaadmin グループに所属するユーザが rndc コマンドによって named プロセスを制御できるか確かめる.

root@tako:/usr/local/bind/etc# rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused

bind が起動していないことを忘れていた.

起動テスト (再)

# /usr/local/bind/sbin/named -u bind \
    -c /usr/local/bind/etc/namedb/named.conf

/var/log/syslog を見て, 起動したことを確認. ps(1) コマンドなどでも走っていることを確認.

ファイルフォーマットチェック (再)

root@tako:/usr/local/bind/etc# named-checkconf /usr/local/bind/etc/namedb/named.conf

何も出力されないので OK.

rndc のテスト(再)

root@tako:/usr/local/bind/etc# rndc reload
server reload successful

成功.

epaadmin グループが設定されていれば, epaadmin グループに属しているユーザなら 上記のコマンドを実行可能である.

起動スクリプトの用意

サーバの起動時に自動的に起動させるため, bind の起動スクリプト を用意する.

Debian の bind パッケージに含まれる/etc/init.d/bind を元に 起動スクリプトを bind 用に多少書き換えたものが bind から入手できる. このファイルを /etc/init.d/bind にコピーし, 以下のようにパーミッションを設定する.

# cd /etc/init.d
# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/bind/bind
# chown root:root /etc/init.d/bind
# chmod 755 /etc/init.d/bind

なお, この実行ファイル bind には冒頭部に named や rndc, named.conf ファイルのパスを設定する箇所がある. インストールの場所が変更される場合にはこれも変更すること.

念のため, bind スクリプトの start, stop, restart の動作確認を行う.

ランレベルごとに bind の動作を設定する.

# update-rc.d bind defaults
Adding system startup for /etc/init.d/bind ...
  /etc/rc0.d/K20bind -> ../init.d/bind
  /etc/rc1.d/K20bind -> ../init.d/bind
  /etc/rc6.d/K20bind -> ../init.d/bind
  /etc/rc2.d/S20bind -> ../init.d/bind
  /etc/rc3.d/S20bind -> ../init.d/bind
  /etc/rc4.d/S20bind -> ../init.d/bind
  /etc/rc5.d/S20bind -> ../init.d/bind

サーバを再起動し, 起動時に bind が起動することを確認した.

[Memo2008][EPA]tako作業メモ(納多)(080714) へ続く.