19.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-libskrb5-serverkrb5-workstationをインストールします。 このマシンは特に安全が確保されることが必要です。 — できれば KDC 以外のサービスは実行しないでください。

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

  3. realm 名とドメイン-realm間マッピングを反映するためには、/etc/krb5.conf/var/keberos/krb5kdc/kdc.conf 設定ファイルを編集してください。単純な realm なら、EXAMPLE.COMexample.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. kadminaddprincコマンドを使用して ユーザーのためのプリンシパルを追加します。 kadminkadmin.local は KDC の コマンドラインインターフェイスです。 この中では、kadminプログラムを起動した後に多くのコマンドが利用できます。 詳細はkadminのman ページを参照してください。

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

    注記注記
     

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

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