ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Solaris のシステム管理: セキュリティーサービス Oracle Solaris 10 1/13 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
13. Oracle Solaris の暗号化フレームワーク (概要)
14. Oracle Solaris の暗号化フレームワーク (タスク)
24. Kerberos エラーメッセージとトラブルシューティング
26. Kerberos アプリケーションの使用 (タスク)
Kerberos V5 製品は「シングルサインオン」システムです。つまり、1 度だけパスワードを入力する必要があるという意味です。Kerberos V5 プログラムがユーザーに代わって認証 (オプションで暗号化も) 行います。これは、Kerberos が、既存のよく知られたネットワークプログラム群ごとに構築されているためです。Kerberos V5 アプリケーションは、既存の UNIX ネットワークプログラムに Kerberos 機能を追加したバージョンです。
たとえば、ある Kerberos プログラムを使って特定のリモートホストに接続する場合、そのプログラム、KDC、そのリモートホストの 3 者は、一連のネゴシエーションをすばやく実行します。これらのネゴシエーションが正常終了した場合、そのプログラムはリモートホストに対し、そのユーザーの身元をユーザーに代わって証明したことになり、リモートホストはそのユーザーにアクセスを認可します。
Kerberos コマンドは最初に、Kerberos を使用して認証しようとする点に注意してください。Kerberos 認証が失敗すると、エラーが発生するか、UNIX 認証が試みられますが、どちらになるかは、コマンドに指定されるオプションによって決まります。詳細は、各 Kerberos コマンドのマニュアルページの「Kerberos Security」セクションを参照してください。
Kerberos ネットワークサービスは、インターネット上のほかのマシンと接続するプログラムです。これらには、次のプログラムがあります。
ftp
rcp
rdist
rlogin
rsh
ssh
telnet
これらのプログラムは、Kerberos チケットを透過的に使って認証 (と暗号化) のネゴシエーションをリモートホストと行うための機能も備えています。それらを使用する際の変化といえば、多くの場合、パスワードを入力する必要がなくなったことに気付くことぐらいです。このとき、Kerberos がユーザーに代わってユーザーの身元証明を行なってくれています。
Kerberos V5 ネットワークプログラムは、次の機能を実現するオプションを備えています。
別のホストへチケットを転送します (最初に転送可能チケットを取得していた場合)。
ユーザーとリモートホスト間で送受信されるデータを暗号化します。
注 - このセクションでは、読者がすでにこれらの Kerberos 以外のプログラムに慣れ親しんでいることを前提に、Kerberos V5 パッケージによって追加された Kerberos 機能だけに的を絞って説明しています。ここで説明するコマンドの詳細については、各コマンドのマニュアルページを参照してください。
次の Kerberos オプションが、ftp、rcp、rlogin、rsh、および telnet に追加されています。
既存のチケットを使用して自動ログインしようとします。getlogin() によって返されたユーザー名が現在のユーザー ID と異なっていないかぎり、その名前を使用します。詳細は、telnet(1) のマニュアルページを参照してください。
再転送不可能なチケットをリモートホストに転送します。このオプションは、-F オプションと互いに排他の関係にあります。つまり、これらを同一コマンド内で同時に使用することはできません。
3 つ目のホスト上のほかの Kerberos に基づくサービスに自身を認証する必要がある場合、チケットを転送します。たとえば、ほかのマシンにリモートログインして、そこから 3 つ目のマシンにリモートログインします。
リモートホスト上のホームディレクトリが Kerberos V5 を使用して NFS マウントされている場合、転送可能チケットを使用する必要があります。そうしなかった場合、ホームディレクトリにアクセスできません。つまり、最初、システム 1 にログインするものとします。システム 3 からホームディレクトリをマウントしたホームマシン、システム 2 にシステム 1 からリモートログインします。チケットをシステム 3 に転送できないため、rlogin で -f または -F オプションを使用していないかぎり、ホームディレクトリには到達できません。
kinit はデフォルトで、転送可能なチケット認可チケット (TGT) を取得します。ただし、このような構成を変更することは可能です。
チケットの転送の詳細は、「Kerberos チケットの転送」を参照してください。
TGT の再転送可能なコピーをリモートシステムに転送します。このオプションは、-f と似ていますが、さらに先のマシン (たとえば 4 つ目や 5 つ目のマシン) へのアクセスを可能とする点が異なります。そのため、-F オプションは -f オプションのスーパーセットであると見なすことができます。-F オプションと -f オプションは、互いに排他の関係にあります。つまり、これらを同一コマンド内で同時に使用することはできません。
チケットの転送の詳細は、「Kerberos チケットの転送」を参照してください。
krb5.conf ファイルを使用してレルム自体を決定する代わりに、指定された realm 内のリモートホストのチケットをリクエストします。
/etc/gss/mech ファイル内に一覧表示されている、使用する GSS-API セキュリティーメカニズムを指定します。デフォルトは kerberos_v5。
次の表は、コマンド固有のオプションを示します。「X」は、コマンドがそのオプションを持つことを示します。
表 26-1 ネットワークコマンドの Kerberos オプション
|
さらに、ftp では、そのプロンプトでセッションの保護レベルを設定できます。
保護レベルを「private」に設定します。データ転送は、暗号化によって機密性と完全性が保護されます。ただし、この機密サービスは、Kerberos ユーザーによっては利用できない可能性もあります。
また、protect に続けて、上に示したいずれかの保護レベル (clear、private、または safe) を入力することによって、ftp プロンプトで保護レベルを設定することもできます。
「Kerberos コマンドの概要」で説明されているように、一部のコマンドでは、-f または -F オプションのどちらかを使用してチケットを転送できます。チケットを転送すると、ネットワークトランザクションの「チェーン化」が可能となります。たとえば、あるマシンにリモートログインして、そこから別のマシンにリモートログインできます。-f オプションではチケットを転送することができますが、-F オプションでは転送済みのチケットを再転送することが可能です。
図 26-2 で、ユーザー david は kinit を使用して、転送不可能なチケット認可チケット (TGT) を取得します。-f オプションを指定しなかったため、チケットは転送不可能なチケットです。シナリオ 1 では、マシン B にリモートログインできますが、それ以上リモートログインできません。シナリオ 2 の rlogin -f コマンドは失敗します。なぜなら、彼は転送不可能なチケットを転送しようとしているからです。
図 26-2 転送不可能なチケットの使用
実際、Kerberos 構成ファイルは、kinit がデフォルトで転送可能チケットを取得するように設定されます。ただし、ユーザーの構成はこれと異なっても構いません。説明のために、kinit -f で呼び出されないかぎり、kinit は転送可能な TGT を取得しないと仮定します。ここで、kinit に -F オプションがないことに注意してください。TGT は、転送可能、転送不可能のいずれかです。
図 26-3 で、ユーザー david は、kinit -f を使用して、転送可能な TGT を取得します。シナリオ 3 では、rlogin で転送可能チケットを使用しているため、マシン C に到達できます。シナリオ 4 の 2 回目の rlogin は、チケットが再転送可能ではないため失敗します。シナリオ 5 のように -F オプションを代わりに使用すれば、2 回目の rlogin は成功し、チケットがマシン D に再転送されます。
図 26-3 転送可能チケットの使用
次の例は、Kerberos コマンドのオプションの使用方法を示しています。
例 26-5 telnet で -a、-f、および -x オプションを使用する
この例では、ユーザー david はすでにログインし、マシン denver.example.com への telnet を実行しようとしています。彼は、-f オプションを使って既存のチケットを転送し、-x オプションを使ってセッションを暗号化し、-a オプションを使って自動ログインを実行します。3 つ目のホストのサービスを使用する予定はないため、ここでは -F ではなく -f を使用しています。
% telnet -a -f -x denver.example.com Trying 128.0.0.5... Connected to denver.example.com. Escape character is '^]'. [ Kerberos V5 accepts you as "david@eng.example.com" ] [ Kerberos V5 accepted forwarded credentials ] SunOS 5.9: Tue May 21 00:31:42 EDT 2004 Welcome to SunOS %
david のマシンが、Kerberos を使用して denver.example.com に対する彼の認証を行い、さらに自動ログインしている点に注意してください。彼は、暗号化されたセッションと、いつでも利用可能なチケットのコピーとを手に入れましたが、パスワードを入力する必要は一度もありませんでした。Kerberos 以外のバージョンの telnet を使用した場合は、自分のパスワードの入力を要求され、そのパスワードは暗号化されずにネットワーク経由で送信されます。その時点で侵入者がネットワークトラフィックを観察していたとすると、その侵入者はすでに david のパスワードを入手しています。
Kerberos チケットを転送した場合、telnet (およびここで説明したその他のコマンド) は、終了時にそのチケットを破棄します。
例 26-6 rlogin で -F オプションを使用する
ここでは、ユーザー jennifer が自身のマシン boston.example.com にログインするものとします。-F オプションを使用して既存のチケットを転送し、-x オプションを使用してセッションを暗号化します。boston にログインしたあとに、チケットの再転送が必要なほかのネットワークトランザクションを実行したくなる可能性があるため、-f ではなく -F を選択します。また、既存のチケットを転送するので、パスワードを入力する必要はありません。
% rlogin boston.example.com -F -x This rlogin session is using encryption for all transmissions. Last login Mon May 19 15:19:49 from daffodil SunOS Release 5.9 (GENERIC) #2 Tue Nov 14 18:09:3 EST 2003 %
例 26-7 ftp での保護レベルの設定
joe が ftp を使用して、セッションを暗号化しながら、マシン denver.example.com のディレクトリ ~joe/MAIL から自分のメールを取得しようとしているとします。やり取りは次のようになります。
% ftp -f denver.example.com Connected to denver.example.com 220 denver.example.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.example.org:joe) 232 GSSAPI user joe@MELPOMENE.EXAMPLE.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 に設定しています。