IT pass HikiWiki - [Memo2008][EPA]tako作業メモ(納多)(080710) Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc}}

((<[Memo2008][EPA]tako作業メモ(納多)(080417)>)) からの続き.

= Bind の設定

== アップデート

本作業中,
((<Bind にセキュリティホールが報告された|URL:http://www.jpcert.or.jp/at/2008/at080013.txt>))
ので, アップデートを行う.

  $ 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|URL:../epa/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)>)) へ続く.