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

第 22 章 Kerberos サービスの計画

この章は、Kerberos サービスのインストールと保守を行うシステム管理者を対象としています。この章では、Kerberos サービスをインストールまたは構成する前に、システム管理者が解決しておく必要があるインストールと構成の項目について説明します。

システム管理者やテクニカルサポート担当者が検討する必要がある項目は次のとおりです。

Kerberos の配備を計画する理由

Kerberos サービスをインストールする前に、いくつかの構成についての問題を解決する必要があります。初期インストール後に構成を変更することは不可能ではありませんが、変更によっては実装が困難な場合があります。また、変更によっては、KDCを再構築しなければならないことがあります。このため、Kerberos の構成を計画するときは、長期的な目標を考慮することをお勧めします。

Kerberos の基盤の配備には、KDC のインストール、ホストの鍵の作成、ユーザーの移行などの作業が含まれます。Kerberos の配備の再構成は最初の配備と同じくらいの労力を要するので、入念に計画し、再構成しなければならない事態を避けるようにしてください。

Kerberos レルムの計画

レルム は、ドメインに似た論理ネットワークです。レルムは、同一マスター KDC に登録されるシステムのグループを定義します。DNS ドメイン名を設定する場合と同様に、レルム名、レルムの数、および各レルムの大きさは、Kerberos サービスを構成する前に解決する必要があります。また、レルム間認証を行う場合は、レルム間の関係も定義する必要があります。

レルム名

レルム名には、任意の ASCII 文字列を使用できます。レルム名には通常、DNS ドメイン名と同じ名前を指定します。違いはレルム名は大文字で指定することです。この命名規則を利用すると、すでに使い慣れている名前を使用しながら、Kerberos サービスのレルム名と DNS 名前空間のドメイン名を区別することができます。DNS を使用しない場合、または別の文字列を使用する場合は、任意の文字列を使用できます。ただし、構成プロセスがより複雑になります。レルム名を付けるときは、標準のインターネット命名構造に準拠することをお勧めします。

レルムの数

インストールするレルムの数は、次の要因によって異なります。

Kerberos レルムと管理ドメインがそろっているようにすることをお勧めします。Kerberos V レルムは、対応する DNS ドメインの複数のサブドメインにまたがることができます。

レルムの階層

複数のレルムを構成してレルム間認証を行う場合は、レルム間の接続方法を決定する必要があります。レルム間に階層関係を設定すると、関連付けたドメインに自動パスが作成されます。このとき、階層チェーン内のすべてのレルムが適切に構成されている必要があります。自動パスを利用すると、管理負荷を軽減することができます。ただし、ドメインのレベルが多い場合は、多くのトランザクションが発生するため、デフォルトのパスは使用しないことをお勧めします。

また、信頼関係を直接確立することもできます。直接の信頼関係は、2 つの階層レルム間にレベルが多すぎる場合または階層関係が設定されていない場合にもっとも有効です。直接接続は、使用するすべてのホストの /etc/krb5/krb5.conf ファイルに接続を定義する必要があります。このため、追加作業が必要になります。直接の信頼関係は、推移的関係とも呼ばれます。概要については、「Kerberos レルム」を参照してください。複数のレルムを構成する手順については、「レルム間認証の構成」を参照してください。

ホスト名のレルムへのマッピング

ホスト名のレルム名へのマッピングは、krb5.conf ファイルの domain_realm セクションに定義します。これらのマッピングは、必要に応じてドメイン全体およびホスト単位に定義できます。

DNS は、KDC に関する情報の検索にも使用できます。DNS を使用すると、変更を行うたびに全クライアントについて krb5.conf ファイルを編集する必要がないため、情報を変更しやすくなります。詳細は、krb5.conf(4) のマニュアルページを参照してください。

Solaris Express Developer Edition 1/08 および Solaris 10 5/08 リリースの時点で、Solaris Kerberos クライアントは Active Directory サーバーとより適切に相互運用できるようになりました。Active Directory サーバーは、ホストのマッピングにレルムを提供するように構成できます。

