配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 365
.example.com = EXAMPLE.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 =
}
在此示例中,更改了default_realm、kdc 和admin_server 行以及所有domain_realm 项。此
外,还编辑了定义help_url 的行。
注– 如果要限制加密类型,可以设置default_tkt_enctypes 或default_tgs_enctypes 行。有
关限制加密类型涉及的问题的说明,请参阅第512 页中的“使用Kerberos 加密类型”。
编辑KDC 配置文件(kdc.conf )。
需要更改领域名称。有关此文件的完整说明,请参见kdc.conf(4) 手册页。
kdc1 # cat /etc/krb5/kdc.conf
[kdcdefaults]
kdc_ports = 88,750
[realms]
EXAMPLE.COM= {
profile = /etc/krb5/krb5.conf
3
配置KDC 服务器
366 系统管理指南:安全性服务• 2006 年9 月
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
sunw_dbprop_master_ulogsize = 1000 }
在此示例中,更改了realms 部分中的领域名称定义。此外,在realms 部分中,添加了用于
启用增量传播和选择主KDC 将保留在日志中的更新数的行。
注– 如果需要限制加密类型,可以设置permitted_enctypes、supported_enctypes 或
master_key_type 行。有关限制加密类型涉及的问题的说明,请参阅第512 页中的“使用
Kerberos 加密类型”。
使用kdb5_util 命令创建KDC 数据库。
kdb5_util 命令创建KDC 数据库。此外,与-s 选项一起使用时,此命令会在启动kadmind
和krb5kdc 守护进程之前,创建一个用于向自己验证KDC 的存储文件。
kdc1 # /usr/sbin/kdb5_util create -r EXAMPLE.COM -s
Initializing database ’/var/krb5/principal’ for realm ’EXAMPLE.COM’
master key name
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 的所有主体名称。
*
4
5
配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 367
通过该项,EXAMPLE.COM 领域中的kws/admin 主体可以修改KDC 中的主体或策略。缺省安装
包括用于匹配所有admin 主体的星号(*)。此缺省安装可能会存在安全风险,因此更安全的
方法是包括所有admin 主体的列表。有关更多信息,请参见kadm5.acl(4) 手册页。
启动kadmin.local 命令并添加主体。
接下来的子步骤创建Kerberos 服务使用的主体。
kdc1 # /usr/sbin/kadmin.local
kadmin.local:
a. 向数据库中添加管理主体。
可以根据需要添加任意数量的admin 主体。要完成KDC 配置过程,必须至少添加一个
admin 主体。对于此示例,将添加一个kws/admin 主体。可以将"kws" 替换为相应的主体
名称。
kadmin.local: addprinc kws/admin
Enter password for principal :
Re-enter password for principal :
Principal "" created.
kadmin.local:
b. 创建kiprop 主体。
kiprop 主体用于授权来自主KDC 的更新。
kadmin.local: addprinc -randkey kiprop/kdc1.example.com
Principal "" created.
kadmin.local:
c. 为kadmind 服务创建密钥表文件。
此命令序列创建包含kadmin 和changepw 的主体项的特殊密钥表文件。kadmind 服务需要
使用这些主体。请注意,主体实例为主机名时,无论/etc/resolv.conf 文件中的域名是
大写还是小写,都必须以小写字母指定FQDN。
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc1.example.com
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
6
配置KDC 服务器
368 系统管理指南:安全性服务• 2006 年9 月
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc1.example.com
EEntry for principal changepw/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal changepw/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kadmin/changepw
Entry for principal kadmin/changepw with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/changepw with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/changepw with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kadmin/changepw with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local:
配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 369
d. 将主KDC 服务器的kiprop 主体添加到kadmind 密钥表文件中。
通过将kiprop 主体添加到kadm5.keytab 文件中,kadmind 命令可以在启动增量传播时对
其自身进行验证。
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local:
e. 退出kadmin.local。
已经添加了接下来的步骤所需的所有主体。
kadmin.local: quit
启动Kerberos 守护进程。
kdc1 # svcadm enable -r network/security/krb5kdc
kdc1 # svcadm enable -r network/security/kadmin
启动kadmin 并添加更多主体。
此时,可以使用SEAMAdministration Tool 添加主体。为此,必须使用此过程前面创建的一
个admin 主体名称登录。但是,为简单起见,给出了以下命令行示例。
kdc1 # /usr/sbin/kadmin -p kws/admin
Enter password:
7
8
配置KDC 服务器
370 系统管理指南:安全性服务• 2006 年9 月
kadmin:
a. 创建主KDC host 主体。
基于Kerberos 的应用程序(例如klist 和kprop)将使用主机主体。Solaris 10 客户机在
挂载经过验证的NFS 文件系统时将使用此主体。请注意,主体实例为主机名时,无论
/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定FQDN。
kadmin: addprinc -randkey host/kdc1.example.com
Principal "" created.
kadmin:
b. (可选的)创建kclient 主体。
安装Kerberos 客户机过程中kclient 实用程序将使用此主体。如果不打算使用此实用程
序,则无需添加该主体。kclient 实用程序的用户需要使用此口令。
kadmin: addprinc clntconfig/admin
Enter password for principal :
Re-enter password for principal :
Principal "" created.
kadmin:
c. 将主KDC 的host 主体添加到主KDC 的密钥表文件中。
通过将主机主体添加到密钥表文件中,可以自动使用此主体。
kadmin: ktadd host/kdc1.example.com
Entry for principal host/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 371
kadmin:
d. 退出kadmin。
kadmin: quit
(可选的)使用NTP 或其他时钟同步机制同步主KDC 时钟。
安装和使用网络时间协议(Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个
时钟都必须处于krb5.conf 文件的libdefaults 部分中定义的缺省时间内。有关NTP 的信
息,请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
配置从KDC。
要提供冗余性,请确保至少安装一个从KDC。有关特定说明,请参见第372 页中的“如何
配置从KDC”。
如何配置从KDC
在此过程中,将配置一个名为kdc2 的新从KDC。此外,还将配置增量传播。此过程使用以
下配置参数:
领域名称= EXAMPLE.COM
DNS 域名= example.com
主KDC = kdc1.example.com
从KDC = kdc2.example.com
admin 主体= kws/admin
联机帮助URL=
注– 调整该URL以指向“SEAMAdministration Tool”部分,如第362 页中的“SEAM
Administration Tool 中的联机帮助URL”中所述。
必须配置主KDC。有关此从KDC 是否可交换的特定说明,请参见第405 页中的“交换主
KDC 和从KDC”。
在主KDC 上,成为超级用户。
在主KDC 上,启动kadmin。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
kdc1 # /usr/sbin/kadmin -p kws/admin
Enter password:
9
10
开始之前
1
2
配置KDC 服务器
372 系统管理指南:安全性服务• 2006 年9 月
kadmin:
a. 在主KDC 上,将从主机主体添加到数据库中(如果尚未执行此操作)。
要使从KDC 正常工作,该从KDC 必须具有主机主体。请注意,主体实例为主机名时,
无论/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定FQDN。
kadmin: addprinc -randkey host/kdc2.example.com
Principal "" created.
kadmin:
b. 在主KDC 上,创建kiprop 主体。
kiprop 主体用于授权来自主KDC 的增量传播。
kadmin: addprinc -randkey kiprop/kdc2.example.com
Principal "" created.
kadmin:
c. 退出kadmin。
kadmin: quit
在主KDC 上,编辑Kerberos 配置文件(krb5.conf)。
需要添加每个从KDC 的项。有关此文件的完整说明,请参见krb5.conf(4) 手册页。
kdc1 # cat /etc/krb5/krb5.conf
.
.
[realms]
EXAMPLE.COM = {
kdc = kdc1.example.com
kdc = kdc2.example.com
admin_server = kdc1.example.com
}
3
配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 373
在主KDC 上,将kiprop 项添加到kadm5.acl 中。
通过此项,主KDC 可以接收对kdc2 服务器的增量传播请求。
kdc1 # cat /etc/krb5/kadm5.acl
*
p
在主KDC 上,重新启动kadmind 以使用kadm5.acl 文件中的新项。
kdc1 # svcadm restart network/security/kadmin
在所有从KDC 上,复制主KDC 服务器的KDC 管理文件。
由于主KDC 服务器已更新每台KDC 服务器所需的信息,因此需要在所有从KDC 上执行此
步骤。可以使用ftp 或类似的传送机制从主KDC 获取以下文件的副本:
/etc/krb5/krb5.conf
/etc/krb5/kdc.conf
在所有从KDC 上,将主KDC 和每个从KDC 的项添加到数据库传播配置文件kpropd.acl 中。
需要更新所有从KDC 服务器上的此信息。
kdc2 # cat /etc/krb5/kpropd.acl
在所有从KDC 上,请确保未填充Kerberos 访问控制列表文件kadm5.acl。
未修改的kadm5.acl 文件如下所示:
kdc2 # cat /etc/krb5/kadm5.acl
___ *
如果此文件中包含kiprop 项,请删除它们。
在新的从KDC 上,更改kdc.conf 中的项。
将sunw_dbprop_master_ulogsize 项替换为定义sunw_dbprop_slave_poll 的项。该项将轮询
时间设置为2 分钟。
kdc1 # cat /etc/krb5/kdc.conf
[kdcdefaults]
kdc_ports = 88,750
4
5
6
7
8
9
配置KDC 服务器
374 系统管理指南:安全性服务• 2006 年9 月
[realms]
EXAMPLE.COM= {
profile = /etc/krb5/krb5.conf
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
sunw_dbprop_slave_poll = 2m
}
在新的从KDC 上,启动kadmin 命令。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
kdc2 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 使用kadmin 将从KDC 的主机主体添加到从KDC 的密钥表文件中。
此项可使kprop 和其他基于Kerberos 的应用程序正常工作。请注意,主体实例为主机名
时,无论/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定
FQDN。
kadmin: ktadd host/kdc2.example.com
Entry for principal host/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc2.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc2.example.com with kvno 3, encryption type ARCFOUR
10
配置KDC 服务器
第22 章• 配置Kerberos 服务(任务) 375
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc2.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
b. 将kiprop 主体添加到从KDC 的密钥表文件中。
通过将kiprop 主体添加到krb5.keytab 文件中,kpropd 命令可以在启动增量传播时对其
自身进行验证。
kadmin: ktadd kiprop/kdc2.example.com
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
c. 退出kadmin。
kadmin: quit
在新的从KDC 上,启动Kerberos 传播守护进程。
kdc2 # /usr/lib/krb5/kpropd
在新的从KDC 上,使用kdb5_util 创建一个存储文件。
kdc2 # /usr/sbin/kdb5_util stash
kdb5_util: Cannot find/read stored master key while reading master key
kdb5_util: Warning: proceeding without master key
11
12
配置KDC 服务器
376 系统管理指南:安全性服务• 2006 年9 月
Enter KDC database master key:
中止Kerberos 传播守护进程。
kdc2 # pkill kpropd
(可选的)在新的从KDC 上,使用NTP 或其他时钟同步机制同步主KDC 时钟。
安装和使用网络时间协议(Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个
时钟必须处于krb5.conf 文件的libdefaults 部分中定义的缺省时间内。有关NTP 的信息,
请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
在新的从KDC 上,启动KDC 守护进程(krb5kdc)。
启用krb5kdc 服务时,如果系统配置为从KDC,则还将启动kpropd。
kdc2 # svcadm enable network/security/krb5kdc
配置跨领域验证
有几种方法可以将各个领域链接在一起,从而可以在一个领域中验证另一个领域中的用
户。通常,跨领域验证通过在两个领域之间建立共享私钥来实现。领域之间的关系可以是
分层关系或直接关系(请参见第358 页中的“领域分层结构”)。
如何建立分层跨领域验证
此过程中的示例使用ENG.EAST.EXAMPLE.COM 和EAST.EXAMPLE.COM 两个领域。将按两个方向
建立跨领域验证。必须在两个领域的主KDC 上完成此过程。
必须配置每个领域的主KDC。要完全测试验证过程,必须安装多个客户机或从KDC。
成为第一个主KDC 的超级用户。
为两个领域创建票证授予票证服务主体。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
# /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin: addprinc
Enter password for principal :
kadmin: addprinc
13
14
15
开始之前
1
2
配置跨领域验证
第22 章• 配置Kerberos 服务(任务) 377
Enter password for principal :
kadmin: quit
注– 在两个KDC中为每个服务主体指定的口令必须相同。因此,服务主体
的口令在两个领域中一定相同。
将相应项添加到Kerberos 配置文件(krb5.conf) 中以定义每个领域的域名。
# cat /etc/krb5/krb5.conf
[libdefaults]
.
.
[domain_realm]
.eng.east.example.com = ENG.EAST.EXAMPLE.COM
.east.example.com = EAST.EXAMPLE.COM
在此示例中,定义了ENG.EAST.EXAMPLE.COM 和EAST.EXAMPLE.COM 领域的域名。由于会从上
向下搜索文件,因此先包含子域非常重要。
将Kerberos 配置文件复制到此领域中的所有客户机。
要使跨领域验证正常工作,所有系统(包括从KDC 和其他服务器)必须安装Kerberos 配置
文件(/etc/krb5/krb5.conf) 的新版本。
在第二个领域中重复以上所有步骤。
如何建立直接跨领域验证
此过程中的示例使用ENG.EAST.EXAMPLE.COM 和SALES.WEST.EXAMPLE.COM 两个领域。将按两
个方向建立跨领域验证。必须在两个领域的主KDC 上完成此过程。
必须配置每个领域的主KDC。要完全测试验证过程,必须安装多个客户机或从KDC。
成为一台主KDC 服务器的超级用户。
为两个领域创建票证授予票证服务主体。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
# /usr/sbin/kadmin -p kws/admin
3
4
5
开始之前
1
2
配置跨领域验证
378 系统管理指南:安全性服务• 2006 年9 月
Enter password:
kadmin: addprinc
Enter password for principal
:
kadmin: addprinc
Enter password for principal
:
kadmin: quit
注– 在两个KDC中为每个服务主体指定的口令必须相同。因此,服务主体
的口令在两个领域中一定相同。
在Kerberos 配置文件中添加相应的项以定义指向远程领域的直接路径。
此示例显示了ENG.EAST.EXAMPLE.COM 领域中的客户机。可能需要交换领域名称以获取
SALES.WEST.EXAMPLE.COM 领域中相应的定义。
# cat /etc/krb5/krb5.conf
[libdefaults]
.
.
[capaths]
ENG.EAST.EXAMPLE.COM = {
SALES.WEST.EXAMPLE.COM = .
}
SALES.WEST.EXAMPLE.COM = {
ENG.EAST.EXAMPLE.COM = .
}
3
配置跨领域验证
第22 章• 配置Kerberos 服务(任务) 379
将Kerberos 配置文件复制到当前领域中的所有客户机。
要使跨领域验证正常工作,所有系统(包括从KDC 和其他服务器)必须安装Kerberos 配置
文件(/etc/krb5/krb5.conf) 的新版本。
对第二个领域重复以上所有步骤。
配置Kerberos 网络应用程序服务器
网络应用程序服务器是使用以下一个或多个网络应用程序提供访问的主机:ftp、rcp、
rlogin、rsh 和telnet。要在服务器上启用这些命令的Kerberos 版本,只需执行几个步骤。
如何配置Kerberos 网络应用程序服务器
此过程使用以下配置参数:
应用程序服务器= boston
admin 主体= kws/admin
DNS 域名= example.com
领域名称= EXAMPLE.COM
此过程要求已配置主KDC。要完全测试该过程,必须安装多个客户机。
安装Kerberos 客户机软件。
(可选的)安装NTP 客户机或其他时钟同步机制。
有关NTP 的信息,请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
为新服务器添加主体并更新该服务器的密钥表。
以下命令报告是否存在主机主体:
boston # klist -k |grep host
4
4
4
4
如果此命令未返回主体,则可以使用以下步骤创建新主体。
4
5
开始之前
1
2
3
配置Kerberos 网络应用程序服务器
380 系统管理指南:安全性服务• 2006 年9 月
有关如何使用SEAMAdministration Tool 添加主体的说明将在第456 页中的“如何创建新的
Kerberos 主体”中介绍。以下步骤中的示例说明如何使用命令行添加所需的主体。必须使
用在配置主KDC 时创建的一个admin 主体名称登录。
boston # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 创建服务器的host 主体。
kadmin: addprinc -randkey host/boston.example.com
Principal "host/boston.example.com" created.
kadmin:
b. 将服务器的host 主体添加到服务器的密钥表中。
如果未运行kadmin 命令,请使用以下类似命令重新启动该命令: /usr/sbin/kadmin -p
kws/admin
kadmin: ktadd host/boston.example.com
Entry for principal host/boston.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/boston.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/boston.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/boston.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
c. 退出kadmin。
kadmin: quit
配置Kerberos 网络应用程序服务器
第22 章• 配置Kerberos 服务(任务) 381
配置Kerberos NFS 服务器
NFS 服务可以使用UNIX 用户ID (user ID, UID) 标识用户,但不能直接使用GSS 凭证。要将
凭证转换为UID,可能需要创建将用户凭证映射到UNIX UID 的凭证表。有关缺省凭证映
射的更多信息,请参见第360 页中的“将GSS 凭证映射到UNIX 凭证”。本节中的过程重
点介绍配置Kerberos NFS 服务器、管理凭证表以及对已挂载NFS 的文件系统启动Kerberos
安全模式所需的任务。以下任务列表说明了本节中所包含的任务。
表22–1 配置Kerberos NFS 服务器(任务列表)
任务说明参考
配置Kerberos NFS 服务器。使服务器共享要求Kerberos 验证的文件系统。第382 页中的“如何配置Kerberos
NFS 服务器”
创建凭证表。在缺省映射不满足要求的情况下,生成可用于提
供从GSS 凭证到UNIX 用户ID 的映射的凭证表。
第384 页中的“如何创建凭证表”
更改将用户凭证映射到UNIX
UID 的凭证表。
更新凭证表中的信息。第384 页中的“如何向凭证表中添
加单个项”
在两个类似领域之间创建凭证映
射。
在多个领域共享同一个口令文件的情况下,提供
有关如何将UID 从一个领域映射到另一个领域的
说明。
第385 页中的“如何提供各领域之
间的凭证映射”
使用Kerberos 验证共享文件系
统。
使用安全模式共享文件系统,以便要求Kerberos
验证。
第386 页中的“如何使用多种
Kerberos 安全模式设置安全的NFS
环境”
如何配置Kerberos NFS 服务器
在此过程中,将使用以下配置参数:
领域名称= EXAMPLE.COM
DNS 域名= example.com
NFS 服务器= denver.example.com
admin 主体= kws/admin
完成配置Kerberos NFS 服务器的先决条件。
必须配置主KDC。要完全测试此过程,需要多个客户机。
(可选的)安装NTP 客户机或其他时钟同步机制。
安装和使用网络时间协议(Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个
时钟必须处于krb5.conf 文件的libdefaults 部分中定义的缺省时间内。有关NTP 的信息,
请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
1
2
配置Kerberos NFS 服务器
382 系统管理指南:安全性服务• 2006 年9 月
启动kadmin。
可以使用SEAMAdministration Tool 添加主体,如第456 页中的“如何创建新的Kerberos 主
体”中所述。为此,必须使用在配置主KDC 时创建的一个admin 主体名称登录。不过,以
下示例说明如何使用命令行添加所需的主体。
denver # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 创建服务器的NFS 服务主体。
请注意,主体实例为主机名时,无论/etc/resolv.conf 文件中的域名是大写还是小写,
都必须以小写字母指定FQDN。
对系统上可能用于访问NFS 数据的每个唯一接口重复此步骤。如果主机有多个接口具有
唯一名称,则每个唯一名称必须具有自己的NFS 服务主体。
kadmin: addprinc -randkey nfs/denver.example.com
Principal "nfs/denver.example.com" created.
kadmin:
b. 将服务器的NFS 服务主体添加到服务器的密钥表文件中。
对步骤a 中创建的每个唯一服务主体重复此步骤。
kadmin: ktadd nfs/denver.example.com
Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs/denver.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs denver.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
c. 退出kadmin。
kadmin: quit
3
配置Kerberos NFS 服务器
第22 章• 配置Kerberos 服务(任务) 383
(可选的)如果需要,可创建特殊GSS 凭证映射。
通常,Kerberos 服务在GSS 凭证和UNIX UID 之间生成相应的映射。缺省映射在第360 页中
的“将GSS 凭证映射到UNIX 凭证”中介绍。如果缺省映射不满足要求,请参见第384 页
中的“如何创建凭证表”以获取更多信息。
使用Kerberos 安全模式共享NFS 文件系统。
有关更多信息,请参见第386 页中的“如何使用多种Kerberos 安全模式设置安全的NFS 环
境”。
如何创建凭证表
NFS 服务器使用gsscred 凭证表将Kerberos 凭证映射到UID。对于从使用Kerberos 验证的
NFS 服务器挂载文件系统的NFS 客户机,如果缺省映射不满足要求,则必须创建此表。
编辑/etc/gss/gsscred.conf 并更改安全机制。
将机制更改为files。
使用gsscred 命令创建凭证表。
# gsscred -m kerberos_v5 -a
gsscred 命令从/etc/nsswitch.conf 文件的passwd 项列出的所有源中收集信息。如果希望
凭证表中不包括本地口令项,则可能需要临时删除files 项。有关更多信息,请参见
gsscred(1M) 手册页。
如何向凭证表中添加单个项
此过程要求已在NFS 服务器上创建gsscred 表。有关说明,请参见第384 页中的“如何创
建凭证表”。
成为NFS 服务器上的超级用户。
使用gsscred 命令向凭证表中添加项。
# gsscred -m mech [ -n name [ -u uid ]] -a
mech 定义要使用的安全机制。
name 定义用户的主体名称,如KDC 中所定义。
uid 定义用户的UID,如口令数据库中所定义。
-a 向主体名称映射中添加UID。
4
5
1
2
开始之前
1
2
配置Kerberos NFS 服务器
384 系统管理指南:安全性服务• 2006 年9 月
向凭证表中添加多组成部分主体
在以下示例中,将添加名为sandy/admin 的主体的项,该主体映射到UID 3736。
# gsscred -m kerberos_v5 -n sandy/admin -u 3736 -a
向凭证表中添加其他域中的主体
在以下示例中,将添加名为 的主体的项,该主体映射到UID
3736。
# gsscred -m kerberos_v5 -n -u 3736 -a
如何提供各领域之间的凭证映射
此过程在使用相同口令文件的领域之间提供相应的凭证映射。在此示例中,领域
CORP.EXAMPLE.COM 和SALES.EXAMPLE.COM 使用相同的口令文件。 和
的凭证映射到相同的UID。
成为超级用户。
在客户机系统上,向krb5.conf 文件中添加项。
# cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = CORP.EXAMPLE.COM
.
[realms]
CORP.EXAMPLE.COM = {
.
auth_to_local_realm = SALES.EXAMPLE.COM
.
}
有关对凭证映射问题进行疑难解答的过程的帮助,请参见第443 页中的“观察从GSS 凭证
到UNIX 凭证的映射”。
示例22–1
示例22–2
1
2
故障排除
配置Kerberos NFS 服务器
第22 章• 配置Kerberos 服务(任务) 385
如何使用多种Kerberos 安全模式设置安全的NFS 环
境
通过此过程,NFS 服务器可以使用不同的安全模式或特性提供安全的NFS 访问。客户机与
NFS 服务器协商安全特性时,将使用该客户机有权访问的服务器所提供的第一种特性。此
特性用于NFS 服务器共享的文件系统的所有后续客户机请求。
成为NFS 服务器上的超级用户。
验证在密钥表文件中是否存在NFS 服务主体。
klist 命令报告是否存在密钥表文件并显示主体。如果结果显示不存在密钥表文件或者不存
在NFS 服务主体,则需要验证是否已完成第382 页中的“如何配置Kerberos NFS 服务器”
中的所有步骤。
# klist -k
Keytab name: FILE:/etc/krb5/krb5.keytab
KVNO Principal
---- ---------------------------------------------------------
3
3
3
3
在/etc/nfssec.conf 文件中启用Kerberos 安全模式。
编辑/etc/nfssec.conf 文件并删除位于Kerberos 安全模式前面的"#"。
# cat /etc/nfssec.conf
.
.
#
# Uncomment the following lines to use Kerberos V5 with NFS
#
krb5 390003 kerberos_v5 default - # RPCSEC_GSS
1
2
3
配置Kerberos NFS 服务器
386 系统管理指南:安全性服务• 2006 年9 月
krb5i 390004 kerberos_v5 default integrity # RPCSEC_GSS
krb5p 390005 kerberos_v5 default privacy # RPCSEC_GSS
编辑/etc/dfs/dfstab 文件,并将带有所需安全模式的sec= 选项添加到相应的项中。
share -F nfs -o sec=mode file_system
mode 指定共享文件系统时要使用的安全模式。使用多种安全模式时,会将列表中
的第一种模式用作缺省模式。
file_system 定义要共享的文件系统的路径。
尝试从指定的文件系统访问文件的所有客户机都要求Kerberos 验证。要访问文件,应验证
NFS 客户机上的用户主体。
请确保服务器上正在运行NFS 服务。
如果此命令是您所启动的第一个share 命令或share 命令集,则NFS 守护进程可能未运行。
以下命令将重新启动该守护进程:
# svcadm restart network/nfs/server
(可选的)如果使用的是自动挂载程序,请编辑auto_master 数据库以选择非缺省安全模
式。
如果不使用自动挂载程序访问文件系统或者安全模式的缺省选择可接受,则无需执行此过
程。
file_system auto_home -nosuid,sec=mode
(可选的)使用非缺省模式手动发布用于访问文件系统的mount 命令。
或者,可以使用mount 命令指定安全模式,但此替代方法不会利用自动挂载程序。
# mount -F nfs -o sec=mode file_system
使用一种Kerberos 安全模式共享文件系统
在此示例中,dfstab 文件行表明:在通过NFS 服务访问任何文件之前,必须先成功完成
Kerberos 验证。
# grep krb /etc/dfs/dfstab
share -F nfs -o sec=krb5 /export/home
使用多种Kerberos 安全模式共享文件系统
在此示例中,选择了所有三种Kerberos 安全模式。如果发出挂载请求时未指定任何安全模
式,则将在所有NFS V3 客户机中使用列出的第一种模式(在此例中为krb5)。有关更多信
息,请参见nfssec(5) 手册页。
4
5
6
7
示例22–3
示例22–4
配置Kerberos NFS 服务器
第22 章• 配置Kerberos 服务(任务) 387
# grep krb /etc/dfs/dfstab
share -F nfs -o sec=krb5:krb5i:krb5p /export/home
配置Kerberos 客户机
Kerberos 客户机是网络上需要使用Kerberos 服务的任何主机(不是KDC 服务器)。本节介
绍有关安装Kerberos 客户机的过程以及使用root 验证以挂载NFS 文件系统的特定信息。
配置Kerberos 客户机(任务列表)
以下任务列表包括有关设置Kerberos 客户机的所有过程。每行都包括任务说明(说明执行
该项任务的原因)以及指向该任务的链接。
任务说明参考
建立Kerberos 客户机安装配置文
件。
生成可用于自动安装Kerberos 客户机的客户机安
装配置文件。
第388 页中的“如何创建Kerberos
客户机安装配置文件”
配置Kerberos 客户机。手动安装Kerberos 客户机。如果每台客户机安装
要求唯一的安装参数,请使用此过程。
第393 页中的“如何手动配置
Kerberos 客户机”
自动安装Kerberos 客户机。如果每台客户机的安
装参数都相同,请使用此过程。
第389 页中的“如何自动配置
Kerberos 客户机”
交互式安装Kerberos 客户机。如果仅需要更改一
些安装参数,请使用此过程。
第391 页中的“如何交互配置
Kerberos 客户机”
允许客户机以root 用户身份访
问NFS 文件系统。
在客户机上创建root 主体,以便客户机可以挂载
使用root 访问权限共享的NFS 文件系统。此外,
允许为客户机设置对NFS 文件系统的非交互root
访问权限,以便可以运行cron 作业。
第399 页中的“如何以root 用户身
份访问受Kerberos 保护的NFS 文件
系统”
如何创建Kerberos 客户机安装配置文件
此过程创建可在安装Kerberos 客户机时使用的kclient 配置文件。使用kclient 配置文件,可
降低出现键入错误的可能性。此外,与交互式过程相比,使用该配置文件可以减少用户干
预。
1 成为超级用户。
配置Kerberos 客户机
388 系统管理指南:安全性服务• 2006 年9 月
创建kclient 安装配置文件。
kclient 配置文件样例与以下内容类似:
client# cat /net/kdc1.example.com/export/install/profile
REALM EXAMPLE.COM
KDC kdc1.example.com
ADMIN clntconfig
FILEPATH /net/kdc1.example.com/export/install/krb5.conf
NFS 1
DNSLOOKUP none
如何自动配置Kerberos 客户机
此过程使用安装配置文件。请参见第388 页中的“如何创建Kerberos 客户机安装配置文件
”。
成为超级用户。
运行kclient 安装脚本。
要完成此过程,需要提供clntconfig 主体的口令。
client# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf
Starting client setup
---------------------------------------------------
kdc1.example.com
Setting up /etc/krb5/krb5.conf.
Obtaining TGT for clntconfig/admin ...
2
开始之前
1
2
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 389
Password for :
nfs/client.example.com entry ADDED to KDC database.
nfs/client.example.com entry ADDED to keytab.
host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.
Copied /net/kdc1.example.com/export/clientinstall/krb5.conf.
---------------------------------------------------
Setup COMPLETE.
client#
使用命令行覆盖项自动配置Kerberos 客户机
以下示例将覆盖在安装配置文件中设置的DNSARG 和KDC 参数。
# /usr/sbin/kclient -p /net/kdc1.example.com/export/install/krb5.conf\
-d dns_fallback -k kdc2.example.com
Starting client setup
---------------------------------------------------
kdc1.example.com
示例22–5
配置Kerberos 客户机
390 系统管理指南:安全性服务• 2006 年9 月
Setting up /etc/krb5/krb5.conf.
Obtaining TGT for clntconfig/admin ...
Password for :
nfs/client.example.com entry ADDED to KDC database.
nfs/client.example.com entry ADDED to keytab.
host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.
Copied /net/kdc1.example.com/export/install/krb5.conf.
---------------------------------------------------
Setup COMPLETE.
client#
如何交互配置Kerberos 客户机
此过程使用kclient 安装实用程序而不是使用安装配置文件。
成为超级用户。
运行kclient 安装脚本。
需要提供以下信息:
Kerberos 领域名称
主KDC 主机名
管理主体名称
管理主体的口令
1
2
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 391
运行kclient 安装实用程序
以下输出给出了运行kclient 命令的结果。
client# /usr/sbin/kclient
Starting client setup
---------------------------------------------------
Do you want to use DNS for kerberos lookups ? [y/n]: n
No action performed.
Enter the Kerberos realm: EXAMPLE.COM
Specify the KDC hostname for the above realm: kdc1.example.com
Setting up /etc/krb5/krb5.conf.
Enter the krb5 administrative principal to be used: clntconfig/admin
Obtaining TGT for clntconfig/admin ...
Password for :
Do you plan on doing Kerberized nfs ? [y/n]: n
host/client.example.com entry ADDED to KDC database.
host/client.example.com entry ADDED to keytab.
Do you want to copy over the master krb5.conf file ? [y/n]: y
Enter the pathname of the file to be copied: \
示例22–6
配置Kerberos 客户机
392 系统管理指南:安全性服务• 2006 年9 月
/net/kdc1.example.com/export/install/krb5.conf
Copied /net/kdc1.example.com/export/install/krb5.conf.
---------------------------------------------------
Setup COMPLETE !
#
如何手动配置Kerberos 客户机
在此过程中,将使用以下配置参数:
领域名称= EXAMPLE.COM
DNS 域名= example.com
主KDC = kdc1.example.com
从KDC = kdc2.example.com
客户机= client.example.com
admin 主体= kws/admin
用户主体= mre
联机帮助URL=
注– 调整该URL以指向“SEAMAdministration Tool”部分,如第362 页中的“SEAM
Administration Tool 中的联机帮助URL”中所述。
成为超级用户。
编辑Kerberos 配置文件( krb5.conf)。
要从Kerberos 缺省版本更改该文件,需要更改领域名称和服务器名称。您还需要标识
gkadmin 帮助文件的路径。
kdc1 # cat /etc/krb5/krb5.conf
[libdefaults]
default_realm = EXAMPLE.COM
1
2
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 393
[realms]
EXAMPLE.COM = {
kdc = kdc1.example.com
kdc = kdc2.example.com
admin_server = kdc1.example.com
}
[domain_realm]
.example.com = EXAMPLE.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 =
注– 如果要限制加密类型,可以设置default_tkt_enctypes 或default_tgs_enctypes 行。有
关限制加密类型涉及的问题的说明,请参阅第512 页中的“使用Kerberos 加密类型”。
配置Kerberos 客户机
394 系统管理指南:安全性服务• 2006 年9 月
(可选的)更改用于定位KDC 的过程。
缺省情况下,使用主机和域名到kerberos 领域的映射定位KDC。可以通过将
dns_lookup_kdc、dns_lookup_realm 或dns_fallback 添加到krb5.conf 文件的libdefaults
部分来更改此行为。有关更多信息,请参见krb5.conf(4) 手册页。
(可选的)使用NTP 或其他时钟同步机制将客户机时钟与主KDC 时钟同步。
安装和使用网络时间协议(Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个
时钟必须处于krb5.conf 文件的libdefaults 部分中定义的缺省时间内。有关NTP 的信息,
请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
启动kadmin。
可以使用SEAMAdministration Tool 添加主体,如第456 页中的“如何创建新的Kerberos 主
体”中所述。为此,必须使用在配置主KDC 时创建的一个admin 主体名称登录。不过,以
下示例说明如何使用命令行添加所需的主体。
denver # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. (可选的)如果不存在用户主体,请创建用户主体。
仅当尚未对与此主机关联的用户指定主体时,才需要创建用户主体。
kadmin: addprinc mre
Enter password for principal :
Re-enter password for principal :
kadmin:
b. (可选的)创建root 主体。
如果客户机不要求对使用NFS 服务挂载的远程文件系统拥有root 访问权限,则可以跳
过此步骤。为了避免创建领域范围的root 主体,root 主体应是由两个部分组成的主体
(第二个组成部分为Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,
无论/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定FQDN。
kadmin: addprinc -randkey root/client.example.com
Principal "root/client.example.com" created.
kadmin:
c. 创建host 主体。
host 主体用于验证应用程序。
kadmin: addprinc -randkey host/denver.example.com
3
4
5
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 395
Principal "" created.
kadmin:
d. (可选的)将服务器的NFS 服务主体添加到服务器的密钥表文件中。
仅当客户机需要使用Kerberos 验证访问NFS 文件系统时,才需要执行此步骤。
kadmin: ktadd nfs/denver.example.com
Entry for principal nfs/denver.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs/denver.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs/denver.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal nfs/denver.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
e. (可选的)将root 主体添加到服务器的密钥表文件中。
如果添加了root 主体,则必须执行此步骤,以便客户机对使用NFS 服务挂载的文件系
统拥有root 访问权限。如果需要非交互root 访问权限(例如,以root 身份运行cron 作
业),也必须执行此步骤。
kadmin: ktadd root/client.example.com
Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
配置Kerberos 客户机
396 系统管理指南:安全性服务• 2006 年9 月
kadmin:
f. 将host 主体添加到服务器的密钥表文件中。
kadmin: ktadd host/denver.example.com
Entry for principal host/denver.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/denver.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
g. 退出kadmin。
kadmin: quit
(可选的)要在NFS 上使用Kerberos,请在/etc/nfssec.conf 文件中启用Kerberos 安全模
式。
编辑/etc/nfssec.conf 文件并删除位于Kerberos 安全模式前面的"#"。
# cat /etc/nfssec.conf
.
.
#
# Uncomment the following lines to use Kerberos V5 with NFS
#
krb5 390003 kerberos_v5 default - # RPCSEC_GSS
krb5i 390004 kerberos_v5 default integrity # RPCSEC_GSS
krb5p 390005 kerberos_v5 default privacy # RPCSEC_GSS
6
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 397
如果希望客户机自动更新TGT 或者向用户发出有关Kerberos 票证失效的警告,请在
/etc/krb5/warn.conf 文件中创建相应的项。
有关更多信息,请参见warn.conf(4) 手册页。
使用非Kerberos KDC 设置Kerberos 客户机
可以设置Kerberos 客户机,使其与非Kerberos KDC 协同工作。在此情况下,必须在realms
部分的/etc/krb5/krb5.conf 文件中包括一行。该行更改客户机与Kerberos 口令更改服务器
通信时要使用的协议。该行的格式如下:
[realms]
EXAMPLE.COM = {
kdc = kdc1.example.com
kdc = kdc2.example.com
admin_server = kdc1.example.com
kpasswd_protocol = SET_CHANGE
}
主机和域名到Kerberos 领域的映射的DNS TXT 记录
@ IN SOA kdc1.example.com root.kdc1.example.com (
1989020501 ;serial
10800 ;refresh
3600 ;retry
3600000 ;expire
86400 ) ;minimum
IN NS kdc1.example.com.
kdc1 IN A 192.146.86.20
kdc2 IN A 192.146.86.21
7
示例22–7
示例22–8
配置Kerberos 客户机
398 系统管理指南:安全性服务• 2006 年9 月
_kerberos.example.com. IN TXT "EXAMPLE.COM"
_kerberos.kdc1.example.com. IN TXT "EXAMPLE.COM"
_kerberos.kdc2.example.com. IN TXT "EXAMPLE.COM"
Kerberos 服务器位置的DNS SRV 记录
此示例定义主KDC、admin 服务器和kpasswd 服务器的位置记录。
@ IN SOA kdc1.example.com root.kdc1.example.com (
1989020501 ;serial
10800 ;refresh
3600 ;retry
3600000 ;expire
86400 ) ;minimum
IN NS kdc1.example.com.
kdc1 IN A 192.146.86.20
kdc2 IN A 192.146.86.21
_kerberos._udp.EXAMPLE.COM IN SRV 0 0 88 kdc1.example.com
_kerberos-adm._udp.EXAMPLE.COM IN SRV 0 0 749 kdc1.example.com
_kpasswd._udp.EXAMPLE.COM IN SRV 0 0 749 kdc1.example.com
如何以root 用户身份访问受Kerberos 保护的NFS 文
件系统
通过此过程,客户机可以使用root ID 权限访问要求Kerberos 验证的NFS 文件系统。特别
是,可以访问使用以下选项共享的NFS 文件系统:-o sec=krb5,root=client1.sun.com。
成为超级用户。
示例22–9
1
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 399
启动kadmin。
可以使用SEAMAdministration Tool 添加主体,如第456 页中的“如何创建新的Kerberos 主
体”中所述。为此,必须使用在配置主KDC 时创建的一个admin 主体名称登录。不过,以
下示例说明如何使用命令行添加所需的主体。
denver # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 为NFS 客户机创建root 主体。
此主体用于对要求Kerberos 验证的已挂载NFS 的文件系统提供root 等效访问权限。为了
避免创建领域范围的root 主体,root 主体应是由两个部分组成的主体(第二个组成部分
为Kerberos 客户机系统的主机名)。请注意,主体实例为主机名时,无论
/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定FQDN。
kadmin: addprinc -randkey root/client.example.com
Principal "root/client.example.com" created.
kadmin:
b. 将root 主体添加到服务器的密钥表文件中。
如果添加了root 主体,则必须执行此步骤,以便客户机对使用NFS 服务挂载的文件系
统拥有root 访问权限。如果需要非交互root 访问权限(例如,以root 身份运行cron 作
业),也必须执行此步骤。
kadmin: ktadd root/client.example.com
Entry for principal root/client.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal root/client.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
2
配置Kerberos 客户机
400 系统管理指南:安全性服务• 2006 年9 月
c. 退出kadmin。
kadmin: quit
在Kerberos 领域中配置用户自动迁移
没有Kerberos 主体的用户可以自动迁移到现有Kerberos 领域。通过将pam_krb5_migrate 模
块堆叠在/etc/pam.conf 的服务验证栈中,可以通过正在使用的服务的PAM框架实现迁
移。
在此示例中,将配置rlogin 和other PAM服务名称以使用自动迁移。将使用以下配置参数
:
领域名称= EXAMPLE.COM
主KDC = kdc1.example.com
承载迁移服务的计算机= server1.example.com
迁移服务主体= host/server1.example.com
将server1 设置为EXAMPLE.COM 领域的Kerberos 客户机。有关更多信息,请参见第388 页中
的“配置Kerberos 客户机”。
检查是否存在server1 的主机服务主体。
server1 的keytab 文件中的主机服务主体用于向主KDC 验证该服务器。
server1 # klist -k
Keytab name: FILE:/etc/krb5/krb5.keytab
KVNO Principal
---- ------------------------------------------------
3
3
3
3
对PAM配置文件进行更改。
将pam_krb5_migrate PAM模块添加到rlogin 和other 服务名称的验证栈中。系统将自动为
使用rlogin、telnet 或ssh 而不具有Kerberos 主体的用户创建主体。
# cat /etc/pam.conf
.
开始之前
1
2
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 401
.
#
# rlogin service (explicit because of pam_rhost_auth)
#
rlogin auth sufficient pam_rhosts_auth.so.1
rlogin auth requisite pam_authtok_get.so.1
rlogin auth required pam_dhkeys.so.1
rlogin auth required pam_unix_cred.so.1
rlogin auth required pam_unix_auth.so.1
rlogin auth sufficient pam_krb5.so.1
rlogin auth optional pam_krb5_migrate.so.1
#
.
.
#
# Default definitions for Authentication management
# Used when service name is not explicitly mentioned for authentication
#
other auth requisite pam_authtok_get.so.1
other auth required pam_dhkeys.so.1
other auth required pam_unix_cred.so.1
other auth required pam_unix_auth.so.1
other auth sufficient pam_krb5.so.1
other auth optional pam_krb5_migrate.so.1
配置Kerberos 客户机
402 系统管理指南:安全性服务• 2006 年9 月
(可选的)如果需要,可强制立即更改口令。
可以将新建Kerberos 帐户的口令失效时间设置为当前时间(现在),以便强制立即更改
Kerberos 口令。要将失效时间设置为当前时间,请将expire_pw 选项添加到使用
pam_krb5_migrate 模块的行中。有关更多信息,请参见pam_krb5_migrate(5) 手册页。
# cat /etc/pam.conf
.
.
rlogin auth optional pam_krb5_migrate.so.1 expire_pw
#
.
.
other auth optional pam_krb5_migrate.so.1 expire_pw
在主KDC 上,更新访问控制文件。
以下项将为所有用户(root 用户除外)授予对host/server1.example.com 服务主体的迁移
和查询权限。务必注意,不应使用U 权限迁移kadm5.acl 文件中列出的用户。这些项必须位
于允许所有用户或ui 项之前。有关更多信息,请参见kadm5.acl(4) 手册页。
kdc1 # cat /etc/krb5/kadm5.acl
U root
ui *
*
在主KDC 上,重新启动Kerberos 管理守护进程。
通过此步骤,kadmind 守护进程可以使用新的kadm5.acl 项。
kdc1 # svcadm restart network/security/kadmin
在主KDC 上,向pam.conf 文件中添加项。
通过以下项,kadmind 守护进程可以使用k5migrate PAM服务来验证需要迁移的帐户的
UNIX 用户口令。
# grep k5migrate /etc/pam.conf
k5migrate auth required pam_unix_auth.so.1
k5migrate account required pam_unix_account.so.1
3
4
5
6
配置Kerberos 客户机
第22 章• 配置Kerberos 服务(任务) 403
同步KDC 和Kerberos 客户机的时钟
所有参与Kerberos 验证系统的主机都必须在指定的最长时间(称为时钟相位差)内同步其
内部时钟。针对这一要求,需要进行另一种Kerberos 安全检查。如果任意两台参与主机之
间的时间偏差超过了时钟相位差,则客户机请求会被拒绝。
时钟相位差还确定应用程序服务器必须跟踪所有Kerberos 协议消息的时间长度,以便识别
和拒绝重放的请求。因此,时钟相位差的值越大,应用程序服务器必须收集的信息就越
多。
时钟相位差的最大缺省值为300 秒(5 分钟)。可以在krb5.conf 文件的libdefaults 部分
中更改此缺省值。
注– 出于安全原因,不要将时钟相位差增大到超过300 秒。
由于维护KDC 和Kerberos 客户机之间的同步时钟非常重要,因此应使用网络时间协议
(Network Time Protocol, NTP) 软件同步这些时钟。从Solaris 2.6 发行版开始,Solaris 软件中
提供了由美国特拉华大学开发的NTP 公用软件。
注– 同步时钟的另一种方法是使用rdate 命令和cron 作业(一种比使用NTP参与性更小的
过程)。但是,本节重点介绍如何使用NTP。并且,如果使用网络来同步时钟,时钟同步
协议本身必须是安全的。
通过NTP,可以在网络环境中管理准确时间或网络时钟同步,或者同时管理这两者。本质
上,NTP 是一种服务器/客户机实现。可以选择一个系统(NTP 服务器)作为主时钟。然
后,设置所有其他系统(NTP 客户机),使这些系统的时钟与主时钟同步。
为了同步时钟,NTP 使用xntpd 守护进程,该守护进程设置并维护UNIX 系统时间,使其与
Internet 标准时间服务器的时间保持一致。以下给出了此服务器/客户机NTP 实现的示例。
同步KDC 和Kerberos 客户机的时钟
404 系统管理指南:安全性服务• 2006 年9 月
图22–1 使用NTP同步时钟
确保KDC 和Kerberos 客户机保持时钟同步涉及以下步骤的实现:
1. 在网络上设置NTP 服务器。此服务器可以是除主KDC 之外的任何系统。要了解NTP 服
务器任务,请参见《System Administration Guide: Network Services》中的“Managing
Network Time Protocol (Tasks)”。
2. 在网络上配置KDC 和Kerberos 客户机时,将它们设置为NTP 服务器的NTP 客户机。要
了解NTP 客户机任务,请参见《System Administration Guide: Network Services》中
的“Managing Network Time Protocol (Tasks)” 。
交换主KDC 和从KDC
使用本节中的过程可以更容易地将主KDC 与从KDC 进行交换。仅当主KDC 服务器由于某
种原因出现故障时,或者需要重新安装主KDC(例如,由于安装了新硬件)时,才应将主
KDC 与从KDC 进行交换。
如何配置可交换的从KDC
在希望其可以成为主KDC 的从KDC 服务器上执行此过程。此过程假定将使用增量传播。
在安装KDC 过程中使用主KDC 和可交换从KDC 的别名。
定义KDC 的主机名时,请确保DNS 中包括每个系统的别名。此外,在
/etc/krb5/krb5.conf 文件中定义主机时也应使用别名。
1
交换主KDC 和从KDC
第22 章• 配置Kerberos 服务(任务) 405
逐步完成从KDC 安装。
在进行任何交换之前,在该领域中此服务器的作用应与任何其他从KDC 相同。有关说明,
请参见第372 页中的“如何配置从KDC”。
移动主KDC 命令
要禁止从该从KDC 运行主KDC 命令,请将kprop、kadmind 和kadmin.local 命令移到一个
保留位置。
kdc4 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
kdc4 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
kdc4 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
如何交换主KDC 和从KDC
在此过程中,要交换出的主KDC 服务器名为kdc1。将成为新的主KDC 的从KDC 名为
kdc4。此过程假定将使用增量传播。
此过程要求已将该从KDC 服务器设置为可交换的从KDC。有关更多信息,请参见第405 页
中的“如何配置可交换的从KDC”。
在新的主KDC 上,启动kadmin。
kdc4 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 为kadmind 服务创建新的主体。
以下示例中的第一个addprinc 命令显示为两行,但实际上该命令应在同一行中键入。
kadmin: addprinc -randkey -allow_tgs_req +password_changing_service -clearpolicy \
changepw/kdc4.example.com
Principal "" created.
kadmin: addprinc -randkey -allow_tgs_req -clearpolicy kadmin/kdc4.example.com
Principal "" created.
kadmin:
2
3
开始之前
1
交换主KDC 和从KDC
406 系统管理指南:安全性服务• 2006 年9 月
b. 创建密钥表文件。
kadmin: ktadd -k /etc/krb5/kadm5.keytab kadmin/kdc4.example.com
Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kadmin/kdc4.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin: ktadd -k /etc/krb5/kadm5.keytab changepw/kdc4.example.com
Entry for principal changepw/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal changepw/kdc4.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal changepw/kdc4.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal changepw/kdc4.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
c. 退出kadmin。
kadmin: quit
在新的主KDC 上,强制执行同步。
以下步骤将在从服务器上强制执行完全KDC 更新。
kdc4 # svcadm disable network/security/krb5kdc
kdc4 # rm /var/krb5/principal.ulog
2
交换主KDC 和从KDC
第22 章• 配置Kerberos 服务(任务) 407
kdc4 # svcadm enable network/security/krb5kdc
在新的主KDC 上,清除更新日志。
以下步骤将重新初始化新的主KDC 服务器的更新日志。
kdc4 # svcadm disable network/security/krb5kdc
kdc4 # rm /var/krb5/principal.ulog
在旧的主KDC 上,中止kadmind 和krb5kdc 进程。
中止kadmind 进程后,可防止对KDC 数据库进行任何更改。
kdc1 # svcadm disable network/security/kadmin
kdc1 # svcadm disable network/security/krb5kdc
在旧的主KDC 上,指定请求传播的轮询时间。
将/etc/krb5/kdc.conf 中的sunw_dbprop_master_ulogsize 项替换为定义
sunw_dbprop_slave_poll 的项。该项将轮询时间设置为2 分钟。
kdc1 # cat /etc/krb5/kdc.conf
[kdcdefaults]
kdc_ports = 88,750
[realms]
EXAMPLE.COM= {
profile = /etc/krb5/krb5.conf
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
3
4
5
交换主KDC 和从KDC
408 系统管理指南:安全性服务• 2006 年9 月
sunw_dbprop_slave_poll = 2m
}
在旧的主KDC 上,移动主KDC 命令和kadm5.acl 文件。
要禁止运行主KDC 命令,请将kprop、kadmind 和kadmin.local 命令移到一个保留位置。
kdc1 # mv /usr/lib/krb5/kprop /usr/lib/krb5/kprop.save
kdc1 # mv /usr/lib/krb5/kadmind /usr/lib/krb5/kadmind.save
kdc1 # mv /usr/sbin/kadmin.local /usr/sbin/kadmin.local.save
kdc1 # mv /etc/krb5/kadm5.acl /etc/krb5/kadm5.acl.save
在DNS 服务器上,更改主KDC 的别名。
要更改服务器,请编辑example.com 区域文件并更改masterkdc 的项。
masterkdc IN CNAME kdc4
在DNS 服务器上,重新启动Internet 域名服务器。
运行以下命令以重新装入新的别名信息:
# svcadm refresh network/dns/server
在新的主KDC 上,移动主KDC 命令和从kpropd.acl 文件。
kdc4 # mv /usr/lib/krb5/kprop.save /usr/lib/krb5/kprop
kdc4 # mv /usr/lib/krb5/kadmind.save /usr/lib/krb5/kadmind
kdc4 # mv /usr/sbin/kadmin.local.save /usr/sbin/kadmin.local
kdc4 # mv /etc/krb5/kpropd.acl /etc/krb5/kpropd.acl.save
在新的主KDC 上,创建Kerberos 访问控制列表文件(kadm5.acl)。
填充后,/etc/krb5/kadm5.acl 文件应包含允许管理KDC 的所有主体名称。该文件还应列出
请求增量传播的所有从KDC。有关更多信息,请参见kadm5.acl (4) 手册页。
kdc4 # cat /etc/krb5/krb5.acl
*
p
在新的主KDC 上的kdc.conf 文件中,指定更新日志大小。
将sunw_dbprop_slave_poll 项替换为定义sunw_dbprop_master_ulogsize 的项。该项将日志
大小设置为1000 项。
kdc1 # cat /etc/krb5/kdc.conf
6
7
8
9
10
11
交换主KDC 和从KDC
第22 章• 配置Kerberos 服务(任务) 409
[kdcdefaults]
kdc_ports = 88,750
[realms]
EXAMPLE.COM= {
profile = /etc/krb5/krb5.conf
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
sunw_dbprop_master_ulogsize = 1000
}
在新的主KDC 上,将kiprop 主体添加到kadmind 密钥表文件中。
kdc4 # kadmin.local
kadmin.local: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc4.example.com
Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc4.example.com with kvno 3, encryption type DES cbc mode
12
交换主KDC 和从KDC
410 系统管理指南:安全性服务• 2006 年9 月
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin.local: quit
在新的主KDC 上,启动kadmind 和krb5kdc。
kdc4 # svcadm enable network/security/krb5kdc
kdc4 # svcadm enable network/security/kadmin
在旧的主KDC 上,添加kiprop 服务主体。
通过将kiprop 主体添加到krb5.keytab 文件中,kpropd 守护进程可以对其自身进行增量传
播服务验证。
kdc1 # /usr/sbin/kadmin -p kws/admin
Authenticating as pricipal with password.
Enter password:
kadmin: ktadd kiprop/kdc1.example.com
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin: quit
在旧的主KDC 上,将krb5.conf 中列出的每个KDC 的项添加到传播配置文件kpropd.acl 中。
kdc1 # cat /etc/krb5/kpropd.acl
13
14
15
交换主KDC 和从KDC
第22 章• 配置Kerberos 服务(任务) 411
在旧的主KDC 上,启动kpropd 和krb5kdc。
启动krb5kdc 守护进程时,如果将系统配置为从KDC,则kpropd 也将启动。
kdc1 # svcadm enable network/security/krb5kdc
管理Kerberos 数据库
Kerberos 数据库是Kerberos 的主干,必须正确维护。本节介绍有关如何管理Kerberos 数据
库的一些过程,例如备份和恢复数据库、设置增量或并行传播以及管理存储文件。第
365 页中的“如何配置主KDC” 中介绍了初始设置该数据库的步骤。
备份和传播Kerberos 数据库
将Kerberos 数据库从主KDC 传播到从KDC 是最重要的配置任务之一。如果传播频率不够
高,则主KDC 和从KDC 将不能同步。因此,如果主KDC 关闭,则从KDC 将不能获取最新
的数据库信息。此外,如果出于平衡负载目的将从KDC 配置为主KDC,则将该从KDC 用
作主KDC 的客户机将不能获取最新的信息。所以,必须确保传播频率足够高,或者基于更
改Kerberos 数据库的频率配置服务器使其进行增量传播。增量传播优先于手动传播,因为
手动传播数据库时需要更多的管理开销。此外,执行完全数据库传播时效率很低。
配置主KDC 时,可以在cron 作业中设置kprop_script 命令以自动将Kerberos 数据库备份
到/var/krb5/slave_datatrans 转储文件,并将该文件传播到从KDC。不过,与其他文件一
样,Kerberos 数据库可能会损坏。如果从KDC 上的数据受损,您可能无法注意到,因为下
一次数据库自动传播会安装一个新的副本。但是,如果主KDC 上的数据受损,则下一次传
播期间会将损坏的数据库传播到所有从KDC。而且,损坏的备份会覆写主KDC 上先前未损
坏的备份文件。
由于在这种情况下不存在任何“安全”的备份副本,因此还应设置cron 作业,以便定期将
slave_datatrans 转储文件复制到另一位置,或者使用kdb5_util 的dump 命令创建另一份单
独的备份副本。这样,如果数据库受损,则可以使用kdb5_util 的load 命令在主KDC 上恢
复最新备份。
另一条重要注意事项是:由于数据库转储文件包含主体密钥,因此需要阻止未经授权的用
户访问该文件。缺省情况下,只有root 身份才具有读写数据库转储文件的权限。要阻止未
经授权的访问,请仅使用kprop 命令传播数据库转储文件,该命令会对要传送的数据进行加
密。此外,kprop 仅将数据传播到从KDC,这可以最大程度地降低将数据库转储文件意外
发送到未经授权的主机的几率。
16
管理Kerberos 数据库
412 系统管理指南:安全性服务• 2006 年9 月
注意– 如果传播Kerberos 数据库之后对其进行了更新,并且在下一次传播之前该数据库受
损,则从KDC 将不包含这些更新。这些更新将丢失。因此,如果要在计划的定期传播之前
向Kerberos 数据库中添加重要的更新,应手动传播该数据库,以避免数据丢失。
kpropd.acl 文件
KDC 上的kpropd.acl 文件提供主机主体名称的列表(一个名称占一行),用于指定KDC
可以通过传播从其接收更新数据库的系统。如果使用主KDC 传播所有从KDC,则每个从
KDC 上的kpropd.acl 文件仅需包含主KDC 的主机主体名称。
但是,本书中的Kerberos 安装和后续配置步骤将指导您如何将相同的kpropd.acl 文件添加
到主KDC 和从KDC 中。此文件包含所有KDC 主机主体名称。通过此配置,在传播KDC 临
时不可用时,可以从任何KDC 进行传播。而且,通过在所有KDC 上保留相同副本,可以
更容易地维护配置。
kprop_script 命令
kprop_script 命令使用kprop 命令将Kerberos 数据库传播到其他KDC。如果在从KDC 上运
行kprop_script 命令,则会将该从KDC 的Kerberos 数据库副本传播到其他KDC。
kprop_script 的参数接受主机名列表,该列表以空格分隔,表示要传播的KDC。
运行kprop_script 时,将在/var/krb5/slave_datatrans 文件中创建Kerberos 数据库的备
份,并将该文件复制到指定的KDC。在完成传播之前,Kerberos 数据库处于锁定状态。
如何备份Kerberos 数据库
成为主KDC 的超级用户。
使用kdb5_util 命令的dump 命令备份Kerberos 数据库。
# /usr/sbin/kdb5_util dump [-verbose] [-d dbname] [filename [principals...]]
-verbose 列显要备份的每个主体和策略的名称。
dbname 定义要备份的数据库的名称。请注意,可以指定文件的绝对路径。如果未指
定-d 选项,则缺省数据库名称为/var/krb5/principal。
filename 定义用于备份数据库的文件。可以指定文件的绝对路径。如果未指定文件,则
数据库将转储到标准输出。
principals 定义要备份的一个或多个主体的列表(以空格分隔)。必须使用全限定主体名
称。如果未指定任何主体,则将备份整个数据库。
备份Kerberos 数据库
在以下示例中,Kerberos 数据库将备份到名为dumpfile 的文件中。由于指定了-verbose 选
项,因此备份时会列显每个主体。
1
2
示例22–10
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 413
# kdb5_util dump -verbose dumpfile
在以下示例中,将备份Kerberos 数据库中的pak 和pak/admin 主体。
# kdb5_util dump -verbose dumpfile
如何恢复Kerberos 数据库
成为主KDC 的超级用户。
使用kdb_util 命令的load 命令恢复Kerberos 数据库。
# /usr/sbin/kdb5_util load [-verbose] [-d dbname] [-update] [filename]
-verbose 列显要恢复的每个主体和策略的名称。
dbname 定义要恢复的数据库的名称。请注意,可以指定文件的绝对路径。如果未指定
-d 选项,则缺省数据库名称为/var/krb5/principal。
-update 更新现有数据库。否则,会创建新数据库或覆写现有数据库。
filename 定义用于恢复数据库的文件。可以指定文件的绝对路径。
恢复Kerberos 数据库
在以下示例中,将从dumpfile 文件将名为database1 的数据库恢复到当前目录。由于未指
定-update 选项,恢复操作将创建一个新数据库。
# kdb5_util load -d database1 dumpfile
1
2
示例22–11
管理Kerberos 数据库
414 系统管理指南:安全性服务• 2006 年9 月
如何重新装入Kerberos 数据库
如果未在运行Solaris 10 发行版的服务器上创建KDC 数据库,则通过重新装入该数据库,可
以利用改进的数据库格式。
请确保数据库使用的是旧格式。请参见特定说明。
在主KDC 上,停止KDC 守护进程。
kdc1 # svcadm disable network/security/krb5kdc
kdc1 # svcadm disable network/security/kadmin
转储KDC 数据库。
kdc1 # kdb5_util dump /tmp/prdb.txt
保存当前数据库文件的副本。
kdc1 # cd /var/krb5
kdc1 # mkdir old
kdc1 # mv princ* old/
装入数据库。
kdc1 # kdb5_util load /tmp/prdb.txt
启动KDC 守护进程。
kdc1 # svcadm enable network/security/krb5kdc
kdc1 # svcadm enable network/security/kadmin
如何重新配置主KDC 以使用增量传播
此过程中的步骤可用于重新配置现有的主KDC,以使用增量传播。在此过程中,将使用以
下配置参数:
领域名称= EXAMPLE.COM
DNS 域名= example.com
主KDC = kdc1.example.com
从KDC = kdc2.example.com
admin 主体= kws/admin
开始之前
1
2
3
4
5
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 415
向kdc.conf 中添加项。
需要启用增量传播,并选择主KDC 将在日志中存储的更新数。有关更多信息,请参见
kdc.conf(4) 手册页。
kdc1 # cat /etc/krb5/kdc.conf
[kdcdefaults]
kdc_ports = 88,750
[realms]
EXAMPLE.COM= {
profile = /etc/krb5/krb5.conf
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
sunw_dbprop_master_ulogsize = 1000
}
创建kiprop 主体。
kiprop 主体用于验证主KDC 服务器和授权来自主KDC 的更新。
kdc1 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin: addprinc -randkey kiprop/kdc1.example.com
Principal "" created.
kadmin: addprinc -randkey kiprop/kdc2.example.com
1
2
管理Kerberos 数据库
416 系统管理指南:安全性服务• 2006 年9 月
Principal "" created.
kadmin:
将kiprop 主体添加到kadmind 密钥表文件中
通过将kiprop 主体添加到kadm5.keytab 文件中,kadmind 命令可以在启动时对其自身进行
验证。
kadmin: ktadd -k /etc/krb5/kadm5.keytab kiprop/kdc1.example.com
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
Entry for principal kiprop/kdc1.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/kadm5.keytab.
kadmin: quit
(可选的)在主KDC 上,将kiprop 项添加到kpropd.acl 中
通过此项,主KDC 可以接收对kdc2 服务器的增量传播请求。
kdc1 # cat /etc/krb5/kpropd.acl
*
p
注释掉root crontab 文件中的kprop 行。
此步骤禁止从KDC 传播其KDC 数据库副本。
kdc1 # crontab -e
#ident "@(#)root 1.20 01/11/06 SMI"
3
4
5
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 417
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#10 3 * * * /usr/lib/krb5kprop_script kdc2.example.sun.com #SUNWkr5ma
重新启动kadmind。
kdc1 # svcadm restart network/security/kadmin
重新配置所有使用增量传播的从KDC 服务器。
如何重新配置从KDC 以使用增量传播
向krb5.conf 中添加项。
这些新项启用增量传播并将轮询时间设置为2 分钟。
kdc2 # cat /etc/krb5/kdc.conf
[kdcdefaults]
kdc_ports = 88,750
[realms]
EXAMPLE.COM= {
6
7
1
管理Kerberos 数据库
418 系统管理指南:安全性服务• 2006 年9 月
profile = /etc/krb5/krb5.conf
database_name = /var/krb5/principal
admin_keytab = /etc/krb5/kadm5.keytab
acl_file = /etc/krb5/kadm5.acl
kadmind_port = 749
max_life = 8h 0m 0s
max_renewable_life = 7d 0h 0m 0s
sunw_dbprop_enable = true
sunw_dbprop_slave_poll = 2m
}
将kiprop 主体添加到krb5.keytab 文件中。
kdc2 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin: ktadd kiprop/kdc2.example.com
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal kiprop/kdc2.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin: quit
禁用kpropd。
kdc2 # svcadm disable network/security/krb5_prop
2
3
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 419
重新启动KDC 服务器。
kdc2 # svcadm restart network/security/krb5kdc
如何配置从KDC 以使用完全传播
此过程说明如何重新配置运行Solaris 10 发行版的从KDC 服务器,以使用完全传播。通常,
只有运行Solaris 9 发行版或更早发行版的主KDC 服务器才需要使用此过程。在这种情况
下,主KDC 服务器不支持增量传播,因此需要配置从KDC 以允许进行传播。
在此过程中,将配置名为kdc3 的从KDC。此过程使用以下配置参数:
领域名称= EXAMPLE.COM
DNS 域名= example.com
主KDC = kdc1.example.com
从KDC = kdc2.example.com 和kdc3.example.com
admin 主体= kws/admin
联机帮助URL=
注– 调整该URL以指向“SEAMAdministration Tool”部分,如第362 页中的“SEAM
Administration Tool 中的联机帮助URL”中所述。
必须配置主KDC。有关此从KDC 是否可交换的特定说明,请参见第405 页中的“交换主
KDC 和从KDC”。
在主KDC 上,成为超级用户。
在主KDC 上,启动kadmin。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
kdc1 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 在主KDC 上,将从主机主体添加到数据库中(如果尚未执行此操作)。
要使从KDC 正常工作,该从KDC 必须具有主机主体。请注意,主体实例为主机名时,
无论/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定FQDN。
kadmin: addprinc -randkey host/kdc3.example.com
Principal "" created.
4
开始之前
1
2
管理Kerberos 数据库
420 系统管理指南:安全性服务• 2006 年9 月
kadmin:
b. 退出kadmin。
kadmin: quit
在主KDC 上,编辑Kerberos 配置文件(krb5.conf)。
需要添加每个从KDC 的项。有关此文件的完整说明,请参见krb5.conf(4) 手册页。
kdc1 # cat /etc/krb5/krb5.conf
.
.
[realms]
EXAMPLE.COM = {
kdc = kdc1.example.com
kdc = kdc2.example.com
kdc = kdc3.example.com
admin_server = kdc1.example.com
}
在主KDC 上,将主KDC 和每个从KDC 的项添加到kpropd.acl 文件中。
有关此文件的完整说明,请参见kprop(1M) 手册页。
kdc1 # cat /etc/krb5/kpropd.acl
在所有从KDC 上,复制主KDC 服务器的KDC 管理文件。
由于主KDC 服务器已更新每台KDC 服务器所需的信息,因此需要在所有从KDC 上执行此
步骤。可以使用ftp 或类似的传送机制从主KDC 获取以下文件的副本:
/etc/krb5/krb5.conf
/etc/krb5/kdc.conf
/etc/krb5/kpropd.acl
3
4
5
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 421
在所有从KDC 上,请确保未填充Kerberos 访问控制列表文件kadm5.acl。
未修改的kadm5.acl 文件如下所示:
kdc2 # cat /etc/krb5/kadm5.acl
___ *
如果此文件中包含kiprop 项,请删除它们。
在新的从KDC 上,启动kadmin 命令。
必须使用在配置主KDC 时创建的一个admin 主体名称登录。
kdc2 # /usr/sbin/kadmin -p kws/admin
Enter password:
kadmin:
a. 使用kadmin 将从KDC 的host 主体添加到从KDC 的密钥表文件中。
此项可使kprop 和其他基于Kerberos 的应用程序正常工作。请注意,主体实例为主机名
时,无论/etc/resolv.conf 文件中的域名是大写还是小写,都必须以小写字母指定
FQDN。
kadmin: ktadd host/kdc3.example.com
Entry for principal host/kdc3.example.com with kvno 3, encryption type AES-128 CTS mode
with 96-bit SHA-1 HMAC added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc3.example.com with kvno 3, encryption type Triple DES cbc
mode with HMAC/sha1 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc3.example.com with kvno 3, encryption type ARCFOUR
with HMAC/md5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
Entry for principal host/kdc3.example.com with kvno 3, encryption type DES cbc mode
with RSA-MD5 added to keytab WRFILE:/etc/krb5/krb5.keytab.
kadmin:
b. 退出kadmin。
kadmin: quit
6
7
管理Kerberos 数据库
422 系统管理指南:安全性服务• 2006 年9 月
在主KDC 上,将从KDC 名称添加到cron 作业中,该作业通过运行crontab -e 自动运行备
份。
在kprop_script 行的结尾添加每个从KDC 服务器的名称。
10 3 * * * /usr/lib/krb5/kprop_script kdc2.example.com kdc3.example.com
您可能还希望更改备份的时间。此项将在每天上午的3:10 启动备份过程。
在新的从KDC 上,启动Kerberos 传播守护进程。
kdc3 # svcadm enable network/security/krb5_prop
在主KDC 上,使用kprop_script 备份并传播数据库。
如果已存在数据库的备份副本,则无需完成其他备份。有关进一步的说明,请参见第425
页中的“如何手动将Kerberos 数据库传播到从KDC”。
kdc1 # /usr/lib/krb5/kprop_script kdc3.example.com
Database propagation to kdc3.example.com: SUCCEEDED
在新的从KDC 上,使用kdb5_util 创建一个存储文件。
kdc3 # /usr/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 上,使用NTP 或其他时钟同步机制同步主KDC 时钟。
安装和使用网络时间协议(Network Time Protocol, NTP) 并非必需。但是,要成功验证,每个
时钟必须处于krb5.conf 文件的libdefaults 部分中定义的缺省时间内。有关NTP 的信息,
请参见第404 页中的“同步KDC 和Kerberos 客户机的时钟”。
在新的从KDC 上,启动KDC 守护进程(krb5kdc)。
kdc3 # svcadm enable network/security/krb5kdc
如何验证KDC 服务器是否已同步
如果配置了增量传播,则此过程可确保已更新从KDC 上的信息。
在KDC 主服务器上,运行kproplog 命令。
kdc1 # /usr/sbin/kproplog -h
8
9
10
11
12
13
1
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 423
在从KDC 服务器上,运行kproplog 命令。
kdc2 # /usr/sbin/kproplog -h
检查最后一个序列号和最后一个时间标记的值是否匹配。
验证KDC 服务器是否已同步
以下是在主KDC 服务器上运行kproplog 命令的结果样例。
kdc1 # /usr/sbin/kproplog -h
Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
Log version #: 1
Log state: Stable
Entry block size: 2048
Number of entries: 2500
First serial #: 137966
Last serial #: 140465
First time stamp: Fri Nov 28 00:59:27 2004
Last time stamp: Fri Nov 28 01:06:13 2004
以下是在从KDC 服务器上运行kproplog 命令的结果样例。
kdc2 # /usr/sbin/kproplog -h
Kerberos update log (/var/krb5/principal.ulog)
Update log dump:
Log version #: 1
Log state: Stable
2
3
示例22–12
管理Kerberos 数据库
424 系统管理指南:安全性服务• 2006 年9 月
Entry block size: 2048
Number of entries: 0
First serial #: None
Last serial #: 140465
First time stamp: None
Last time stamp: Fri Nov 28 01:06:13 2004
请注意,最后一个序列号和最后一个时间标记的值相同,这表示从KDC 服务器与主KDC
服务器同步。
请注意,在从KDC 服务器的输出中,从KDC 服务器的更新日志中不存在任何更新项。这
是因为与主KDC 服务器不同,从KDC 服务器不保留更新。此外,由于第一个序列号或第
一个时间标记不是相关信息,因此从KDC 服务器也不包括这些信息。
如何手动将Kerberos 数据库传播到从KDC
此过程说明如何使用kprop 命令传播Kerberos 数据库。如果需要在定期的cron 作业之外将
从KDC 与主KDC 同步,可使用此过程。与kprop_script 不同,可以使用kprop 仅传播当前
数据库备份,而无需先创建Kerberos 数据库的新备份。
注– 如果使用的是增量传播,则不要使用此过程。
成为主KDC 的超级用户。
(可选的)使用kdb5_util 命令备份数据库。
# /usr/sbin/kdb5_util dump /var/krb5/slave_datatrans
使用kprop 命令将数据库传播到从KDC。
# /usr/lib/krb5/kprop -f /var/krb5/slave_datatrans slave-KDC
使用kprop_script 手动将Kerberos 数据库传播到从KDC
如果要备份数据库,并在定期的cron 作业之外将数据库传播到从KDC,则还可以按如下所
示使用kprop_script 命令:
# /usr/lib/krb5/kprop_script slave-KDC
1
2
3
示例22–13
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 425
设置并行传播
在大多数情况下,会以独占的方式使用主KDC 将其Kerberos 数据库传播到从KDC。但是,
如果站点上有很多从KDC,则可以考虑共享装入传播进程,即所谓的并行传播。
注– 如果使用的是增量传播,则不要使用此过程。
通过并行传播,特定的从KDC 可以与主KDC 共享传播功能。通过共享此功能,可以更快
地完成传播并减轻主KDC 的工作。
例如,假设站点上有一个主KDC 和六个从KDC(如图22–2 中所示),其中,slave-1 到
slave-3 组成一个逻辑组,slave-4 到slave-6 组成另一个逻辑组。要设置并行传播,可以
使主KDC 将数据库传播到slave-1 和slave-4。而这些从KDC 又可将数据库传播到其组中
的从KDC。
图22–2并行传播配置示例
设置并行传播的配置步骤
以下不是详细的逐步过程,而是用于启用并行传播的配置步骤的高级列表。这些步骤包括
:
1. 在主KDC 上,更改其cron 作业的kprop_script 项,以仅包括将执行后续传播的从KDC
(传播从KDC)的参数。
2. 在每个传播从KDC 上,将kprop_script 项添加到其cron 作业中,其中必须包括要传播
的从KDC 的参数。要成功地以并行方式进行传播,应设置cron 作业,使其在将新
Kerberos 数据库传播到从KDC 本身之后再运行。
注– 对传播从KDC进行传播所需的时间取决于多种因素,例如网络带宽和Kerberos 数据
库的大小。
3. 在每个从KDC 上,设置相应的传播权限。通过将从KDC 传播的KDC 的主机主体名称添
加到其kpropd.acl 文件中,可完成此步骤。
管理Kerberos 数据库
426 系统管理指南:安全性服务• 2006 年9 月
示例22–14设置并行传播
以图22–2 为例,主KDC 的kprop_script 项与以下示例类似:
0 3 * * * /usr/lib/krb5/kprop_script slave-1.example.com slave-4.example.com
slave-1 的kprop_script 项与以下示例类似:
0 4 * * * /usr/lib/krb5/kprop_script slave-2.example.com slave-3.example.com
请注意,从KDC 上的传播在主KDC 将数据库传播到它一小时后开始。
传播从KDC 上的kpropd.acl 文件将包含以下项:
要由slave-1 传播的从KDC 上的kpropd.acl 文件将包含以下项:
管理存储文件
存储文件包含Kerberos 数据库的主密钥,该密钥在创建Kerberos 数据库时自动创建。如果
存储文件损坏,则可以使用kdb5_util 实用程序的stash 命令替换损坏的文件。仅在使用
kdb5_util 的destroy 命令删除Kerberos 数据库之后,才应删除存储文件。由于存储文件不
会随数据库一起自动删除,所以必须删除存储文件以完成清除。
如何删除存储文件
成为包含存储文件的KDC 的超级用户。
删除存储文件。
# rm stash-file
其中,stash-file 是存储文件的路径。缺省情况下,存储文件位于/var/krb5/.k5. realm 中。
注– 如果需要重新创建存储文件,则可以使用kdb5_util 命令的-f 选项。
1
2
管理Kerberos 数据库
第22 章• 配置Kerberos 服务(任务) 427
增强Kerberos 服务器的安全性
执行以下步骤以增强Kerberos 应用程序服务器和KDC 服务器的安全性。
如何仅启用基于Kerberos 的应用程序
此过程限制对正在运行telnet、ftp、rcp、rsh 和rlogin 的服务器的网络访问,以便仅执
行经过Kerberos 验证的事务。
更改telnet 服务的exec 属性。
将-a user 选项添加到telnet 的exec 属性,以将访问权限限制为可以提供有效验证信息的
那些用户。
# inetadm -m svc:/network/telnet:default exec="/usr/sbin/in.telnetd -a user"
(可选的)如果尚未配置,则更改telnet 服务的exec 属性。
将-a 选项添加到ftp 的exec 属性,以仅允许经过Kerberos 验证的连接。
# inetadm -m svc:/network/ftp:default exec="/usr/sbin/in.ftpd -a"
禁用其他服务。
应禁用in.rshd 和in.rlogind 守护进程。
# svcadm disable network/shell
# svcadm disable network/login:rlogin
如何限制对KDC 服务器的访问
主KDC 服务器和从KDC 服务器都包含存储在本地的KDC 数据库副本。限制对这些服务器
的访问(以便保证数据库安全)对于Kerberos 安装的整体安全非常重要。
根据需要,禁用远程服务。
要提供安全的KDC 服务器,应禁用所有不必要的网络服务。根据配置不同,可能已禁用其
中某些服务。使用svcs 命令检查服务状态。在大多数情况下,只需运行time 和
krdb5_kprop 服务。此外,使用回送TLI(ticlts、ticotsord 和ticots)的任何服务可以保
持启用状态。
# svcadm disable network/comsat
# svcadm disable network/dtspc/tcp
# svcadm disable network/finger
# svcadm disable network/login:rlogin
1
2
3
1
增强Kerberos 服务器的安全性
428 系统管理指南:安全性服务• 2006 年9 月
# svcadm disable network/rexec
# svcadm disable network/shell
# svcadm disable network/talk
# svcadm disable network/tname
# svcadm disable network/uucp
# svcadm disable network/rpc_100068_2-5/rpc_udp
限制对支持KDC 的硬件的访问。
要限制物理访问,请确保KDC 服务器及其监视器位于安全的设备中。用户应不能以任何方
式访问此服务器。
在本地磁盘或从KDC 上存储KDC 数据库备份。
仅在可以安全存储磁带时创建KDC 的磁带备份。该做法同样适用于创建密钥表文件的副
本。最好在未与其他系统共享的本地文件系统上存储这些文件。存储文件系统可以位于主
KDC 服务器或任何从KDC 上。
2
3
增强Kerberos 服务器的安全性
第22 章• 配置Kerberos 服务(任务) 429
430
Kerberos 错误消息和疑难解答
本章将分析使用Kerberos 服务时可能收到的错误消息,另外还针对各种问题提供一些疑难
解答提示。以下是本章中错误消息和疑难解答信息的列表。
第431 页中的“SEAMAdministration Tool 错误消息”
第432 页中的“常见的Kerberos 错误消息(A-M)”
第438 页中的“常见的Kerberos 错误消息(N-Z)”
第441 页中的“krb5.conf 文件的格式存在问题”
第442 页中的“传播Kerberos 数据库时出现问题”
第442 页中的“挂载基于Kerberos 的NFS 文件系统时出现问题”
第443 页中的“以root 身份进行验证时出现问题”
第443 页中的“观察从GSS 凭证到UNIX 凭证的映射”
Kerberos 错误消息
本节介绍有关Kerberos 错误消息的信息,包括每个错误出现的原因以及解决此错误的方
法。
SEAMAdministration Tool 错误消息
Unable to view the list of principals or policies; use the Name field.
原因: 登录时使用的admin 主体在KerberosACL文件(kadm5.acl) 中没有列出权限(l)。因
此,无法查看主体列表或策略列表。
解决方法: 必须在"Name" 字段中键入主体名称和策略名称才能对其进行处理,或者需要
使用具有相应权限的主体登录。
23 第2 3 章
431
JNI: Java array creation failed
JNI: Java class lookup failed
JNI: Java field lookup failed
JNI: Java method lookup failed
JNI: Java object lookup failed
JNI: Java object field lookup failed
JNI: Java string access failed
JNI: Java string creation failed
原因: SEAMAdministration Tool (gkadmin) 使用的Java 本机接口存在严重问题。
解决方法: 退出gkadmin 然后重新启动。如果问题仍然存在,请报告错误。
常见的Kerberos 错误消息(A-M)
本节按字母顺序(A-M) 列出了Kerberos 命令、Kerberos 守护进程、PAM框架、GSS 接口、
NFS 服务和Kerberos 库的常见错误消息。
All authentication systems disabled; connection refused
原因: 此版本的rlogind 不支持任何验证机制。
解决方法: 请确保调用的rlogind 带有-k 选项。
Another authentication mechanism must be used to access this host
原因: 无法进行验证。
解决方法: 请确保客户机使用Kerberos V5 机制进行验证。
Authentication negotiation has failed, which is required for encryption. Good bye.
原因: 无法与服务器协商验证。
解决方法: 请通过使用toggle authdebug 命令调用telnet 命令,启动验证调试并查看调试
消息以获取更多线索。另外,请确保具有有效凭证。
Bad krb5 admin server hostname while initializing kadmin interface
原因: 在krb5.conf 文件中为admin_server 配置了无效的主机名。
解决方法: 请确保在krb5.conf 文件的admin_server 行中为主KDC 指定了正确的主机名。
Bad lifetime value
原因: 提供的生命周期值无效或格式不正确。
解决方法: 请确保提供的值与kinit(1) 手册页中的“时间格式”一节相符。
Kerberos 错误消息
432 系统管理指南:安全性服务• 2006 年9 月
Bad start time value
原因: 提供的开始时间值无效或格式不正确。
解决方法: 请确保提供的值与kinit(1) 手册页中的“时间格式”一节相符。
Cannot contact any KDC for requested realm
原因: 请求的领域中没有KDC响应。
解决方法: 请确保至少可访问一个KDC(主KDC 或从KDC),或krb5kdc 守护进程正在
KDC 上运行。有关已配置KDC 的列表(kdc = kdc-name),请检查/etc/krb5/krb5.conf
文件。
Cannot determine realm for host
原因: Kerberos 无法确定主机的领域名称。
解决方法: 请确保存在缺省领域名称,或在Kerberos 配置文件(krb5.conf) 中设置了域名映
射。
Cannot find KDC for requested realm
原因: 在请求的领域中找不到KDC。
解决方法: 请确保Kerberos 配置文件(krb5.conf) 在realm 部分中指定了KDC。
cannot initialize realm realm_name
原因:KDC可能没有存储文件。
解决方法: 请确保KDC具有存储文件。否则,请使用kdb5_util 命令创建一个存储文件,
然后尝试重新启动krb5kdc 命令。
Cannot resolve KDC for requested realm
原因: Kerberos 无法确定该领域的任何KDC。
解决方法: 请确保Kerberos 配置文件(krb5.conf) 在realm 部分中指定了KDC。
Cannot reuse password
原因: 指定的口令之前已被此主体使用。
解决方法: 请选择一个以前尚未选用的口令,至少不要是KDC数据库中为每个主体保存
的那些口令。此策略由该主体的策略强制执行。
Can’t get forwarded credentials
原因: 无法建立凭证转发。
解决方法: 请确保主体具有可转发的凭证。
Can’t open/find Kerberos configuration file
原因: Kerberos 配置文件(krb5.conf) 不可用。
Kerberos 错误消息
阅读(878) | 评论(0) | 转发(0) |