针对多个 Kerberos 领域配置 AIX 客户机

典型的客户环境通常由不同部分组成,包含 AIX®、Windows® 和 Linux®,这些系统可以是服务器或客户机。在许多情况下,为了处理请求的服务,AIX Kerberos 客户机需要与驻留在 Windows 或 AIX Kerberos 服务器上的多个 Kerberos 领域交互。本文详细解释让 AIX Kerberos 客户机与驻留在 Windows Kerberos 服务器上的多个领域交互所需的配置。

Shruthi Sharma, 软件工程师, IBM  

/developerworks/i/p-ssharma.jpgShruthi Sharma 是 AIX 安全性开发支持专家。她在 AIX 安全组件和 AIX 系统管理方面有三年经验,具备丰富的知识。她还具备与客户协作和处理紧急情况的经验。



Uma Chandolu, 软件工程师, IBM

http://www.ibm.com/developerworks/i/p-uchandolu.jpgUma M. Chandolu 是一名 AIX 上的开发支持专家,拥有 6 年多在 AIX 环境中工作的大量实践经验,擅长 AIX 系统管理和其他子系统。他拥有与客户合作和处理客户关键型情景的经验。他曾是 “IBM developerWorks 投稿作者”。


developerWorks 投稿作者

2009 年 11 月 26 日

概述

Kerberos 是一种基于对称密钥技术的网络身份验证协议。它采用基于客户机-服务器的模型,提供相互身份验证。它需要可信的称为 Key Distribution Center (KDC) 的第三方,KDC 由 Authentication Server (AS) 和 Ticket Granting Server (TGS) 组成。Kerberos “领域(realm)” 由在 Kerberos 服务器中注册的 Kerberos 主体和服务组成。

Windows Active Directory (AD) 和 LDAP 也提供 Kerberos 服务。Windows AD 支持多个域,每个域可以包含一个 Kerberos 领域。可以根据业务部门、地理位置和其他变量划分多个域。

多个领域的概况

多个领域的优点

建立多个领域有以下优点:

  • 数据跨不同的领域分布,而不是集中于单一数据库,这样就没有单一故障点。
  • 与单一大型领域相比,管理多个小型独立的 Kerberos 领域更容易。
  • 可以在 MIT 和 Windows 等不同的 KDC 之间互操作,这样更容易在现有环境中集成新的 Kerberos 领域。
  • 为未来增加功能或开发提供灵活性。
  • 用户可以根据领域之间的信任关系访问另一个领域中的服务。
  • 来自某个 AD 森林中不同 Kerberos 领域的用户可以登录同一个 AIX Kerberos 客户机。

目标、假设和环境

本文的目标是把 AIX 配置为 Kerberos 客户机,让它能够访问驻留在 Windows AD 服务器上的多个 Kerberos 领域。本文假设读者具备中高级的 Kerberos 协议和 Windows Active Directory 知识。

本文中描述的步骤已经经过测试,在测试环境中 Microsoft Windows 2003 AD 服务器作为 Kerberos 服务器,IBM NAS 1.4.0.7 作为 Kerberos 客户机。对于 IBM NAS 的其他版本,这些步骤应该是有效的。

配置步骤

设置 Microsoft Windows Active Directory

关于在 Microsoft Windows Server 2003 上设置 Microsoft Active Directory 的信息,请参见相关的 Microsoft Windows 文档。在这里,我们配置了一个 Active Directory 森林,它包含父域和子域(见上图)。Active Directory 域也称为在 Microsoft Active Directory 上运行的 Microsoft Kerberos 领域。

  • 父域 - IBM.COM,Windows AD 服务器:ibmad1.ibm.com
  • 子域 - SEC.IBM.COM,Windows AD 服务器:ibmad2.sec.ibm.com
  • AIX Kerberos 客户机 - indus28.in.ibm.com

