18.5. Keberos 5サーバーの設定

Kerberosを構築するときは、最初にサーバをインストールします。 スレーブサーバーを構築する必要がある場合には、 マスターとスレーブサーバーの関係を構築する詳細が/usr/share/doc/krb5-server-<version-number>ディレクトリの Keberos 5 Installation Guideにありますので参照してください(<version-number>の部分は、 システムにインストールしているkrb5-server パッケージのバージョン番号を入れてください)。

基本的な Kerberosサーバを設定するには、以下のステップに従います:

  1. Kerberos 5をインストールする前に、 時計同期とDNSがすべてのクライアントとサーバー上で機能していることを確認してください。 Kerberosサーバーとそのクライアント間の時計同期は特に注意してください。 万一、サーバーとクライアントの時計に5分以上の違いがある場合(このデフォルト値は Keberos 5 で設定可能)、 Kerberosクライアントはサーバーに認証されません。 この時計同期は、 正規のユーザーと偽って古いKerberos チケットを用いるアタッカーを防止するために必要です。

    Keberosを用いていない場合でも、 ネットワークでクライアント/サーバー互換の NTP (Network Time Protocol) を設定した方がよいでしょう。 このために、Red Hat Enterprise Linuxにはntpパッケージが含まれています。 Network Time Protocolサーバの設定についての詳細は、 /usr/share/doc/ntp-<version-number>/index.htmを参照してください。 NTPに関するその他の情報は、 http://www.eecis.udel.edu/~ntpをご覧ください。

  2. KDCを実行する専用マシンに、krb5-libs、 krb5-server、krb5-workstationをインストールします。 このマシンは特に安全が確保されることが必要です。 — できれば KDC 以外のサービスは実行しないでください。

    Kerberosを管理するのに、GUI(Graphical User Interface)が必要な場合は、 gnome-kerberosパッケージをインストールしてください。 このパッケージには、krb5というチケットを管理するGUIツールが含まれています。

  3. realm名とドメイン-realm間マッピングを反映するためには、 /etc/krb5.confと /var/keberos/krb5kdc/kdc.conf 設定ファイルを編集してください。 単純なreamlなら、EXAMPLE.COMとexample.com の例の部分に、適切なドメイン名 —大文字、小文字が正しいか確認してください— を入れ、 KDCをkerberos.example.comから Kerberosサーバー名に変更することで、 構築できます。 慣例では、realm 名は大文字で、DNSホスト名とドメイン名は小文字になっています。 これらファイル形式の詳細については、該当する man ページを参照してください。

  4. シェルプロンプトからkrb5_utilユーティリティを使ってデータベースを作成します:

    /usr/kerberos/sbin/kdb5_util create -s 

    createコマンドは、 Kerberos realmの鍵を格納するために使用するデータベースを作成します。 -sスイッチは、 マスターサーバー鍵を格納するstashファイルを作成します。 鍵を読むためのstashファイルが無い場合は、 Kerberosサーバー(krb5kdc)は起動する度に、 ユーザーにマスターサーバーパスワード(鍵を再生成するのに使われる)の入力を促します。

  5. /var/kerberos/krb5kdc/kadm5.aclファイルを編集します。 このファイルはkadmindで使用され、 どのプリンシパルが Kerberos データベースに管理アクセスを持つかを決定し、 また、それぞれのプリンシパルのアクセスレベルを決定します。 ほとんどの企業、団体で以下の様な一行で編集することができます。

    */admin@EXAMPLE.COM��*

    ほとんどのユーザーは、データベース上に単一のプリンシパル (例えばjoe@EXAMPLE.COMのように、NULL、 空、インスタンスなど)で表示されます。 この設定を用いて、adminがインスタンスの第2プリンシパルを持つユーザーは (例、joe/admin@EXAMPLE.COM)、 realm の Kerberos データベース上で全権限を行使することができます。

    一旦、kadmindがサーバー上で起動すると、 realm 内のクライアントやサーバーからkadminを起動する事で、 どのユーザーもそのサービスにアクセスできます。 しかし、kadm5.aclファイルに記載されているユーザだけが、 自身のパスワード変更を除き、どのような変更もデーターベースに対して行えます。

    注意注記
     

    kadminユーティリティは、 ネットワークを介してkadmindサーバーと通信しており、 Kerberosを使って認証を処理します。 このため、ネットワークを介してサーバーに接続する前に、 それを管理する最初のプリンシパルが存在しなければなりません。 kadmin.localコマンドを使用して最初のプリンシパルを作成します。 これは特にKDCと同じホストで使用するようになっており、 認証にKerberosを使用しません。

    第一プリンシパルを作成するには、KDCターミナルで次のkadmin.localコマンドを 入力します:

    /usr/kerberos/sbin/kadmin.local -q "addprinc username/admin"
  6. 以下のコマンドでKerberosを起動します:

    /sbin/service krb5kdc start
    /sbin/service kadmin start
    /sbin/service krb524 start
  7. kadminでaddprincコマンドを使用して ユーザーのためのプリンシパルを追加します。 kadminとkadmin.local は KDC の コマンドラインインターフェイスです。 この中では、kadminプログラムを起動した後に多くのコマンドが利用できます。 詳細はkadminのman ページを参照してください。

  8. KDC がチケットを発行しているか確認します。 最初に、kinitを実行してチケットを生成し、 証明書キャッシュファイルに格納します。 それから、klistを使用してキャッシュ内の証明書一覧を表示します。 kdestroyを用いて、キャッシュとキャッシュ内の証明書を破棄します。

    注意注記
     

    デフォルトでは、kinitは、 システム(Kerberosサーバーではない)にログインした時に使ったアカウントの ログインユーザー名を用いて認証しようとします。 そのユーザー名が Kerberos データベースのプリンシパルと一致しない場合は、 kinitはエラーメッセージを発行します。 このような場合、 コマンドラインに引数として適切なプリンシパルの名前をつけて、 kinitを発行します (kinitprincipal)。

以上のステップを完了すると、Kerberosサーバーは起動し作動してるはずです。