安装SEAM 软件之后,您必须配置 KDC 服务器。配置一个主 KDC 和至少一个从 KDC,可以提供发放资格的服务。这些资格是 SEAM 的基础,因而首先必须安装 KDC,然后在尝试进行其它的任务。
一个主 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:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
调节 URL,使其指向 "SEAM 管理工具" 一节,正如 SEAM 安装和发行说明 中所描述的情形。
配置一个主 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 # # if the domain name and realm name are equivalent, # this entry is not needed # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956 } |
在本示例中,针对 default_realm,kdc,admin_server,和所有 domain_realm 条目的各行均被更改。包含有针对 default_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 。
kdc1 # /usr/krb5/sbin/kdb5_util create -r ACME.COM -s 为区域 'ACME.COM' 初始化数据库'/var/krb5principal' 将提示您录入数据库主口令。 您切记不要忘记该口令。 录入 KDC 数据库主密钥: <键入密钥> 重新录入 KDC 数据库主密钥来验证: <再次将其键入> |
如果区域名与服务器名称空间域名等效的话,则 -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 配置进程。对于本示例,添加了一个 kws/admin 授权对象。您可以用一个适当的授权对象名称来替换 "kws"。
kadmin.local: addprinc kws/admin 录入授权对象 kws/admin@ACME.COM 的口令: <键入口令> 重新录入授权对象 kws/admin@ACME.COM 的口令: <再次将其键入> 授权对象 "kws/admin@ACME.COM" 被创建。 kadmin.local: |
使用 kadmin.local,为 kadmin 创建一个密钥表文件。
该命令序列创建一个特殊的密钥表文件,其中带有针对 kadmin 和 changepw 的授权对象条目。这些授权对象是 kadmind 服务所必需的。
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.acme.com 授权对象 kadmin/kdc1.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC 被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。 kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.acme.com 授权对象changepw/kdc1.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC 被添加到密钥表 WRFILE:/etc/krb5/kadm5.keytab。 kadmin.local: |
退出 kadmin.local
您业已为下列各步骤添加了所有所要求的授权对象。
kadmin.local: 退出 |
启动 Kerberos 守候程序。
kdc1 # /etc/init.d/kdc startkdc1 # /etc/init.d/kdc.master start |
启动 kadmin。
此时此刻,您可以使用 SEAM 管理工具来添加授权对象。命令行示例是出于简洁目的而显示的。您必须借助您在本过程的早些时候所创建的 admin 授权对象名称中的一个进行登录。
kdc1 # /usr/krb5/sbin/kadmin -p kws/admin 录入口令: <录入 kws/admin 口令> kadmin: |
使用 kadmin 来创建主 KDC 主机授权对象。
主机授权对象为 Kerberized 应用程序 (诸如 klist 和 kprop) 以及 Kerberized 服务 (诸如 ftp 和 telnet) 所使用。
kadmin: addprinc -randkey host/kdc1.acme.com 授权对象 "host/kdc1.acme.com@ACME.COM" 被创建。 kadmin: |
可选: 使用 kadmin 来创建主 KDC root 授权对象。
该授权对象用于已鉴别的 NFS 装配,因而在一个主 KDC 上可能并不是必需的。
kadmin: addprinc root/kdc1.acme.com 录入授权对象 root/kdc1.acme.com@ACME.COM 的口令: <键入口令> 重新录入授权对象 root/kdc1.acme.com@ACME.COM 的口令: <再次将其键入> 授权对象 "root/kdc1.acme.com@ACME.COM" 被创建。 kadmin: |
将主 KDC 主机授权对象添加到主 KDC 密钥表文件。
将主机授权对象添加到密钥表文件,允许自动使用该授权对象。
kadmin: ktadd host/kdc1.acme.com kadmin: 授权对象 host/kdc1.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC 被添加到密钥表 WRFILE:/etc/krb5/krb5.keytab kadmin: 退出 |
退出 kadmin
kadmin: 退出 |
为每个 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 一节中所定义的默认的时间范围之内,以便鉴别获得成功。请参见 "使 KDC 和 SEAM 客户机之间时钟同步",了解关于 NTP 的信息。
在本过程中,一个名为 kdc3 的新的从 KDC 得到配置。为了提供一个完整的示例,假设您在安装软件时没有使用预配置过程,或者在运行预配置过程时未将 kdc3 定义为一个从 KDC。如果您使用了该过程并将 kdc3 标识为一个从 KDC,则本过程中所包含的文件,其中许多就不需要进行编辑,但是您应当审查文件的内容。
本过程使用下列配置参数:
区域名 = ACME.COM
DNS 域名 = acme.com
主 kdc = kdc1.acme.com
从 KDC = kdc2.acme.com 和 kdc3.acme.com
admin 授权对象 = kws/admin
联机帮助 URL = http://denver:8888/ab2/coll.384.1/SEAM/@AB2PageView/6956
调节 URL,使其指向 "SEAM 管理工具" 一节,正如 SEAM 安装和发行说明 中所描述的情形。
配置一个从 KDC 的先决条件。
本过程要求主 KDC 业已得到配置且 SEAM 从 KDC 软件业已安装在 kdc3 上。请参见 "交换主 KDC 和从 KDC",了解从 KDC 需要可交换的情况下的具体的操作指示。
在主 KDC 上: 变为超级用户。
在主 KDC 上: 启动 kadmin。
您必须借助您在配置主 KDC 时所创建的 admin 授权对象名称中的一个进行登录。
kdc1 # /usr/krb5/sbin/kadmin -p kws/admin 录入口令: <录入 kws/admin 口令> kadmin: |
在主 KDC 上: 将从主机授权对象添加到数据库,如果尚未这样作的话,方法是使用 kadmin。
为了让从 KDC 能够工作,它必须拥有一个主机授权对象。
kadmin: addprinc -randkey host/kdc3.acme.com授权对象 "host/kdc3@ACME.COM" 被创建。 kadmin: |
可选: 在主 KDC 上,使用 kadmin 来创建从 KDC root 授权对象。
只有在从 KDC 将通过 NFS 装配一个已鉴别的文件系统时才需要这一授权对象。
kadmin: addprinc root/kdc3.acme.com 录入授权对象 root/kdc3.acme.com@ACME.COM 的口令: <键入口令> 重新录入授权对象 root/kdc3.acme.com@ACME.COM 的口令: <再次将其键入> 授权对象 "root/kdc3.acme.com@ACME.COM" 被创建。 kadmin: |
退出 kadmin
kadmin: 退出 |
在主 KDC 上: 编辑 Kerberos 配置文件 (krb5.conf)。
您必须为每个从 KDC 添加一个条目。请参见 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 # # if the domain name and realm name are equivalent, # this entry is not needed # [logging] default = FILE:/var/krb5/kdc.log kdc = FILE:/var/krb5/kdc.log [appdefaults] gkadmin = { help_url = http://denver:8888/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 服务器拥有每个 KDC 服务器所需要的更新过的信息。 如果您在运行预配置过程时将 kdc3 定义为一个从服务器,则请验证文件的内容,而不是进行复制。 您可以使用 ftp 或一个类似的传送机制来从主 KDC 抓取下列文件的副本:
/etc/krb5/krb5.conf
/etc/krb5/kdc.conf
/etc/krb5/kpropd.acl
在新的从 KDC 上: 使用 kadmin,将从 KDC 的主机授权对象添加到从 KDC 的密钥表文件。
您必须借助您在配置主 KDC 时所创建的 admin 授权对象名称中的一个进行登录。该条目将使得 kprop 和其它的 Kerberized 应用程序能够工作。
kdc3 # /usr/krb5/sbin/kadmin -p kws/admin 录入口令: <录入 kws/admin 口令> kadmin: ktadd host/kdc3.acme.com kadmin: 授权对象 host/kdc3.acme.com 的条目, kvno 为 3,加密类型为 DES-CBC-CRC 被添加到密钥表 WRFILE:/etc/krb5/krb5.keytab kadmin: 退出 |
在主 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 数据库传播到 kdc3.acme.com: 已成功 |
在新的从 KDC 上: 使用 kdb5_util 来创建一个贮藏文件。
kdc3 # /usr/krb5/sbin/kdb5_util stash kdb5_util: 在读取主密钥 kdb5_util 时, 无法找到/读取所存储的主密钥: 警告: 在没有主密钥的情况下继续 请录入 KDC 数据库主密钥: <键入密钥> |
在新的从 KDC 上: 启动 KDC 守候程序 (krb5kdc)。
kdc3 # /etc/init.d/kdc start |
可选: 在新的从 KDC 上,使用 NTP 或另一时钟同步机制来使主 KDC 时钟同步。
安装和使用 NTP 不是必需的,但是每个时钟必须在 krb5.conf 文件的 libdefaults 一节中所定义的默认的时间范围之内,以便鉴别获得成功。请参见 "使 KDC 和 SEAM 客户机之间时钟同步",了解关于 NTP 的信息。