配置 AIX Kerberos 客户机

  1. 一定要用 FQDN(完全限定域名)配置 AIX 客户机。

    例如,主机名应该是 “indus28.in.ibm.com”。

  2. 首先,针对 Windows AD 服务器上的子域配置 AIX Kerberos 客户机。

    使用 config.krb5 命令在 AIX 上设置 Kerberos 客户机。

    语法
    config.krb5 -C -d (domain name ) -r (realm name) -c (windows server) 
               -s (windows server)
    Ex:config.krb5 -C -d in.ibm.com -r SEC.IBM.COM -c ibmad2.sec.ibm.com -s 
    ibmad2.sec.ibm.com
  3. 修改 /etc/krb5/krb5.conf 文件,在其中包含父域 “IBM.COM” 的详细信息和 Windows 支持的加密类型。
    [libdefaults]
           default_realm = SEC.IBM.COM
           default_keytab_name = FILE:/etc/krb5/krb5.keytab
           default_tkt_enctypes = des-cbc-md5 des-cbc-crc
           default_tgs_enctypes = des-cbc-md5 des-cbc-crc
    
    [realms]
           SEC.IBM.COM = {
                   kdc = ibmad2.sec.ibm.com:88
                   admin_server = ibmad2.sec.ibm.com:749
                   default_domain = in.ibm.com
           }
           IBM.COM = {
                   kdc = ibmad1.ibm.com:88
                   admin_server = ibmad1.ibm.com:749
                   default_domain = in.ibm.com
           }  
    
    [domain_realm]
           .in.ibm.com = SEC.IBM.COM
           ibmad2.sec.ibm.com = SEC.IBM.COM
           ibmad1.ibm.com = SEC.IBM.COM
    
    [logging]
           kdc = FILE:/var/krb5/log/krb5kdc.log
           admin_server = FILE:/var/krb5/log/kadmin.log
           default = FILE:/var/krb5/log/krb5lib.log
  4. 在 /usr/lib/security/methods.cfg 文件中添加下面的 KRB5A 小节:
    KRB5A:
            program = /usr/lib/security/KRB5A 
            options = authonly 
    
    KRB5Afiles:  
             options = db=BUILTIN,auth=KRB5A 
    
    Note: For AIX 6.1 TL02 onwards add the Kerberos stanza as below:
    
    KRB5: 
            program = /usr/lib/security/KRB5 
            options = authonly,is_kadmind_compat=no  
    
    KRB5files: 
            options = db=BUILTIN,auth=KRB5
  5. 在子域 “SEC.IBM.COM” 上,使用 Active Directory 用户和计算机管理单元(snap in)为 AIX 机器创建一个用户。

    例如,在这里,在 AD 上创建用户 indus28,因为将在 indus28.in.ibm.com 上配置 Kerberos 客户机。在创建用户时,要求输入密码等信息。为这个用户名提供有效的密码。

    在 Active Directory 服务器上,执行以下步骤:

    使用 Active Directory Management 工具创建一个与 AIX Kerberos 客户机机器 indus28.in.ibm.com 对应的新用户。

    • 选择 Users 文件夹。
    • 右键单击并选择 New
    • 选择 user。
    • 输入用户名 indus28
    选择用户定义密码输入密码之后
  6. 在 Windows 机器上使用 ktpass 工具生成 keytab 文件。
    ktpass -princ host/indus28.in.ibm.com@SEC.IBM.COM -mapuser indus28 -pass 123 
    -out indus28.keytab -ptype KRB5_NT_PRINCIPAL
    
    Ktpass:
    
    -princ user@realm , The user will be the aix client box, so in our case it will be 
    indus28. in.ibm.com, this has to be full domain name
    -mapuser : The user name will be indus28
    -pass provide the password or * if you want it to prompt for password
    -out , the name of output keytab file.
    ktpass 命令

    把 indus28.keytab 文件安全地传输到 AIX Kerberos 客户机 indus28.in.ibm.com。

  7. 同样,在父域 IBM.COM(机器:ibmad1.ibm.com)上创建用户 “indus28_ibm”。
  8. 在 IBM.COM 域中运行 ktpass 命令:
    ktpass.exe -princ host/indus28.in.ibm.com@IBM.COM -mapuser indus28_ibm -pass 123 
    -out indus28_ibm.keytab -ptype KRB5_NT_PRINCIPAL
    
    Note: The map user is indus28_ibm and the keytab is indus28_ibm.keytab and the princ 
    name is again host/indus28.in.ibm,com
    ktpass 命令

    把 indus28_ibm.keytab 文件安全地传输到 AIX Kerberos 客户机。

  9. 在 AIX Kerberos 客户机上,使用 ktutil 命令读取从 Windows 服务器复制的 keytab 文件,把它写到默认的 keytab 文件 /etc/krb5/krb5.keytab 中。
    #/usr/krb/sbin/ktutil
    ktutil:  rkt /usr/krb/sbin/indus28.keytab
    ktutil:  wkt /etc/krb5/krb5.keytab
    ktutil:  q
    
    # /usr/krb5/bin/klist -ke
    Keytab name:  FILE:/etc/krb5/krb5.keytab
    KVNO Principal
    ---- ---------
     18 host/indus28.in.ibm.com@SEC.IBM.COM (ArcFour with HMAC/md5)
    
    #/usr/krb5/sbin/ktutil
    ktutil:  rkt /usr/krb/sbin/indus28_ibm.keytab
    ktutil:  wkt /etc/krb5/krb5.keytab
    ktutil:  q
    
     #/usr/krb5/bin/klist -ke
    Keytab name:  FILE:/etc/krb5/krb5.keytab
    KVNO Principal
    ---- ---------
     18 host/indus28.in.ibm.com@SEC.IBM.COM (ArcFour with HMAC/md5)
      4 host/indus28.in.ibm.com@IBM.COM (ArcFour with HMAC/md5)
  10. 在 IBM.COM 域上创建用户 foo,在 SEC.IBM.COM 域上创建 foo1。还要在 AIX Kerberos 客户机本地创建它们。
    #mkuser -R KRB5Afiles registry= KRB5Afiles SYSTEM= KRB5Afiles foo
    #mkuser -R KRB5Afiles registry= KRB5Afiles SYSTEM= KRB5Afiles foo1

    确保 lsuser 命令会列出所有相关用户属性。
  11. 对这两个用户运行 kinit,确保能够使用 Kerberos 对他们执行身份验证并可以从他们所属的 Kerberos 领域取得票据。
    # /usr/krb5/bin/kinit foo1
    Password for foo1@SEC.IBM.COM:
    # /usr/krb5/bin/klist
    Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
    Default principal:  foo1@SEC.IBM.COM
    
    Valid starting     Expires            Service principal
    02/27/08 15:29:37  02/28/08 01:29:40  krbtgt/SEC.IBM.COM@SEC.IBM.COM
           Renew until 02/28/08 15:29:37
    # /usr/krb5/bin/kinit foo@IBM.COM
    Password for foo@IBM.COM:
    # /usr/krb5/bin/klist
    Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
    Default principal:  foo@IBM.COM
    
    Valid starting     Expires            Service principal
    02/27/08 15:29:49  02/28/08 01:29:49  krbtgt/IBM.COM@IBM.COM
           Renew until 02/28/08 15:29:49
  12. 作为这两个用户从 AIX Kerberos 客户机登录。

参考资料

学习

获得产品和技术

  • 下载 IBM 产品评估版,试用这些来自 DB2®、Lotus®、Rational®、Tivoli® 和 WebSphere® 的应用程序开发工具和中间件产品。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=AIX and UNIX
ArticleID=449780
ArticleTitle=针对多个 Kerberos 领域配置 AIX 客户机
publish-date=11262009