SEAM ソフトウェアをインストールした後は、KDC サーバーを構成します。マスター KDC と (少なくとも 1 つの) スレーブ KDC を構成することによって、資格を発行するサービスを提供します。このような資格は SEAM の基本であるため、KDC は他の作業を行う前にインストールされている必要があります。
マスター KDC とスレーブ KDC の重要な違いは、マスターだけがデータベースの管理要求を処理できることです。たとえば、パスワードの変更や新しいプリンシパルの追加はマスター KDC で行います。その後、このような変更はスレーブ KDC に伝達できます。スレーブ KDC とマスター KDC は両方とも資格を生成します。つまり、スレーブ KDC はマスターが応答できなくなった場合にバックアップを提供します。
事前構成手順を使用しない場合の、一連の構成手順を説明します。。ソフトウェアをインストールするときに事前構成手順を使用した場合、この手順に含まれる多くのファイルは編集する必要がありません。しかし、ファイルの内容は確認してください。
この手順では、次の構成パラメータを使用します。
レルム名 = ACME.COM
DNS ドメイン名 = acme.com
マスター KDC = kdc1.acme.com
スレーブ KDC = kdc2.acme.com
admin プリンシパル = kws/admin
オンラインヘルプの URL = http://denver/ab2/coll.384.1/SEAM/@AB2PageView/6956
マスター KDC を構成するための前提条件
この手順では、マスター KDC ソフトウェアがインストールされている必要があります。さらに、DNS が実行されていなければなりません。マスター KDC を切り替え可能にする命名方法については、「マスター KDC とスレーブ KDC の切り替え」を参照してください。
マスター KDC 上でスーパーユーザーになります。
Kerberos 構成ファイル (krb5.conf) を編集します。
レルム名とサーバー名を変更する必要があります。このファイルの説明については、krb5.conf(4) のマニュアルページを参照してください。構成ファイルを使用して SEAM ソフトウェアをインストールした場合、ファイルの内容を編集せず、確認だけしてください。
kdc1 # cat /etc/krb5/krb5.conf [libdefaults] default_realm = ACME.COM [realms] ACME.COM = { kdc = kdc1.acme.com kdc = kdc2.acme.com admin_server = kdc1.acme.com } [domain_realm] .acme.com = ACME.COM # # ドメイン名とレルム名が同じ場合、このエントリは必要ない。 # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = //denver/ab2/coll.384.1/SEAM/@AB2PageView/6956 } |
この例では、domain_realm、kdc、admin_server、およびすべての domain_realm のエントリが変更されています。レルム名とドメイン名が同じ場合、domain_realm の行はインストールプロセスでは作成されませんが、ここでは必要な場合の例として入れてあります。さらに、help_url を定義する行は編集されています。
KDC 構成ファイル (kdc.conf) を編集します。
レルム名を変更する必要があります。このファイルの説明については、kdc.conf(4) のマニュアルページを参照してください。構成ファイルを使用して SEAM ソフトウェアをインストールした場合、ファイルの内容を編集せず、確認だけしてください。
kdc1 # cat /etc/krb5/kdc.conf [kdcdefaults] kdc_ports = 88,750 [realms] ACME.COM= { profile = /etc/krb5/krb5.conf database_name = /var/krb5/principal admin_keytab = /var/krb5/kadm5.keytab acl_file = /var/krb5/kadm5.acl kadmind_port = 749 max_life = 8h 0m 0s max_renewable_life = 7d 0h 0m 0s } |
この例では、realms セクションのレルム名定義が変更されています。
kdb5_util を使用して、KDC データベースを作成します。
kdb5_util コマンドは KDC データベースを作成します。さらに、-s オプションを指定すると、kadmind と krb5kdc のデーモンを起動する前に、自分自身に対して KDC を認証するための stash ファイルを作成します。
kdc1 # /usr/krb5/sbin/kdb5_util create -r ACME.COM -s Initializing database '/var/krb5/principal' for realm 'ACME.COM' master key name 'K/M@ACME.COM' You will be prompted for the database Master Password. It is important that you NOT FORGET this password. Enter KDC database master key: <鍵を入力する> Re-enter KDC database master key to verify: <もう一度鍵を入力する> |
レルム名がサーバーのネームスペースのドメイン名と同じ場合、レルム名の後にある -r オプションは必要ありません。
Kerberos アクセス制御リストファイル (kadm5.acl) を編集します。
/etc/krb5/kadm5.acl には、生成後、KDC を管理することが許可されたすべてのプリンシパル名が必要です。追加する最初のエントリは次のようになります。
kws/admin@ACME.COM * |
このエントリは ACME.COM レルム内の kws/admin プリンシパルに、KDC 内のプリンシパルまたはポリシーを変更する機能を与えます。デフォルトのインストールでは、すべての admin プリンシパルに一致する「*」が入っています。これはセキュリティの観点から危険であるため、すべての admin プリンシパルのリストに変更する方が安全です。
kadmin.local を起動します。
次の手順では、SEAM が使用するプリンシパルを作成します。
kdc1 # /usr/krb5/sbin/kadmin.local kadmin.local: |
kadmin.local を使用して、admin プリンシパルをデータベースに追加します。
必要なすべての admin プリンシパルを追加できます。KDC 構成プロセスを完了するには、少なくとも 1 つの admin プリンシパルを追加する必要があります。この例では、kws/admin プリンシパルが追加されています。「kws」の代わりに適切なプリンシパル名を使用してください。
kadmin.local: addprinc kws/admin Enter password for principal kws/admin@ACME.COM: <パスワードを入力する> Re-enter password for principal kws/admin@ACME.COM: <もう一度パスワードを入力する> Principal "kws/admin@ACME.COM" created. kadmin.local: |
kadmin.local を使用して、kadmin 用に keytab ファイルを作成します。
次のコマンドは、kadmin と changepw のプリンシパルエントリを持つ特別な keytab ファイルを作成します。これらのプリンシパルは kadmind サービスに必要です。
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.acme.com Entry for principal kadmin/kdc1.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.acme.com Entry for principal changepw/kdc1.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/kadm5.keytab. kadmin.local: |
kadmin.local を終了します。
これで、次の手順に必要なすべてのプリンシパルを追加しました。
kadmin.local: quit |
Kerberos デーモンを起動します。
kdc1 # /etc/init.d/kdc start kdc1 # /etc/init.d/kdc.master start |
kadmin を起動します。
この時点で、SEAM 管理ツールを使用してプリンシパルを追加できます。説明を簡単にするために、コマンド行の例を示します。この手順の前半で作成した admin プリンシパル名の 1 つでログインする必要があります。
kdc1 # /usr/krb5/sbin/kadmin -p kws/admin Enter password: <kws/admin のパスワードを入力する> kadmin: |
kadmin を使用して、マスター KDC の host プリンシパルを作成します。
host プリンシパルは Kerberos 化されたアプリケーション (klist や kprop など) と Kerberos 化されたサービス (ftp や telnet など) で使用されます。
kadmin: addprinc -randkey host/kdc1.acme.com Principal "host/kdc1.acme.com@ACME.COM" created. kadmin: |
省略可能: kadmin を使用して、マスター KDC の root プリンシパルを作成します。
このプリンシパルは認証された NFS マウントで使用されます。したがって、マスター KDC では必要ない場合もあります。
kadmin: addprinc root/kdc1.acme.com Enter password for principal root/kdc1.acme.com@ACME.COM: <パスワードを入力する> Re-enter password for principal root/kdc1.acme.com@ACME.COM: <パスワードをもう一度入力する> Principal "root/kdc1.acme.com@ACME.COM" created. kadmin: |
マスター KDC の host プリンシパルをマスター KDC の keytab ファイルに追加します。
host プリンシパルを keytab ファイルに追加することによって、このプリンシパルが自動的に使用されるようになります。
kadmin: ktadd host/kdc1.acme.com kadmin: Entry for principal host/kdc1.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/krb5.keytab kadmin: quit |
kadmin を終了します。
kadmin: quit |
各 KDC のエントリを伝達構成ファイル (kpropd.acl) に追加します。
このファイルの説明については、kprop(1M) のマニュアルページを参照してください。構成ファイルを使用して SEAM ソフトウェアをインストールした場合、ファイルの内容を編集せず、確認だけしてください。
kdc1 # cat /etc/krb5/kpropd.acl host/kdc1.acme.com@ACME.COM host/kdc2.acme.com@ACME.COM |
省略可能: NTP などのクロック同期機構を使用して、マスター KDC のクロックを同期させます。
NTP をインストールおよび使用することは必須ではありません。しかし、認証が成功するには、すべてのクロックが krb5.conf ファイルの libdefaults セクションで定義されたデフォルトの時間内に収まっている必要があります。NTP については、「KDC と SEAM クライアント間のクロックの同期」を参照してください。
この手順では、kdc3 という新しいスレーブ KDC を構成します。ソフトウェアをインストールするときに事前構成手順を使用していない、あるいは、事前構成手順を行うときに kdc3 をスレーブとして定義していない場合の手順を説明します。事前構成手順を行うときに kdc3 をスレーブとして定義した場合、この手順に含まれる多くのファイルは編集する必要がありません。しかし、ファイルの内容は確認してください。
この手順では、次の構成パラメータを使用します。
レルム名 = ACME.COM
DNS ドメイン名 = acme.com
マスター KDC = kdc1.acme.com
スレーブ KDC = kdc2.acme.com と kdc3.acme.com
admin プリンシパル = kws/admin
オンラインヘルプの URL = http://denver/ab2/coll.384.1/SEAM/@AB2PageView/6956
スレーブ KDC を構成するための前提条件
この手順では、マスター KDC を構成していて、SEAM のスレーブ KDC ソフトウェアを kdc3 にインストールしている必要があります。スレーブ KDC を切り替え可能にする方法については、「マスター KDC とスレーブ KDC の切り替え」を参照してください。
マスター KDC 上で スーパーユーザーになります。
マスター KDC 上で kadmin を起動します。
マスター KDC を構成するときに作成した admin プリンシパル名の 1 つでログインする必要があります。
kdc1 # /usr/krb5/sbin/kadmin -p kws/admin Enter password: <kws/admin のパスワードを入力する> kadmin: |
マスター KDC 上で kadmin を使用して、スレーブ KDC の host プリンシパルをデータベースに追加します。
正常に機能するには、スレーブは host プリンシパルを持つ必要があります。
kadmin: addprinc -randkey host/kdc3.acme.com Principal "host/kdc3@ACME.COM" created. kadmin: |
省略可能: マスター KDC 上で kadmin を使用して、スレーブ KDC の root プリンシパルを作成します。
このプリンシパルは、認証されたファイルシステムをスレーブが NFS マウントする場合だけに必要です。
kadmin: addprinc root/kdc3.acme.com Enter password for principal root/kdc3.acme.com@ACME.COM: <パスワードを入力する> Re-enter password for principal root/kdc3.acme.com@ACME.COM: <パスワードをもう一度入力する> Principal "root/kdc3.acme.com@ACME.COM" created. kadmin: |
kadmin を終了します。
kadmin: quit |
マスター KDC 上で Kerberos 構成ファイル (krb5.conf) を編集します。
各スレーブのエントリを追加する必要があります。このファイルの説明については、krb5.conf(4) のマニュアルページを参照してください。事前構成手順を実行するときに kdc3 をスレーブサーバーとして定義した場合、ファイルの内容を編集せず、確認だけしてください。
kdc1 # cat /etc/krb5/krb5.conf [libdefaults] default_realm = ACME.COM [realms] ACME.COM = { kdc = kdc1.acme.com kdc = kdc2.acme.com kdc = kdc3.acme.com admin_server = kdc1.acme.com } [domain_realm] .acme.com = ACME.COM # # ドメイン名とレルム名が同じ場合、このエントリは必要ない。 # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = //denver/ab2/coll.384.1/SEAM/@AB2PageView/6956 |
マスター KDC 上で各 スレーブ KDC のエントリをデータベース伝達構成ファイル (kpropd.acl) に追加します。
このファイルの説明については、kprop(1M) のマニュアルページを参照してください。事前構成手順を行うときに kdc3 をスレーブサーバーとして定義した場合、ファイルの内容を編集せず、確認だけしてください。
kdc1 # cat /etc/krb5/kpropd.acl host/kdc1.acme.com@ACME.COM host/kdc2.acme.com@ACME.COM host/kdc3.acme.com@ACME.COM |
すべてのスレーブ上でマスター KDC サーバーから KDC 管理ファイルをコピーします。
マスター KDC サーバーは各 KDC サーバーが必要とする情報を更新しているため、この手順はすべてのスレーブ KDC 上で行うことが必要です。事前構成手順を行うときに kdc3 をスレーブサーバーとして定義した場合、ファイルの内容を編集せず、確認だけしてください。ftp などの転送機構を使用すると、マスターから次のファイルのコピーを取得できます。
/etc/krb5/krb5.conf
/etc/krb5/kdc.conf
/etc/krb5/kpropd.acl
新しいスレーブ上で kadmin を使用して、スレーブの host プリンシパルをスレーブの keytab ファイルに追加します。
マスター KDC を構成するときに作成した admin プリンシパル名の 1 つでログインする必要があります。このエントリによって、kprop などの Kerberos 化されたアプリケーションが機能するようになります。
kdc3 # /usr/krb5/sbin/kadmin -p kws/admin Enter password: <kws/admin のパスワードを入力する> kadmin: ktadd host/kdc3.acme.com kadmin: Entry for principal host/kdc3.acme.com with kvno 3, encryption type DES-CBC-CRC added to keytab WRFILE:/etc/krb5/krb5.keytab kadmin: quit |
マスター KDC 上でスレーブ KDC 名を cron ジョブに追加します。そして、crontab -e を実行すると、バックアップが自動的に実行されます。
各スレーブ KDC サーバーの名前を kprop_script 行の終わりに追加します。事前構成手順を行うときに kdc3 をスレーブサーバーとして定義した場合、ファイルの内容を編集せず、確認だけしてください。
10 3 * * * /usr/krb5/lib/kprop_script kdc2.acme.com kdc3.acme.com |
バックアップの時間を変更したい場合もあります。この構成では、バックアッププロセスは毎日の午前 3 時 10 分に起動されます。
マスター KDC 上で kprop_script を使用して、データベースをバックアップおよび伝達します。
データベースのバックアップコピーがすでに利用可能な場合、別のバックアップをする必要はありません。詳細手順については、「手動で Kerberos データベースをスレーブ KDC に伝達するには」を参照してください。
kdc1 # /usr/krb5/lib/kprop_script kdc3.acme.com Database propagation to kdc3.acme.com: SUCCEEDED |
新しいスレーブ上で kdb5_util を使用して、stash ファイルを作成します。
kdc3 # /usr/krb5/sbin/kdb5_util stash kdb5_util: Cannot find/read stored master key while reading master key kdb5_util: Warning: proceeding without master key Enter KDC database master key: <鍵を入力する> |
新しいスレーブ上で KDC デーモン (krb5kdc) を起動します。
kdc3 # /etc/init.d/kdc start |
省略可能: 新しいスレーブ上で NTP などのクロック同期機構を使用して、マスター KDC のクロックと同期させます。
NTP をインストールおよび使用することは必須ではありません。しかし、認証が成功するには、すべてのクロックが krb5.conf ファイルの libdefaults セクションで定義されたデフォルトの時間内に収まっている必要があります。NTP については、「KDC と SEAM クライアント間のクロックの同期」を参照してください。