クライアントとサービス主体の名前

Kerberos サービスを使用しているときは、すべてのホストで DNS が有効である必要があります。DNS では、主体名に各ホストの完全指定のドメイン名 (FQDN) を含める必要があります。たとえば、ホスト名が boston、DNS ドメイン名が example.com、およびレルム名が EXAMPLE.COM の場合、ホストの主体名は host/boston.example.com@EXAMPLE.COM にするようにしてください。このマニュアルの例では、DNS を構成する必要があり、各ホストの FQDN を使用しています。

Kerberos サービスは DNS を介してホストの別名を正規化し、関連するサービスのサービス主体を構築する際には正規化された形式 (正規名) を使用します。そのため、サービス主体を作成する場合、サービス主体名のホスト名コンポーネントは、サービスをホストするシステムのホスト名の正規化形式にする必要があります。

次の例では、Kerberos サービスでホスト名を正規化する方法を示します。ユーザーがコマンド「ssh alpha.example.com」を実行するとします。ここで、alpha.example.com は正規名 beta.example.com の DNS ホストの別名です。ssh が Kerberos を呼び出し、alpha.example.com のホストサービスチケットを要求する場合、Kerberos サービスは、alpha.example.combeta.example.com に正規化し、KDC からサービス主体「host/beta.example.com」のチケットを要求します。

ホストの FQDN を含む主体名は、/etc/resolv.conf ファイルの DNS ドメイン名を表す文字列と一致していることが重要です。Kerberos サービスでは、主体に FQDN を指定するときに、DNS ドメイン名は小文字にする必要があります。DNS ドメイン名には大文字と小文字を使用できますが、ホスト主体を作成する場合は小文字だけを使用します。たとえば、DNS ドメイン名には、example.comExample.COM などの形式が使用できますが、ホストの主体名は、host/boston.example.com@EXAMPLE.COM でなければなりません。

また、サービス管理機能は、DNS クライアントサービスが実行されていない場合に多くのデーモンまたはコマンドが起動しないように構成されています。kdb5_utilkadmindkpropd デーモン、および kprop コマンドは、DNS サービスに依存するように構成されています。Kerberos サービスおよび SMF を使用して利用可能な機能を完全に活用するには、すべてのホスト上で DNS クライアントサービスを有効にする必要があります。

KDC と管理サービス用のポート

デフォルトでは、ポート 88 とポート 750 を KDC が使用し、ポート 749 を KDC 管理デーモンが使用します。別のポート番号を使用することもできます。ただし、ポート番号を変更する場合は、各クライアントの /etc/services および /etc/krb5/krb5.conf ファイルを変更する必要があります。また、これらのファイルに加えて、各 KDC の /etc/krb5/kdc.conf ファイルも更新する必要があります。

スレーブ KDC の数

スレーブ KDC は、マスター KDC と同様に、クライアントの資格を生成します。マスターが使用できなくなると、スレーブ KDC がバックアップとして使用されます。各レルムには、1 つ以上のスレーブ KDC が必要です。次の要因により、スレーブ KDC を追加する必要がある場合が考えられます。

スレーブ KDC の数に制限はありません。ただし、KDC データベースは、各サーバーに伝播する必要があります。このため、インストールした KDC サーバーが多くなるにつれて、レルム全体のデータ更新時間が長くなります。また、各スレーブには KDC データベースのコピーが保存されるため、スレーブが多くなるほど、セキュリティー侵害の危険性が高くなります。

1 つまたは複数のスレーブ KDC をマスター KDC と入れ替えするように構成することができます。このように 1 つ以上のスレーブ KDC をシステムに事前に構成しておくと、マスター KDC になんらかの理由で障害が発生した場合でも、マスター KDC と簡単に入れ替えすることができます。スワップ可能なスレーブ KDC の構成方法については、「マスター KDC とスレーブ KDC の入れ替え」を参照してください。

