Kerberos V5 はシングルサインオンシステムです。つまり、Kerberos は既存の各ネットワークプログラムに組み込まれているため、ユーザーはパスワードを 1 回入力するだけで、Kerberos V5 プログラムがユーザーの代わりに認証 (および、オプションで暗号化) を行います。Kerberos V5 アプリケーションは、既存の UNIX ネットワークプログラムに Kerberos 機能を追加したものです。
たとえば、Kerberos 化されたプログラムを使用してリモートホストと接続すると、プログラム、KDC、およびリモートホストは迅速にネゴシエーションを実行します。これらのネゴシエーションが完了すると、ユーザーのプログラムがユーザーの代わりにユーザーの識別情報をリモートホストに立証して、リモートホストがユーザーにアクセスを許可します。
Kerberos 化されたコマンドは最初に Kerberos で認証しようとします。Kerberos 認証が失敗すると、コマンドに指定したオプションによって、エラーが発生するか、UNIX 認証が行われます。詳細は、Kerberos コマンドのマニュアルページにある「Kerberos Security」節を参照してください。
Kerberos 化されたネットワークサービスとは、インターネット上の別のマシンに接続するプログラムのことです。これらのプログラムは /usr/krb5/bin にあります。このパスが Kerberos 化されていないバージョンよりも先に来るように PATH 変数を設定してください。次に、Kerberos 化されたコマンドを示します。
ftp
rcp
rlogin
rsh
telnet
これらのプログラムは、対応する Kerberos 化されていないコマンドの元の機能をすべて持っています。また、認証 (および、オプションで暗号化) をリモートホストとネゴシエーションするための Kerberos チケットに使用する機能も持っています。ほとんどの場合、Kerberos がユーザーの代わりにユーザーの識別情報を立証するため、Kerberos 化されたコマンドを実行するときにパスワードを入力する必要はありません。
Kerberos V5 ネットワークプログラムを使用すると、次のようなオプションも実行できます。
別のホストへのチケットの転送 (初めに転送可能チケットを取得していた場合)
ユーザーとリモートホスト間で転送されるデータの暗号化
この節では、ユーザーがすでにこれらのコマンドの Kerberos 化されていないバージョンに関する知識があると仮定し、Kerberos V5 パッケージで追加された Kerberos 機能だけに注目します。ここで説明されているコマンドについての詳細は、それぞれのマニュアルページを参照してください。
次に、ftp、rcp、rlogin、rsh、および telnet に追加された Kerberos オプションを示します。
ユーザーの既存のチケットを使用して自動ログインしようとする。getlogin() で戻されるユーザー名が現在のユーザー ID と同じ場合に限り、このユーザー名を使用する。詳細は、telnet(1) のマニュアルページを参照
再転送可能でないチケットをリモートホストに転送する。このオプションは -F (下記を参照) と相互に排他的である。つまり、同じコマンド内では一緒に使用できない
チケットを転送したい場合とは、3 番目のホスト上にある他の Kerberos ベースのサービスにユーザー自身を認証させる必要がある場合、たとえば、別のマシンに rlogin を実行して、そのマシンからさらに別の (3 番目の) マシンに rlogin を実行する場合など
リモートホスト上にあるユーザーのホームディレクトリが Kerberos V5 で NFS マウントされている場合、明示的に転送可能チケットを使用しなければならない。そうしなければ、ユーザーのホームディレクトリにアクセスできない。たとえば、最初に System 1 にログインし、次に System 1 からユーザーのホームマシン System 2 に rlogin を実行すると仮定する。このとき、System 2 は System 3 上にあるユーザーのホームディレクトリをマウントしていると仮定する。この場合、rlogin に -f または -F のオプションを使用しなければ、System 3 にチケットを転送できないため、ユーザーのホームディレクトリにアクセスできない
デフォルトでは、kinit は転送可能チケット許可チケット (TGT) を取得する。しかし、この設定は SEAM 構成で変更できる
チケットの転送についての詳細は、「-f と -F によるチケットの転送」を参照
ユーザーのチケット許可チケットの再転送可能なコピーをリモートシステムに転送する。-f (上記を参照) と似ているが、-f よりもさらに別の (4 番目または 5 番目の) マシンにアクセスできる。したがって、-F オプションは -f オプションのスーパーセットと考えられる。-F オプションは -f オプションと相互に排他的である。つまり、同じコマンド内では一緒に使用できない
チケットの転送についての詳細は、「-f と -F によるチケットの転送」を参照
krb5.conf ファイルでレルム自身を決定するのではなく、指定した realm 内にあるリモートホストのチケットを要求する。
ユーザーのチケットをリモートホストに認証させるが、自動的にはログインしない
使用する GSS-API セキュリティ機構を指定する (/etc/gss/mech ファイルに列挙されている)。デフォルトは kerberos_v5
このセッションを暗号化する
認証の auth_type タイプを無効にする
表 6-1 に、Kerberos 化された各コマンドが持つオプションを示します。X は、そのコマンドがそのオプションを持つことを示します。
表 6-1 Kネットワークコマンドの Kerberos オプション
|
ftp |
rcp |
rlogin |
rsh |
telnet |
---|---|---|---|---|---|
-a |
|
|
|
|
X |
-f |
X |
|
X |
X |
X |
-F |
|
|
X |
X |
X |
-k |
|
X |
X |
X |
X |
-K |
|
|
|
|
X |
-m |
X |
|
|
|
|
-x |
|
X |
X |
X |
X |
-X |
|
|
|
|
X |
さらに、ftp はセッションに保護レベルをプロンプトで設定できます。
保護レベルを「clear」(保護なし) に設定 (デフォルト)
保護レベルを「private」に設定する。データ転送の機密性と完全性は暗号化によって保護される。しかし、プライバシサービスは一部の SEAM ユーザーしか利用できない
保護レベルを「safe」に設定する。データ転送の完全性は暗号化チェックサムによって保護される
また、ftp のプロンプトでも保護レベルを設定できます。つまり、protect と入力して、その後に上記の保護レベル (clear、private、または safe) を入力します。
「Kerberos 化されたコマンドの概要」で説明されているとおり、一部のコマンドでは -f または -F のオプションでチケットを転送できます。チケットを転送すると、ネットワークトランザクションを「連鎖」させることができます。たとえば、あるマシンに rlogin を実行して、次に、そのマシンからさらに別のマシンに rlogin を実行できます。-f オプションではチケットを転送できますが、-F オプションでは転送したチケットをさらに転送 (再転送) できます。
図 6-2 では、ユーザー david が kinit で転送可能でないチケット許可チケット (TGT) を取得しています (-f オプションを指定していないため、このチケットは転送可能ではありません)。1 の場合では、david はマシン B に rlogin を実行できますが、それ以上のマシンには rlogin できません。2 の場合では、転送可能でないチケットを転送しようとしているため、rlogin -f コマンドは失敗します。
実際には、SEAM 構成ファイルはデフォルトで、kinit が転送可能チケットを取得するように設定されています。しかし、この構成は変更できます。ここでは説明のため、kinit -f で呼び出さなければ、kinit が転送可能 TGT を取得できないと仮定しています。またここでは、kinit には -F オプションはありません。したがって、TGT は転送可能であるか、あるいは転送可能でないかのいずれかです。
図 6-3 では、david が kinit -f で転送可能 TGT を取得しています。3 の場合では、david は rlogin で転送可能チケットを使用しているため、マシン C にログインできます。4 の場合では、チケットは再転送可能ではないため、2 番目の rlogin は失敗します。5 の場合では、-f オプションではなく -F オプションを使用しているため、2 番目の rlogin が成功し、チケットはマシン D に再転送できます。
次の例では、Kerberos 化されたコマンドのオプションの動作の概念を示します。
次の例では、ユーザー david はすでにログインしていて、マシン denver.acme.com に telnet を実行しようとしています。david は -f オプションで既存のチケットを転送し、-x オプションでセッションを暗号化し、さらに -a オプションで自動的にログインしようとしています。3 番目のホストのサービスを使用する予定はないため、david は -F ではなく -f を使用しています。
% telnet -a -f -x denver.acme.com Trying 128.0.0.5... Connected to denver.acme.com. Escape character is '^]'. [ Kerberos V5 accepts you as "david@eng.acme.com" ] [ Kerberos V5 accepted forwarded credentials ] SunOS 5.7: Tue May 21 00:31:42 EDT 1998 Welcome to SunOS % |
david のマシンが Kerberos を使用して david を denver.acme.com に認証させ、自動的に david を david 自身としてログインを許可していることに注目してください。david は暗号化されたセッション (すでに david を認証しているチケットのコピー) を持っているため、パスワードを入力する必要はありません。Kerberos 化されていないバージョンの telnet を使用した場合はパスワードを入力しなければならず、さらに、そのパスワードは暗号化されずにネットワークに送信されます。この時点で第三者がネットワークを監視していれば、david のパスワードが知られてしまいます。
Kerberos チケットを転送する場合、Kerberos 化されたコマンド (ここで説明する telnet などのコマンド) は終了時にチケットを破棄します。
次の例では、ユーザー jennifer が自分のマシン boston.acme.com にログインしようとしています。jennifer は、-F オプションで既存のチケットを転送し、-x でセッションを暗号化しています。jennifer が -f ではなく -F を使用した理由は、boston にログインした後、再転送可能なチケットを必要とするネットワークトランザクションを実行する予定があるためです。また、jennifer は既存のチケットを転送しているため、パスワードを入力する必要はありません。
% rlogin boston.acme.com -F -x This rlogin session is using DES encryption for all transmissions. Last login Mon May 19 15:19:49 from daffodil SunOS Release 5.7 (GENERIC) #2 Tue Nov 14 18:09:3 EST 1998 % |
次の例では、joe が ftp を使用して、マシン denver.acme.com 上にあるディレクトリ ‾joe/MAIL から自分のメールを取得しようとしています。さらに、このセッションを暗号化しています。実際の操作は次のようになります。
% ftp -f denver.acme.com Connected to denver.acme.com 220 denver.acme.org FTP server (Version 6.0) ready. 334 Using authentication type GSSAPI; ADAT must follow GSSAPI accepted as authentication type GSSAPI authentication succeeded Name (daffodil.acme.org:joe) 232 GSSAPI user joe@MELPOMENE.ACME.COM is authorized as joe 230 User joe logged in. Remote system type is UNIX. Using BINARY mode to transfer files. ftp> protect private 200 Protection level set to Private ftp> cd ‾joe/MAIL 250 CWD command successful. ftp> get RMAIL 227 Entering Passive Mode (128,0,0,5,16,49) 150 Opening BINARY mode data connection for RMAIL (158336 bytes). 226 Transfer complete. 158336 bytes received in 1.9 seconds (1.4e+02 Kbytes/s) ftp> quit % |
セッションを暗号化するため、joe は保護レベルを private に設定しています。