Solaris のシステム管理 (第 2 巻)

Kerberos Version 4

Kerberos は、マサチューセッツ工科大学 (MIT) で開発された認証システムです。Kerberos は DES 暗号化を使用して、システムのログイン時にユーザーを認証します。認証は、送信側のシステムが共通鍵を使用して現在の時刻を暗号化する機能を利用します。受信側のシステムは、その現在の時刻を復号し、自分の時刻と照合します。Kerberos Version 4 は、Solaris 2.6 リリースでサポートされています。

Kerberos は、ユーザーのログインパスワードを認証することによって動作します。ユーザーは、kinit コマンドを入力します。このコマンドは、Kerberos 認証サーバーから、セッション時間 (デフォルトのセッション時間は 8 時間) の間だけ有効であるチケットを取得します。ユーザーがログアウトするとき、このチケットは (kdestroy コマンドで) 削除できます。

Kerberos ソフトウェアは、MIT プロジェクト Athena から入手できます。Kerberos ソフトウェアは SunOS 5.x ソフトウェアの一部ではありません。SunOS 5.x ソフトウェアが提供するものは、次のとおりです。

「NFS による Kerberos 認証の実装」に、Kerberos 認証手順の動作の概要を示します。


注 -

Solaris は、Kerberos 機能に接続できる機能を提供します。Solaris は Kerberos パッケージを提供しません。ただし、ユーザー名として anonymous を、パスワードとして電子メールのアドレスを使用することによって、athena-dist.mit.edu から Kerberos 4 のソースを ftp で入手できます。このソースは、ディレクトリ pub/kerberos にあります。


NFS による Kerberos 認証の実装

次の手順では、MIT プロジェクト Athena から公開されている Kerberos キー配布センターのソースを使用して、Kerberos キー配布センター (KDC) がすでにネットワーク上にインストールされていると仮定しています。

  1. /usr/sbin/kerbd デーモンが NFS クライアントとサーバー上で動作していなければなりません。

    このデーモンは、通常、inetd によって必要に応じて起動されます。rpcinfo コマンドを使用すれば、kerbd サービスが登録されていることを確認できます。kerbd はユーザーモードデーモンです。kerbd は、カーネル RPC および KDC とインターフェースを取ります。kerbd は、認証チケットを生成してその妥当性を検査します。

  2. システム管理者は、Kerberos 認証を使用するように NFS サーバーを設定します。

    MIT Kerberos ソフトウェアは、Kerberos サーバー上で Kerberos キー配布センター (KDC) に主体名を登録するのに使用されます。次のエントリが必要です。

    • root.hostname (NFS クライアントごとに必要)

    • nfs.hostname (NFS サーバーごとに必要)

  3. ユーザーは、共有ファイルシステムをマウントします。

    共有ファイルシステムをマウントするために、クライアント上のユーザーは、クライアント上で root 用のチケットを取得しなければなりません。

  4. ユーザーは、kinit コマンドを使用して、Kerberos サービスにログインします。

    Kerberos 認証サーバーは、要求を認証して、チケット譲与サービス用のチケットを与えます。

  5. ユーザーは、マウント済みディレクトリにアクセスします。

    kerbd デーモンは、クライアントのために、ファイルシステムをエクスポートしている NFS サーバー用のチケットを自動的に取得します。この時点で、2 つの有効なチケットがあります。オリジナルのチケット譲与チケットと、サーバー用のチケットです。

  6. ユーザーは、セッションの終わりにチケットを削除して、誤用と悪用を防ぎます。

    kdestroy コマンドは、チケットを含むファイルにゼロを書き込むことによって、ユーザーのアクティブな Kerberos 認証チケットを削除します。kdestroy コマンドを .logout ファイルに置いておけば、システムからログアウトするときに、すべての kdestroy チケットを自動的に破壊できます。

  7. セッションが終了する前にチケットが削除されていた場合、ユーザーは kinit コマンドで新しいチケットを要求しなければなりません。