Solaris のシステム管理 (セキュリティサービス)

Kerberos ユーザーコマンド

Kerberos V5 製品は「シングルサインオン」システムです。つまり、1 度だけパスワードを入力する必要があるという意味です。Kerberos V5 プログラムがユーザーに代わって認証 (オプションで暗号化も) 行います。これは、Kerberos が、既存のよく知られたネットワークプログラム群ごとに構築されているためです。Kerberos V5 アプリケーションは、既存の UNIX ネットワークプログラムに Kerberos 機能を追加したバージョンです。

たとえば、ある Kerberos プログラムを使って特定の遠隔ホストに接続する場合、そのプログラム、KDC、その遠隔ホストの 3 者は、一連のネゴシエーションをすばやく実行します。これらのネゴシエーションが正常終了した場合、そのプログラムは遠隔ホストに対し、そのユーザーの身元をユーザーに代わって証明したことになり、遠隔ホストはそのユーザーにアクセスを認可します。

Kerberos コマンドは最初に、Kerberos を使用して認証しようとする点に注意してください。Kerberos 認証が失敗すると、エラーが発生するか、UNIX 認証が試みられますが、どちらになるかは、コマンドに指定されるオプションによって決まります。詳細は、各 Kerberos コマンドのマニュアルページの「Kerberos Security」節を参照してください。

Kerberos コマンドの概要

Kerberos ネットワークサービスは、インターネット上のほかのマシンと接続するプログラムです。これらには、次のプログラムがあります。

これらのプログラムは、Kerberos チケットを透過的に使って認証 (と暗号化) のネゴシエーションを遠隔ホストと行うための機能も備えています。それらを使用する際の変化といえば、多くの場合、パスワードを入力する必要がなくなったことに気付くことぐらいです。このとき、Kerberos がユーザーに代わってユーザーの身元証明を行なってくれています。

Kerberos V5 ネットワークプログラムは、次の機能を実現するオプションを備えています。


注 –

この節では、読者がすでにこれらの Kerberos 以外のプログラムに慣れ親しんでいることを前提に、Kerberos V5 パッケージによって追加された Kerberos 機能だけに的を絞って説明しています。ここで説明するコマンドの詳細については、各コマンドのマニュアルページを参照してください。


次の Kerberos オプションが、ftprcprloginrsh、および telnet に追加されています。

-a

既存のチケットを使用して自動ログインしようとします。getlogin() によって返されたユーザー名を使用します。ただし、現在のユーザー ID と異なる場合には使用しません。詳細は、telnet(1) のマニュアルページを参照してください。

-f

「再転送不可能な」チケットを遠隔ホストに転送します。このオプションは、-F オプションと互いに排他の関係にあります。つまり、これらを同一コマンド内で同時に使用することはできません。

3 つ目のホスト上のほかの Kerberos に基づくサービスに自身を認証する必要がある場合、チケットを転送します。たとえば、ほかのマシンに遠隔ログインして、そこから 3 つ目のマシンに遠隔ログインします。

遠隔ホスト上のホームディレクトリが Kerberos V5 を使用して NFS マウントされている場合、転送可能チケットを使用する必要があります。そうしなかった場合、ホームディレクトリにアクセスできません。つまり、最初、システム 1 にログインするものとします。システム 3 からホームディレクトリをマウントしたホームマシン、システム 2 にシステム 1 から遠隔ログインします。rlogin-f または -F オプションを使用しない場合、チケットがシステム 3 に転送されないため、ホームディレクトリを取得できません。

kinit はデフォルトで、転送可能なチケット認可チケット (TGT) を取得します。ただし、このような構成を変更することは可能です。

チケットの転送の詳細は、「Kerberos チケットの転送」を参照してください。

-F

「再転送可能な」TGT のコピーを遠隔システムに転送します。このオプションは、-f と似ていますが、さらに先のマシン (たとえば 4 つ目や 5 つ目のマシン) へのアクセスを可能とする点が異なります。したがって、-F オプションは -f オプションのスーパーセットであると考えられます。-F オプションと -f オプションは、互いに排他の関係にあります。つまり、これらを同一コマンド内で同時に使用することはできません。

チケットの転送の詳細は、「Kerberos チケットの転送」を参照してください。

-k realm

krb5.conf ファイルを使用してレルム自身を決定する代わりに、特定の realm 内の遠隔ホストのチケットを要求します。

-K

チケットを使用して遠隔ホストへの認証を行いますが、自動ログインは行いません。

-m mechanism

/etc/gss/mech ファイルの記載どおりに、使用する GSS-API セキュリティーメカニズムを指定します。デフォルトは kerberos_v5

-x

このセッションを暗号化します。

-X auth-type

auth-type タイプの認証を無効にします。

次の表は、コマンド固有のオプションを示します。「X」は、コマンドがそのオプションを持つことを示します。

表 26–1 ネットワークコマンドの Kerberos オプション

 

ftp

rcp

rlogin

rsh

telnet

-a

 

 

 

 

-f

 

-F

 

 

-k

 

-K

 

 

 

 

-m

 

 

 

 

-x

-X

 

 

 

 

さらに、ftp では、ftp のプロンプト対してコマンドを入力することでにセッションの保護レベルを設定できます。

clear

保護レベルを「clear」(保護なし) に設定します。この保護レベルがデフォルトです。

private

保護レベルを「private」に設定します。データ転送は、暗号化により機密性と完全性が保護されます。ただし、この機密サービスは、Kerberos ユーザーによっては利用できない可能性もあります。

safe

保護レベルを「safe」に設定します。データ転送は、暗号チェックサムによって完全性が保護されます。

ftp プロンプトで protect と入力したあとに上記に示した保護レベル (clearprivate、または safe) のいずれかを入力して、保護レベルを設定することもできます。

Kerberos チケットの転送

「Kerberos コマンドの概要」で説明したように、一部のコマンドで -f または -F オプションを使用するとチケットを転送できます。チケットを転送すると、ネットワークトランザクションの「チェーン化」が可能となります。たとえば、あるマシンに遠隔ログインして、そこから別のマシンに遠隔ログインできます。-f オプションではチケットを転送することができますが、-F オプションでは転送済みのチケットを再転送することが可能です。

図 26–2 で、ユーザー davidkinit を使用して、転送不可能なチケット認可チケット (TGT) を取得します。-f オプションを指定しなかったため、チケットは転送不可能なチケットです。シナリオ 1 では、マシン B に遠隔ログインできますが、それ以上遠隔ログインできません。シナリオ 2 の rlogin -f コマンドは失敗します。なぜなら、彼は転送不可能なチケットを転送しようとしているからです。

図 26–2 転送不可能なチケットの使用

この図については、前の本文中で説明しています。

実際にはデフォルトで、kinit が転送可能なチケットを取得するように Kerberos 構成ファイルが設定されます。ただし、ユーザーの構成はこれと異なっても構いません。説明するために、TGT が 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 コマンドの使用 (例)

次の例は、Kerberos コマンドのオプションの使用方法を示しています。


例 26–5 telnet-a-f、および -x オプションを使用する

この例では、ユーザー david はすでにログインしており、マシン denver.example.comtelnet しようとしています。彼は、-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 オプションを使用してセッションを暗号化します。-f ではなく -F を選択します。これは boston にログインしたあとで、再転送されるチケットが必要な別のネットワークトランザクションを実行するためです。また、既存のチケットを転送するので、パスワードを入力する必要はありません。


% 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 で保護レベルを設定する

joeftp を使用して、マシン 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 に設定しています。