在Kerberos生产环境中,最佳实践是使用LDAP(轻型目录访问协议)目录存储Kerberos主体和策略信息。 这使Kerberos管理员可以集中管理和监视Kerberos数据。
在Kerberos设置中,建议始终与主KDC(密钥分发中心)一起使用多个从KDC,以支持主KDC提供全天候可用性以及对身份验证服务的持续支持。其他kerberized服务(例如,AIX®NFS v4,SSH,telnet等)。
使用LDAP目录时,通常有一个主LDAP服务器和几个其他LDAP复制服务器,以实现目录数据的负载平衡和高可用性。
典型的Kerberos生产环境通常同时具有以上两种配置,这意味着它可能具有Kerberos主从KDC设置以及LDAP主副本设置。 并且需要专业的Kerberos管理员来设置这种类型的配置。 本文介绍如何配置这样的环境。
设置示例
本文将为Kerberos使用IBM®网络认证服务(IBM NAS),为AIX平台上的LDAP目录服务器使用IBMTivoli®Directory Server 6.1(ITDS)。
LDAP主服务器和副本服务器的配置不在本文讨论范围之内。 请参阅您的LDAP文档以获取该特定信息。 本文引用了以下LDAP设置:
图1. LDAP主副本拓扑的示例设置
以下信息与Kerberos设置有关。
Kerberos管理员名称:
管理员/管理员
Kerberos领域名称:
测试
IBM NAS 1.4.0.7主KDC:
主机名:master.in.ibm.com端口:88
IBM NAS 1.4.0.7管理服务器:
主机名:master.in.ibm.com端口:749
IBM NAS 1.4.0.7从属KDC:
主机名:slave.in.ibm.com端口:88
已将IBM NAS 1.4.0.7客户端配置为主KDC:
主机名:client.in.ibm.com
IBM Tivoli Directory Server v6.1(LDAP主服务器):
主机名:lmaster1.in.ibm.com端口:389
主机名:lmaster2.in.ibm.com端口:389
IBM Tivoli Directory Server v6.1(LDAP副本服务器):
主机名:replica1.in.ibm.com端口:389
主机名:replica2.in.ibm.com端口:389
主机名:replica3.in.ibm.com端口:389
所有这些机器都使用IBM NAS版本1.4.0.7。 您可以从AIX扩展包CD或IBM AIX Web下载包程序中获得它。 (请参阅参考资料 )。
图2显示了将在本文结尾处实现的Kerberos设置。
图2. Kerberos主从KDC配置的示例设置
配置步骤
本节介绍管理员设置上述Kerberos配置所需执行的必要步骤。
由于主KDC和管理服务器需要主体数据库的读写副本才能进行所需的更改,因此您将使用LDAP主服务器配置主KDC。 如果一台LDAP主服务器关闭,则需要有一个备用LDAP主服务器(具有主体数据库的最新更新副本),它将立即收费。 因此,您将使用两台具有对等复制配置的LDAP主服务器,这样对一台主服务器所做的更改将立即反映到另一台主服务器上。
另一方面,从属KDC可以使用Kerberos主体数据库的读写副本和只读副本。 由于从属KDC用于在紧急情况下备份主KDC,因此从属KDC可能需要使用读写副本。 因此,您将主要使用主LDAP服务器和LDAP副本作为备用机制来配置从属KDC。 因此,即使两个LDAP主服务器都关闭,从属KDC也应使用LDAP副本继续其服务。
为Kerberos准备LDAP服务器
为了利用任何LDAP服务器存储Kerberos数据,在LDAP服务器上需要进行的准备工作很少。
- 添加适当的后缀 。 在LDAP目录中,后缀是LDAP目录层次结构中的顶级条目,所有与逻辑相关的信息都存储在该条目下。 因此,即使对于Kerberos信息,也将使用后缀。 例如,“ ou = india,o = ibm,c = in”是本文中使用的后缀。 LDAP服务器可以有多个后缀,每个后缀表示一个特定的目录层次结构。
- 加载Kerberos模式 。 为了将Kerberos数据存储在任何LDAP服务器(主服务器或副本服务器)中,应首先在LDAP目录中加载足够的Kerberos模式定义。 只有这样做之后,LDAP服务器才能理解并正确存储Kerberos数据。 IBM NAS 1.4将Kerberos模式定义作为LDIF(LDAP数据交换格式)文件提供。 这些文件是:
/usr/krb5/ldif/IBM.KRB.schema.ldif
用于IBM Directory Server 5.1和5.2/usr/krb5/ldif/NS5.KRB.schema.ldif
用于SunONE Directory Server 5.1和5.2您可以使用ldapadd或ldapmodify命令将模式定义加载到LDAP服务器中。 请查阅LDAP文档以获取更多选项以及这些命令的详细说明。
- 正在加载领域条目 。 IBM NAS主体数据库由领域条目表示。 该领域条目用作存储Kerberos主体和策略信息的基础。 该领域条目由领域名称和后缀组成。 在示例设置中,您将添加领域条目
krbrealmName-V2=TEST,ou=india,o=ibm,c=in
。 IBM NAS提供了模板领域条目LDIF文件,可以对其进行编辑以反映实际领域信息。 该文件的名称为/usr/krb5/ldif/realm_add.ldif
。
由于本文着重介绍Kerberos配置,因此假设示例设置中已显示LDAP设置已存在。 现在,本文将重点介绍Kerberos配置步骤。
整个Kerberos配置过程可以从逻辑上分为以下主要步骤:
使用LDAP主服务器配置主KDC
如前所述,您将使用两个LDAP主服务器和不使用LDAP副本服务器配置主KDC。
- 要配置主KDC,可以使用IBM NAS命令
/usr/krb5/sbin/config.krb5
或AIX命令包装程序mkkrb5srv
。 使用mkkrb5srv
命令将主KDC与主LDAP服务器一起配置。 在主KDC机器上,运行mkkrb5ksrv
,如下所示:bash-2.05b# mkkrb5srv -r TEST -d in.ibm.com -a admin/admin -l lmaster1.in.ibm.com -u cn=admin -p adminpwd Fileset Level State Description ---------------------------------------------------------------------------- Path: /usr/lib/objrepos krb5.server.rte 1.4.0.7 COMMITTED Network Authentication Service Server Path: /etc/objrepos krb5.server.rte 1.4.0.7 COMMITTED Network Authentication Service Server The -s option is not supported. The administration server will be the local host. Initializing configuration... Creating /etc/krb5/krb5_cfg_type... Creating /etc/krb5/krb5.conf... Creating /var/krb5/krb5kdc/kdc.conf... Creating database files... Initializing database 'LDAP' for realm 'TEST' master key name 'K/M@TEST' Attempting to bind to one or more LDAP servers. This may take a while... You are prompted for the database Master Password. It is important that you DO NOT FORGET this password. Enter database Master Password: Re-enter database Master Password to verify: Attempting to bind to one or more LDAP servers. This may take a while... WARNING: no policy specified for admin/admin@TEST; defaulting to no policy. Note that policy may be overridden by ACL restrictions. Enter password for principal "admin/admin@TEST": Re-enter password for principal "admin/admin@TEST": Principal "admin/admin@TEST" created. Creating keytable... Attempting to bind to one or more LDAP servers. This may take a while... Creating /var/krb5/krb5kdc/kadm5.acl... Starting krb5kdc... Attempting to bind to one or more LDAP servers. This may take a while... krb5kdc was started successfully. Starting kadmind... Attempting to bind to one or more LDAP servers. This may take a while... kadmind was started successfully. The command completed successfully. Restarting kadmind and krb5kdc Attempting to bind to one or more LDAP servers. This may take a while... Attempting to bind to one or more LDAP servers. This may take a while... bash-2.05b#
现在,主KDC已启动并正在运行,但是仅将此主KDC连接到一个LDAP主服务器。 为了使用另一个LDAP主服务器进行配置,您需要手动编辑KDC LDAP配置文件
/var/krb5/krb5kdc/.kdc_ldap_data
。 - 要添加另一个LDAP主服务器,请编辑
/var/krb5/krb5kdc/.kdc_ldap_data
文件,如下所示(突出显示的文本现在已添加)。bash-2.05b# cat /var/krb5/krb5kdc/.kdc_ldap_data [ldapdefaults] realm = TEST bind_dn = cn=admin bind_dn_pw = adminpwd ldapserver = lmaster1.in.ibm.com ldapserver = lmaster2.in.ibm.com bind_type = simple #LDAP_OPT_REFERRALS = 1 #LDAP_OPT_DEBUG = 0 #LDAP_OPT_DEREF = 0 #LDAP_OPT_TIMELIMIT = 300 #LDAP_OPT_SIZELIMIT = 0 #LDAP_OPT_SSL_TIMEOUT = 43200 #LDAP_OPT_REFHOPLIMIT = 10 [servers] lmaster1.in.ibm.com = { port = 389 replica_type = readwrite preference = 9 } lmaster2.in.ibm.com = { port = 389 replica_type = readwrite preference = 4 } bash-2.05b#
上面框中的
preference
关系显示了连接到任何LDAP服务器时的优先级编号。 值越高,优先级越高。 如果两个服务器的首选项值相同,那么将使用负载平衡来确定从哪个服务器读取和搜索。 - 完成文件编辑后,必须重新启动两个Kerberos守护程序:
bash-2.05b# /usr/krb5/sbin/stop.krb5; /usr/krb5/sbin/start.krb5 Stopping /usr/krb5/sbin/krb5kdc... /usr/krb5/sbin/krb5kdc was stopped successfully. Stopping /usr/krb5/sbin/kadmind... /usr/krb5/sbin/kadmind was stopped successfully. The command completed successfully. Starting krb5kdc... krb5kdc was started successfully. Starting kadmind... kadmind was started successfully. The command completed successfully. bash-2.05b#
- 现在,主KDC已配置了两个LDAP主服务器。 要测试此配置,请停止一台主LDAP服务器,然后尝试执行一些Kerberos请求(例如kinit,klist或kadmin)。 在这种情况下,主KDC永远不会惊慌,从最终用户的角度来看,从一台LDAP服务器到另一台LDAP服务器的传输应该是无缝的。
使用LDAP主服务器和副本服务器配置从属KDC
现在,使用两个LDAP主服务器和三个LDAP副本服务器配置从属KDC。
- 使用
/usr/krb5/sbin/config.krb5
命令来配置从属KDC。bash-2.05b# /usr/krb5/sbin/config.krb5 -E -d in.ibm.com -r TEST -s master.in.ibm.com -l lmaster1.in.ibm.com -u admin -p admin_pswd -R replica1.in.ibm.com replica2.in.ibm.com replica3.in.ibm.com Initializing configuration... Creating /etc/krb5/krb5_cfg_type... Creating /etc/krb5/krb5.conf... Creating /var/krb5/krb5kdc/kdc.conf... Password for admin/admin@TEST: Starting krb5kdc... Attempting to bind to one or more LDAP servers. This may take a while... krb5kdc was started successfully. The command completed successfully. bash-2.05b#
该命令中需要注意的几件事是:
- 在从属计算机上将仅运行krb5kdc守护程序,因为从属KDC从未运行管理服务器(kadmind)。
- 没有数据库传播。 由于您将Kerberos数据存储在LDAP目录中,因此无需将数据从主KDC传播到从KDC。
- 请注意,现在,从属KDC已配置为一台LDAP主服务器和三个具有默认首选项值的副本。 您需要手动添加另一个LDAP主服务器。 为此,请编辑
/var/krb5/krb5kdc/.kdc_ldap_data
文件,并在下面插入突出显示的条目。bash-2.05b# cat /var/krb5/krb5kdc/.kdc_ldap_data [ldapdefaults] realm = TEST bind_dn = cn=admin bind_dn_pw = adminpwd ldapserver = replica1.in.ibm.com ldapserver = replica2.in.ibm.com ldapserver = replica2.in.ibm.com ldapserver = lmaster1.in.ibm.com ldapserver = lmaster2.in.ibm.com bind_type = simple #LDAP_OPT_REFERRALS = 1 #LDAP_OPT_DEBUG = 0 #LDAP_OPT_DEREF = 0 #LDAP_OPT_TIMELIMIT = 300 #LDAP_OPT_SIZELIMIT = 0 #LDAP_OPT_SSL_TIMEOUT = 43200 #LDAP_OPT_REFHOPLIMIT = 10 [servers] replica1.in.ibm.com = { port = 389 replica_type = readonly preference = 5 } replica2.in.ibm.com = { port = 389 replica_type = readonly preference = 5 } replica3.in.ibm.com = { port = 389 replica_type = readonly preference = 5 } lmaster1.in.ibm.com = { port = 389 replica_type = readwrite preference = 4 } lmaster2.in.ibm.com = { port = 389 replica_type = readwrite preference = 4 } bash-2.05b#
- 通过使用stop.krb5和start.krb5重新启动Kerberos守护进程:
bash-2.05b# /usr/krb5/sbin/stop.krb5 krb5kdc; /usr/krb5/sbin/start.krb5 krb5kdc Stopping /usr/krb5/sbin/krb5kdc... /usr/krb5/sbin/krb5kdc was stopped successfully. The command completed successfully. Starting krb5kdc... krb5kdc was started successfully. The command completed successfully. bash-2.05b#
- 从属KDC均已设置为辅助主KDC处理客户端请求。 通过为该从属KDC配置客户端并运行IBM NAS命令(如kinit,klist和kadmin)来检查配置。
配置并使用IBM NAS客户端来测试设置
现在,您将为上述已成功配置的主从KDC设置设置Kerberos客户端。 要配置客户机,可以使用config.krb5
(IBM NAS命令)或mkkrb5clnt
(AIX包装器)。 通过使用mkkrb5clnt
,您还可以在一个命令中为AIX计算机和IBM NAS客户端配置集成的Kerberized登录。 但是,执行mkkrb5clnt
需要对一些事情有更多的了解。 现在,使用config.krb5
将一个简单的IBM NAS客户端配置为上述主从KDC的配置。
- 如下所示运行
/usr/krb5/sbin/config.krb5
来配置客户端:bash-2.05b# /usr/krb5/sbin/config.krb5 -c -d in.ibm.com -r TEST -c master.in.ibm.com -s master.in.ibm.com Initializing configuration... Creating /etc/krb5/krb5_cfg_type... Creating /etc/krb5/krb5.conf... The command completed successfully. bash-2.05b#
- 在/etc/krb5/krb5.conf文件中仅列出了一个KDC(master.in.ibm.com)。 编辑此文件,并为从属KDC(slave.in.ibm.com)创建另一个KDC条目,如下所示:
-bash-2.05b# cat /etc/krb5/krb5.conf [libdefaults] default_realm = TEST default_keytab_name = FILE:/etc/krb5/krb5.keytab default_tkt_enctypes = des3-cbc-sha1 arcfour-hmac aes256-cts des-cbc-md5 des-cbc-crc default_tgs_enctypes = des3-cbc-sha1 arcfour-hmac aes256-cts des-cbc-md5 des-cbc-crc [realms] TEST = { kdc = master.in.ibm.com:88 kdc = slave.in.ibm.com:88 admin_server = master.in.ibm.com:749 default_domain = in.ibm.com } [domain_realm] .in.ibm.com = TEST master.in.ibm.com = TEST slave.in.ibm.com = TEST [logging] kdc = FILE:/var/krb5/log/krb5kdc.log admin_server = FILE:/var/krb5/log/kadmin.log default = FILE:/var/krb5/log/krb5lib.log -bash-2.05b#
- 现在您已经准备好测试配置。 使用
/usr/krb5/bin/kinit
和/usr/krb5/bin/klist
命令测试客户端是否可以联系KDC。bash-2.05b# /usr/krb5/bin/kinit admin/admin Password for admin/admin@TEST: bash-2.05b# /usr/krb5/bin/klist Ticket cache: FILE:/var/krb5/security/creds/krb5cc_0 Default principal: admin/admin@TEST Valid starting Expires Service principal 05/09/08 07:08:53 05/10/08 07:08:51 krbtgt/TEST@TEST bash-2.05b#
- 您还可以通过运行
/usr/krb5/sbin/kadmin
命令来测试与kadmind的连接。bash-2.05b# /usr/krb5/sbin/kadmin -p admin/admin Authenticating as principal admin/admin with password. Password for admin/admin@TEST: kadmin: getprincs K/M@TEST admin/admin@TEST kadmin/admin@TEST kadmin/changepw@TEST kadmin/history@TEST krbtgt/TEST@TEST kadmin: q bash-2.05b#
要测试故障安全机制,您可以尝试关闭从属/主KDC或LDAP服务器。 如果任何服务器发生故障,以上配置的客户端可以遵循以下故障转移路径:
图3. IBM NAS客户端可能的故障转移路径
最后,您能够使用LDAP主副本拓扑成功配置IBM NAS主从KDC。
结论
本文介绍了使用LDAP主副本安装程序配置Kerberos主从KDC二重奏的过程。 尽管这不是一件容易的事,但本文提供了分步指南以及适当的示例,以确保一切顺利进行。
翻译自: https://www.ibm.com/developerworks/aix/library/au-ldap_master_replica/index.html