GSS 資格の UNIX 資格へのマッピング

Kerberos サービスは、GSS 資格名から UNIX ユーザー ID (UID) へのマッピングを、NFS などこのマッピングを必要とする GSS アプリケーションのために提供します。GSS 資格名は Kerberos サービスを使用する場合の Kerberos 主体名と等価です。デフォルトのマッピングアルゴリズムでは、1 構成要素の Kerberos 主体名をとり、主体の一次名であるその構成要素を使用して、UID を検索します。検索は、デフォルトレルム、または /etc/krb5/krb5.confauth_to_local_realm パラメータを使用することで許可された任意のレルムで行われます。たとえば、ユーザー主体名 bob@EXAMPLE.COM は、パスワードテーブルを使用して、bob という名前の UNIX ユーザーの UID にマッピングされます。主体名が admin のインスタンスコンポーネントを含むため、ユーザー主体名 bob/admin@EXAMPLE.COM はマッピングされません。ユーザー資格のデフォルトマッピングが十分な場合、GSS 資格テーブルにデータを入れておく必要がありません。以前のリリースでは、NFS サービスを機能させるために、GSS 資格テーブルにデータを入れておく必要がありました。デフォルトマッピングでは十分でない場合、たとえばインスタンスコンポーネントを含む主体名をマッピングする場合などは、そのほかの方法を使用すべきです。詳細については、次のトピックを参照してください。

Kerberos レルムへのユーザーの自動的な移行

PAM フレームワークを使用して、デフォルトの Kerberos レルムに有効なユーザーアカウントを持たない UNIX ユーザーを自動的に移行することができます。具体的には、pam_krb5_migrate モジュールを PAM サービスの認証スタックで使用します。Kerberos 主体を持たないユーザーがパスワードを使用してシステムへのログインを行うたびに、そのユーザーに対して Kerberos 主体が自動的に作成されるように、サービスを設定します。新しい主体パスワードは UNIX パスワードと同じにします。pam_krb5_migrate モジュールの使用方法については、「Kerberos レルム内のユーザーを自動的に移行するように構成する方法」を参照してください。

使用するデータベースの伝播システム

マスター KDC に格納されているデータベースは、定期的にスレーブ KDC に伝播する必要があります。データベースの伝播は増分的に構成することができます。増分処理によって、データベース全体ではなく、更新された情報だけがスレーブ KDC に伝播されます。データベースの伝播の詳細については、「Kerberos データベースの管理」を参照してください。

増分伝播を使用しない場合、最初に解決すべき問題の 1 つは、スレーブ KDC の更新頻度です。すべてのクライアントが最新の情報を使用できるようにしておく必要性について、更新の完了にかかる時間と比較検討する必要があります。

1 つのレルムに多くの KDC が配置されている場合は、1 つまたは複数のスレーブからもデータを伝播すると、伝播プロセスを並行して行うことができます。この方法を利用すると、データの更新時間は少なくなりますが、レルムの管理は複雑になります。この戦略の詳細については、「並列伝播の設定」を参照してください。

レルム内でのクロックの同期

Kerberos 認証システムに参加するすべてのホストは、ホスト間の時刻の差が指定した最大時間内になるように内部クロックを同期化する必要があります。「クロックスキュー」と呼ばれるこの機能も、Kerberos セキュリティー検査の 1 つです。参加しているホスト間でクロックスキューを超過すると、要求が拒否されます。

すべてのクロックを同期化するときは、Network Time Protocol (NTP) ソフトウェアを使用します。詳細については、「KDC と Kerberos クライアントのクロックの同期化」を参照してください。クロックの同期化にはほかにも方法があり、NTP は必須ではありません。任意の同期化形式を使用して、クロックスキューによるアクセス障害を回避してください。

クライアントの構成オプション

