「Kerberos4(KTH-KRB)スレーブサーバの設定」 2002-09-18改訂1 2001-12-25初版 Kerberos4のKDCスレーブサーバはデータベースのプロパゲーションをして立 ち上げることが可能。これを行うのはkpropプログラムで、KDCマスターサーバ 側で実行されたkpropは、KDCスレーブサーバ側のkpropdデーモンにデータベー スを送り出す。 ここでは、RCCM.JPレルムにあるKDCマスターのgatekeeperに対するスレーブ サーバをearthに設定する。なお、作業では ksrvutil を使用するため、管理 者のインスタンス sys.adminは、アクセス制御ファイルの /var/kerberos/admin_acl.add と /var/kerberos/admin_acl.get とに登録さ れている必要がある。ここでの設定のために、以下のように登録した。 # echo "sys.admin@RCCM.JP" >> /var/kerberos/admin_acl.add # echo "sys.admin@RCCM.JP" >> /var/kerberos/admin_acl.get 1. マスター(gatekeeper)上のKerberos DBにプロパゲーション用の インスタンスrcmd.kerberosを追加登録するとともに、/etc/srvtab にrcmd.kerberosの鍵を追加する。 # /usr/athena/sbin/ksrvutil -p sys.admin get Name [rcmd]: Instance [gatekeeper]: kerberos Realm [RCCM.JP]: Is this correct? (y,n) [y] Add more keys? (y,n) [n] Password for sys.admin@RCCM.JP: Warning: Are you sure `kerberos' should not be `gatekeeper'? Added rcmd.kerberos@RCCM.JP Old keyfile in /etc/srvtab.old. 2. スレーブ(earth)側でkpropdをデーモンモードで走らせる。 # /usr/athena/libexec/kpropd -i & 3. マスター(gatekeeper)側でスレーブ(earth)用にデータベースのダンプを作成し プロパゲーションを可能にする。 # /usr/athena/sbin/kdb_util dump /var/kerberos/slave_dump # touch /var/kerberos/slave_dump.dump_ok マスターサーバのsrvtabにrcmd.kerberosの鍵を追加する。 # /usr/athena/sbin/ext_srvtab kerberos # cat kerberos-new-srvtab >> /etc/srvtab 4. プロパゲーションプログラムを実行する。 # /usr/athena/libexec/kprop Start slave propagation: Thu Dec 6 17:24:03 2001 earth.rccm.jp: success. earth.rccm.jp: Succeeded propagation finished, 0:00:00 elapsed kpropが成功すると、マスター(gatekeeper)側には、 "<スレーブサーバ名>-last-prop"というファイルができる。 # ls -l /var/kerberos/ | grep prop -rw------- 1 root root 0 Dec 6 17:24 earth.rccm.jp-last-prop また、スレーブ(earth)側の/var/kerberos ディレクトリには以下のように、 slave_propagation ファイルと principalとういう名前のDBファイルとができ、 # ls -lt /var/kerberos/ -rw------- 1 root root 3340 12月 6日 17:24 slave_propagation -rw------- 1 root root 32768 12月 6日 17:24 principal.db -rw------- 1 root root 0 12月 6日 17:24 principal.ok ログファイルに成功時のメッセージ "Propagation finished successfully" が /var/log/kpropd.logファイルに追記される。 # tail /var/log/kpropd.log 6-Dec-2001 16:53:45: Connection from 192.168.200.253 6-Dec-2001 16:53:45: Kerberos error: Can't decode authenticator (krb_rd_req) 6-Dec-2001 17:10:19: getpeername: Socket operation on non-socket 6-Dec-2001 17:17:10: Connection from 192.168.200.253 6-Dec-2001 17:17:10: Premature end of data 6-Dec-2001 17:24:16: Connection from 192.168.200.253 6-Dec-2001 17:24:16: Propagation finished successfully 5. マスターサーバ上で kprop が定期的に起動するように次のような設定を crontab に登録しておく。 -- 0 * * * * /usr/athena/libexec/kprop >/dev/null 2>&1 -- 6. スレーブサーバにマスターサーバと同じパスワードでマスターキーを 作成する(kstash コマンドにて)。あるいは、マスターサーバでkstashで 作成したマスターキーをスレーブサーバにコピーして配置する。 Kerberos サーバを '-s' オプションで起動する。 # /usr/athena/libexec/kerberos -s & Kerberos server starting Maximum database age: 259200 seconds Sleep for 300 seconds on error Log file is /var/log/kerberos.log Current Kerberos master key version is 1. Master key entered. BEWARE! Current Kerberos master key version is 1 Local realm: RCCM.JP 7. スレーブサーバ上ではマシンブート時にkpropdの起動がかかるように スクリプトを用意しておくとよい。(2.および6.参照)=>krb4s.r 8. krb.conf にスレーブサーバを追加。 -- RCCM.JP RCCM.JP gatekeeper.rccm.jp admin server RCCM.JP earth.rccm.jp <= --