[EPA]bindのインストールと設定
ビルドとインストール
配布サイト <URL:http://www.isc.org/index.pl?/sw/bind/index.php> からアーカイブを取得.
[ika ~/] > cd /usr/local/src [ika /usr/local/src/] > sudo -s [root@ika /usr/local/src/] # tar xfz bind-9.4.1-P1.tar.gz [root@ika /usr/local/src/] # cd bind-9.4.1-P1 [root@ika /usr/local/src/bind-9.4.1-P1/] # mkdir /usr/local/bind [root@ika /usr/local/src/bind-9.4.1-P1/] # ./configure --prefix=/usr/local/bind
OpenSSL のバージョンが古いのでセキュリティ脆弱性があると言われるが, Debian の場合はバージョン番号が古いままでもセキュリティパッチは 当たっているので, --disable-openssl-version-check を指定して バージョンチェックを無視する.
なお, 具体的に修正された脆弱性一覧は <URL:http://www.debian.org/security/> にある. configure 時に指摘されている CAN-2002-0659, CAN-2006-4339, CVE-2006-2937, CVE-2006-2940は全て対処されていることを確認.
[root@ika /usr/local/src/bind-9.4.1-P1/] # ./configure --prefix=/usr/local/bind \ --disable-openssl-version-check [root@ika /usr/local/src/bind-9.4.1-P1/] # make [root@ika /usr/local/src/bind-9.4.1-P1/] # make install
インストールした Bind には host 等のコマンドも同梱されているため, 既にインストールされている bind9-host, libbind9-0, dnsutils は削除する.
[root@ika /usr/local/src/bind-9.4.1-P1/] # apt-get remove bind9-host libbind9-0 dnsutils
インストールした実行ファイルへのパスの設定
インストールされた Bind の実行ファイル群へパスを通す.
[EPA]パスの設定 の <一般ユーザ用コマンドのパス> に /usr/local/bind/bin を, <システム管理用コマンドのパス> に /usr/local/bind/sbin を追加する.
インストールしたマニュアルへのパスの設定
/etc/manpath.config に以下の行を追加する. 詳しくは [EPA]パスの設定#man 関連のパスの設定 を参照のこと.
MANDATORY_MANPATH /usr/local/bind/man MANPATH_MAP /usr/local/bind/bin /usr/local/bind/man MANPATH_MAP /usr/local/bind/sbin /usr/local/bind/man MANDB_MAP /usr/local/bind/man /usr/local/bind/man
ユーザとグループ追加
Bind の実行ユーザとして bind ユーザを作成する. vipw(1)して以下の行を追加.
bind:x:53:53:Bind Sandbox:/usr/local/bind/var:/bin/false
vipw -s して以下の行を追加.
bind:!:13749:0:99999:7:::
同様に bind グループを追加する. vigr して以下の行を追加.
bind:x:53:
vigr -s して以下の行を追加.
bind:*::
パーミッション設定
pid ファイル置場を bind 所有にする.
[root@ika /usr/local/bind/etc/namedb/] # chown bind:bind ../../var/run
ゾーンファイルの用意
/usr/local/bind/etc/namedb に tide の /etc/namedb を移植.
とりあえずの変更方針は, ahs は tide が担当, epa は ika が担当, 逆引きは ika が担当.
起動テスト, 他のDNSサーバの設定変更
起動テスト
[root@ika /usr/local/bind/etc/namedb/] # /usr/local/bind/sbin/named -u bind \ -c /usr/local/bind/etc/namedb/named.conf
gradis 側の /etc/named.conf の epa.scitec.kobe-u.ac.jp. ゾーンの master の IP を ika の IP(133.30.109.22) に変更.
/var/named/scitec.zone の epa.scitec.kobe-u.ac.jp. ゾーンの ネームサーバを ika に変更. つまり
ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.30
を
ns.epa.scitec.kobe-u.ac.jp. IN A 133.30.109.22
に変更.
/etc/init.d/named reload を実行して再読み込み.
tide の /etc/named.conf から epa ゾーン, 逆引きゾーンのエントリを削除. /etc/rc.d/named restart で再起動.
上流 DNS サーバの設定
scitec.kobe-u.ac.jp. の名前空間の権限を持っている gradis.scitec.kobe-u.ac.jp にログイン. /etc/named.conf に epa.scitec.kobe-u.ac.jp ゾーンのエントリ作成.
以下の行を追加.
gradis:/etc/named.conf ----ここから---- zone "epa.scitec.kobe-u.ac.jp" { type slave; file "slave/epa.zone"; masters { 133.30.109.30; }; allow-query { any; }; }; ----ここまで----
/var/named/scitec.zone に以下を記述し, epa.scitec.kobe-u.ac.jp. ドメインの権限をtideに委譲.
gradis:/var/named/scitec.zone ----ここから---- 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.30 epa.scitec.kobe-u.ac.jp. IN NS gradis.scitec.kobe-u.ac.jp. ----ここまで----
シリアル番号のincrementを忘れずに.
逆引きしたとき, tide 以外には epa ドメインの名前が返るようにする. 逆引き時に参照するネームサーバは ika.epa.scitec.kobe-u.ac.jp にする. gradis 側の逆引きゾーンファイルを書き換えて, これまで ns.ahs.scitec.kobe-u.ac.jp に委譲していた 0/25の権限を ns.epa.scitec.kobe-u.ac.jp に委譲する.
gradis:/var/named/master/ahs/ahs.rev (抜粋) ----ここから---- 0/25 3600 IN NS ns.epa.scitec.kobe-u.ac.jp. ----ここまで----
ゾーンファイルの作成と編集
tide 側で epa.scitec.kobe-u.ac.jp ゾーンのエントリを作成.
tide:/etc/namedb/named.conf ----ここから---- zone "epa.scitec.kobe-u.ac.jp" { type master; file "epa.zone"; allow-query { any ; } ; allow-transfer { 133.30.104.1 ; } ; }; ----ここまで----
epa.zone ファイルを ahs.zone ファイルにコピーして ahs の部分を epa に書き換える.
逆引きのゾーンファイル ahs.rev を epa な名前を返すように書き換える. tide だけは ahs の名前を返すようにしておく. また, 逆引きの権限は ns.epa.scitec.kobe-u.ac.jp に持たせるように変更.
ファイルフォーマットチェック
> named-checkconf /etc/namedb/named.conf > named-checkzone epa.scitec.kobe-u.ac.jp /etc/namedb/epa.zone zone epa.scitec.kobe-u.ac.jp/IN: loaded serial 2007102300 OK > named-checkzone 0/25.109.30.133.in-addr.arpa /etc/namedb/ahs.rev zone 0/25.109.30.133.in-addr.arpa/IN: loaded serial 2007102300 OK
tide の named を再起動
> sudo /etc/rc.d/named restart
gradis の named を再起動
> sudo /etc/rc.d/init.d/named restart
tide 上で正引き逆引きのチェック, 外部の計算機から同様にチェック.
0/25.109.30.133.in-addr.arpa. について gradis は slave サーバになって いないので, tide の逆引きゾーンファイル /etc/namedb/ahs.rev には 0/25.109.30.133.in-addr.arpa IN NS gradis.scitec.kobe-u.ac.jp. なる行 は存在してはいけない. これまで入っていた(ようだ)ので, 削除した.
rndc の設定
rndcコマンドは zone のリロード, 再起動, コンフィグファイルの読み直しな どを行うコマンドである.
まず, rndc-confgenを実行することで, 必要な設定ファイルの「もと」を生成する.
[root@ika /usr/local/bind/etc/] # rndc-confgen # Start of rndc.conf key "rndc-key" { algorithm hmac-md5; secret "pB+gVs89sX7BDN60+ki1Ow=="; }; 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 "pB+gVs89sX7BDN60+ki1Ow=="; # }; # # controls { # inet 127.0.0.1 port 953 # allow { 127.0.0.1; } keys { "rndc-key"; }; # }; # End of named.conf
secret "pB+gVs89sX7BDN60+ki1Ow=="; は認証に用いる共通鍵(パスワード)を表す. 従って, ここに挙げているのは例であって, 実際の設定とは異なる.
コメントアウトされていないところを /usr/local/bind/etc/rndc.conf とし て保存する. コメントされている箇所のうち, controls 以下を named.conf の末尾に追記する. また, 次の一行を named.conf に挿入.
include "/usr/local/bind/etc/rndc.key";
コメントされている箇所のうち, key で始まる4行を /usr/local/bind/etc/rndc.key に保存する.
パーミッションを以下のように設定する.
[root@ika /usr/local/bind/etc/] # chgrp -R epaadmin . [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 プロセスを 制御できる. 以下の例では, ユーザ murashin は epaadmin グループに所属し ている.
[root@ika /usr/local/bind/etc/] # rndc reload server reload successful [murashin@ika /usr/local/bind/etc/] > rndc reload server reload successful
このように出力されれば(書いてある通り)成功である.
起動スクリプトを用意する
サーバの起動時に自動的に起動させるため, bind の起動スクリプト を用意する.
Debian の bind パッケージに含まれる/etc/init.d/bind を元に 起動スクリプトを bind 用に多少書き換えたものが bind から入手できる. このファイルを /etc/init.d/bind にコピーし, 以下のようにパーミッションを設定する.
# wget http://epa.scitec.kobe-u.ac.jp/~itpass/epa/bind/bind # cp bind /etc/init.d/ # chown root:root /etc/init.d/bind # chmod 755 /etc/init.d/bind
なお, この実行ファイル bind には冒頭部に named や rndc, named.conf ファイルのパスを設定する箇所がある. インストールの場所が変更される場合にはこれも変更すること.
ランレベルごとに bind の動作を設定する.
# update-rc.d bind defaults
サーバを再起動し, 起動時に bind が起動することを確認する.
Keyword(s):
References:[[EPA2007]2007年度サーバ構築ログ] [消えたページ一覧]