Solaris 10 の新機能の 1 つに、kclient 設定ユーティリティーがあります。このユーティリティーは、対話型モードまたは非対話型モードで実行できます。対話型モードでは、ユーザーは、Kerberos 固有のパラメータ値を要求されます。このパラメータ値によって、クライアントの設定時に既存のインストールを変更することができます。非対話型モードでは、前もってパラメータ値が設定されたファイルが使用されます。また、非対話型モードではコマンド行オプションも使用できます。対話型モードでも非対話型モードでも手動の処理よりも手順が少なくてすむので、プロセスが迅速化され、ミスが起こりにくくなります。

Solaris 10 5/08 リリースでは、構成不要の Kerberos クライアントが可能になるように変更されました。環境内で次の規則に従うと、Solaris Kerberos クライアントには明示的な構成手順が必要なくなります。

場合によっては、Kerberos クライアントを明示的に構成する方がよいことがあります。

クライアントの設定プロセス全体の詳細については、「Kerberos クライアントの構成」を参照してください。

クライアントログインのセキュリティーの改善

Solaris 10 11/06 リリースでは、クライアントのログイン時に pam_krb5 モジュールを使用して、最新の TGT を発行した KDC と /etc/krb5/krb5.keytab に保存されているクライアントのホスト主体を発行した KDC が同じであることを確認します。pam_krb5 モジュールは、認証スタックで構成されるときに KDC を確認します。クライアントのホスト主体を保存しない DHCP クライアントなど、一部の構成ではこの確認を無効にする必要があります。この確認をオフに設定するには、krb5.conf ファイルの verify_ap_req_nofail オプションを false に設定する必要があります。詳細は、「チケット認可チケット (TGT) の確認を無効にする方法」を参照してください。

KDC の構成オプション

Solaris 10 5/08 リリースからは、LDAP を使用して Kerberos のデータベースファイルを管理する機能のサポートが追加されました。手順については、「LDAP データサーバーを使用するように KDC を構成する方法」を参照してください。LDAP を使用すると、Solaris Kerberos データベースと既存の DS セットアップをより適切に調整する必要があるサイトの管理が簡略化されます。

Kerberos の暗号化タイプ

暗号化タイプとは、Kerberos サービスで使用される、暗号化アルゴリズム、暗号化モード、およびハッシュアルゴリズムを特定する識別子です。Kerberos サービスの鍵は、暗号化タイプに関連付けられ、サービスが鍵を使って暗号化処理を行うときに使用される暗号化アルゴリズムと暗号化モードを特定します。サポートされる暗号化タイプは次のとおりです。


注 –

Solaris 10 8/07 より前のリリースでは、別売の Strong Cryptographic パッケージがインストールされている場合は、Kerberos サービスで aes256-cts-hmac-sha1-96 暗号化タイプを使用できます。


暗号化タイプを変更する場合は、新しい主体データベースの作成時に行います。KDC、サーバー、クライアント間の相互作用のために、既存のデータベースでの暗号化タイプの変更は困難です。データベースを再作成しない場合は、これらのパラメータは設定しないでおいてください。詳細については、「Kerberos 暗号化タイプの使用」を参照してください。


注 –

Solaris 10 が動作していないマスター KDC がインストールされている場合は、マスター KDC をアップグレードする前に、スレーブ KDC を Solaris 10 にアップグレードする必要があります。Solaris 10 のマスター KDC では、古いスレーブが処理できない新しい暗号化タイプが使用されます。


Kerberos グラフィカル管理ツールでのオンラインヘルプ URL

Kerberos グラフィカル管理ツール gkadmin ではオンラインヘルプ URL が使用されるため、「Help Contents」メニューが機能するように URL を適切に定義する必要があります。このマニュアルの HTML 版は、任意のサーバーにインストールできます。また、http://docs.sun.com から任意のマニュアルを使用することもできます。

URL は、Kerberos サービスを使用するようにホストを構成するときに krb5.conf ファイルで指定します。URL には、このマニュアルの「主体とポリシーの管理 (手順)」の「グラフィカルな Kerberos 管理ツール」を指定してください。必要に応じて、別の HTML ページを選択することもできます。