初期データベースの作成
この作業はKerberosサーバだけでおこないます. まず, 古いKerberosの
データベースが存在しないことを確認してください.
ディレクトリ/etc/kerberosIVに移って, 次のファイルだけが
存在することをチェックします:
grunt# cd /etc/kerberosIV
grunt# ls
README krb.conf krb.realms
もし他のファイル (principal.*やmaster_key) が
存在する場合には, kdb_destroyというコマンドで古い
Kerberosデータベースを消してください.
Kerberosが走っていなければ, 単にrmで余計なファイルを消せ
ばよいです.
まず, krb.confとkrb.realmsを編集してKerberosの
管理領域 (realm) を定義してください. ここでは管理領域がGRONDAR.ZA
で, サーバ名がgrunt.grondar.zaであるとします.
krb.confというファイルを次のように編集してください:
grunt# cat krb.conf
GRONDAR.ZA
GRONDAR.ZA grunt.grondar.za admin server
CS.BERKELEY.EDU okeeffe.berkeley.edu
ATHENA.MIT.EDU kerberos.mit.edu
ATHENA.MIT.EDU kerberos-1.mit.edu
ATHENA.MIT.EDU kerberos-2.mit.edu
ATHENA.MIT.EDU kerberos-3.mit.edu
LCS.MIT.EDU kerberos.lcs.mit.edu
TELECOM.MIT.EDU bitsy.mit.edu
ARC.NASA.GOV trident.arc.nasa.gov
この例にあるような他の管理領域は, 実際には必要ありません.
この例は複数の管理領域を認識する方法を示したものですので,
これらの行は含めなくても結構です.
1行目はこのシステムが動いている管理領域の名前です.
他の行は管理領域とホスト名のエントリです.
行の1つめの単語が管理領域で, 2つめがその管理領域の中で
``鍵配布センター''(Key Distribution Center) として働くホスト名です.
ホスト名の次に ``admin server'' と書いてある場合には, そのホストが
``管理データベースサーバ''(Administrative Database Server) も提供
することを意味します.
これらの単語について詳しく知りたい場合にはKerberosのマニュアル
ページをご覧ください.
ここで, GRONDAR.ZAという管理領域にgrunt.grondar.za
およびその他の.grondar.zaドメインのすべてのホストを追加し
なければなりません. krb.realmsは次のようになります:
grunt# cat krb.realms
grunt.grondar.za GRONDAR.ZA
.grondar.za GRONDAR.ZA
.berkeley.edu CS.BERKELEY.EDU
.MIT.EDU ATHENA.MIT.EDU
.mit.edu ATHENA.MIT.EDU
もう一度注意しますが, 他の管理領域を書く必要はありません.
これらは複数の管理領域を認識できるようにマシンを設定する方法を
示した例ですので, これらの行は消して構いません.
1行目は名前をつけた管理領域に特定のシステムを含めるための
ものです. 残りの行は名前をつけた管理領域にサブドメインのデフォルトの
システムを含めるためのものです.
これでデータベースを作成する準備ができました. この操作はKerberos
サーバ (鍵配布センター) を起動するだけです. kdb_initコ
マンドを次のように実行してください:
grunt# kdb_init
Realm name [default ATHENA.MIT.EDU ]: GRONDAR.ZA
You will be prompted for the database Master Password.
It is important that you NOT FORGET this password.
Enter Kerberos master key:
ここで鍵を保存して, ローカルのマシンにあるサーバが取り出せるように
します. それにはkstashコマンドを使用します.
grunt# kstash
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
これで暗号化されたマスタパスワードが
/etc/kerberosIV/master_keyに保存されました.
すべてが動くようにするための設定
Kerberosを導入するそれぞれのシステムのデータベースに, 2つ
のprincipal (主体名) を追加する必要があります. その名前は
kpasswdとrcmdです. これら2つのprincipalは, 個々
のシステムにおいて, システム名と同じ名前のインスタンスと組にして作成
されます.
これらのkpasswdとrcmdというデーモンによって, 他の
システムからKerberosのパスワードを変更したり, rcpや
rlogin, rshといったコマンドを実行したりできるよ
うになります.
それでは実際にこれらのエントリを追加しましょう:
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: passwd
Instance: grunt
, Create [y] ? y
Principal: passwd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ? y
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: rcmd
Instance: grunt
, Create [y] ?
Principal: rcmd, Instance: grunt, kdc_key_ver: 1
New Password: <---- ここは「RANDOM」と入力してください
Verifying password
New Password: <---- ここは「RANDOM」と入力してください
Random password [y] ?
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
サーバファイルの作成
次に, 各マシンにおけるサービスを定義している, すべてのインスタンス
を展開します. これにはext_srvtabというコマンドを使用しま
す. このコマンドで作成されるファイルは, Kerberosの各クライアン
トの/etc/kerberosIVディレクトリに安全な方法でコピーまたは
移動する必要があります. このファイルはそれぞれのサーバとクラ
イアントに存在しなければならず, またKerberosの運用において重要なも
のです.
grunt# ext_srvtab grunt
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Generating 'grunt-new-srvtab'....
このコマンドは一時的なファイルを作成するだけです. ファイル名をすべ
てのサーバが読めるようなsrvtabという名前に変更しな
ければなりません. mvコマンドを用いてシステムの場所に移動
してください.
grunt# mv grunt-new-srvtab srvtab
そのファイルがクライアントに配るためのもので, ネットワークが安全で
はないと思われる場合には, <client>-new-srvtabを移動
可能なメディアにコピーして物理的に安全な方法で運んでください. クラ
イアントの/etc/kerberosIVディレクトリで, 名前を
srvtabに変更し, modeを600にするのを忘れないでください:
grumble# mv grumble-new-srvtab srvtab
grumble# chmod 600 srvtab
データベースへのユーザの追加
ここで, ユーザのエントリをデータベースに追加する必要があります.
始めに, ユーザjaneのエントリを作成してみましょう.
kdb_editを用いて次のように作成してください:
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance:
, Create [y] ? y
Principal: jane, Instance: , kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れてください
Verifying password
New Password: <---- もう一度パスワードを入れてください
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ?
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
すべてのテスト
まず始めにKerberosデーモンを起動する必要があります.
/etc/sysconfigファイルを正しく編集してあれば, マシンを再
起動することでに自動的にデーモンが起動します. これはKerberosサー
バでのみ必要です. Kerberosクライアントは/etc/kerberosIVか
ら必要なものを自動的に入手します.
grunt# kerberos &
grunt# Kerberos server starting
Sleep forever 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: GRONDAR.ZA
grunt# kadmind -n &
grunt# KADM Server KADM0.0A initializing
Please do not use 'kill -9' to kill this job, use a
regular kill instead
Current Kerberos master key version is 1.
Master key entered. BEWARE!
さあ, これで上で作成したjaneというIDのチケットを
kinitコマンドで得ることができます:
grunt$ kinit jane
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane"
Password:
klistコマンドを用いてトークンを見て, きちんとチケットを持って
いるかどうか確認してください:
grunt$ klist
Ticket file: /tmp/tkt245
Principal: jane@GRONDAR.ZA
Issued Expires Principal
Apr 30 11:23:22 Apr 30 19:23:22 krbtgt.GRONDAR.ZA@GRONDAR.ZA
passwdコマンドを用いてパスワードを変更して, kpasswdデーモ
ンがKerberosデータベースに対して認証されるかどうかチェックして
ください:
grunt$ passwd
realm GRONDAR.ZA
Old password for jane:
New Password for jane:
Verifying password
New Password for jane:
Password changed.
su特権の追加
root権限が必要なユーザは誰でも, suコマンドのパス
ワードをユーザ毎に別のものとして持つことができます.
rootにsuできる権利を与えられたidを追加します.
これは, principalに付いているrootというインスタンスに
よって制御されています. kdb_editを用いて
jane.rootというエントリをKerberosデータベースに作成します:
grunt# kdb_edit
Opening database...
Enter Kerberos master key:
Current Kerberos master key version is 1.
Master key entered. BEWARE!
Previous or default values are in [brackets] ,
enter return to leave the same, or new value.
Principal name: jane
Instance: root
, Create [y] ? y
Principal: jane, Instance: root, kdc_key_ver: 1
New Password: <---- 安全なパスワードを入れます
Verifying password
New Password: <---- もう一回パスワードを入れます
Principal's new key version = 1
Expiration date (enter yyyy-mm-dd) [ 2000-01-01 ] ?
Max ticket lifetime (*5 minutes) [ 255 ] ? 12 <--- ここは短くしてください
Attributes [ 0 ] ?
Edit O.K.
Principal name: <---- 何も入力しないと終了します
実際にトークンをもらって, ちゃんと働いているかどうか確認しましょう:
grunt# kinit jane.root
MIT Project Athena (grunt.grondar.za)
Kerberos Initialization for "jane.root"
Password:
ここでrootユーザの.kloginファイルにユーザを追加する必要が
あります.
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
suしてみましょう:
[jane@grunt 10407] su
Password:
grunt#
どのトークンを持っているか見てみましょう:
grunt# klist
Ticket file: /tmp/tkt_root_245
Principal: jane.root@GRONDAR.ZA
Issued Expires Principal
May 2 20:43:12 May 3 04:43:12 krbtgt.GRONDAR.ZA@GRONDAR.ZA
他のコマンドの使用
ここまでの例では, janeというprincipalをrootとい
うインスタンス付きで作成しました. これはユーザと同じ名前をprincipalと
しており, Kerberosのデフォルトの値です;
<username>.rootという形式の
<principal>.<instance>で, 必要なエント
リがrootのホームディレクトリの.kloginファイルに
あれば, <username>がrootにsuすることができま
す.
grunt# cat /root/.klogin
jane.root@GRONDAR.ZA
同様に, ユーザのホームディレクトリの.kloginファイルに次の
ような行がある場合には:
[jane@grunt 10543] cat ~/.klogin
jane@GRONDAR.ZA
jack@GRONDAR.ZA
janeまたはjackという名前で (前述のkinit
によって) 認証されているGRONDAR.ZAという管理領域のユーザ
なら誰でもrloginやrsh, rcp等によってこ
のシステム (grunt) のjaneのアカウントまたはファ
イルにアクセスできます.
例えば, Janeが他のシステムにKerberosを用いてloginします:
[jane@grumble 573] kinit
MIT Project Athena (grunt.grondar.za)
Password:
[jane@grumble 574] rlogin grunt
Last login: Mon May 1 21:14:47 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10567]
次の例では, Jackが同じマシンのJaneのアカウントにloginします. Janeは
.kloginファイルを前述のように設定しており,
Kerberosではjackというprincipalをインスタンスなしで設定してあ
ります.
[jack@grumble 573] kinit
[jack@grumble 574] rlogin grunt -l jane
MIT Project Athena (grunt.grondar.za)
Password:
Last login: Mon May 1 21:16:55 from grumble
Copyright (c) 1980, 1983, 1986, 1988, 1990, 1991, 1993, 1994
The Regents of the University of California. All rights reserved.
FreeBSD BUILT-19950429 (GR386) #0: Sat Apr 29 17:50:09 SAT 1995
[jane@grunt 10578]