在 AIX 上配置使用 LDAP 后端服务器的 IBM Network Authentication Service 主 KDC

在 AIX 上使用 LDAP 目录作为存储 Kerberos 数据的数据库

学习如何通过配置 IBM® Network Authentication Service (IBM Kerberos) 来使用 LDAP (Lightweight Directory Access Protocol) 目录存储 Kerberos 主体和策略信息。本文指导 Kerberos 管理员在 AIX® 上使用 Kerberos 和 LDAP 实现安全性、可伸缩性和高可用性。

Vipin Rathor, 系统软件工程师, IBM

http://www.ibm.com/developerworks/i/p-vrathor.jpgVipin Rathor 已经在 IBM India Software Lab 工作了两年,目前主要从事 IBM Network Authentication Service (IBM Kerberos) 的支持和开发活动。他的研究领域主要包括 Kerberos 和 LDAP 集成、网络安全、身份验证协议和 PKI。


developerWorks 投稿作者

2009 年 4 月 29 日

简介

在 Kerberos 环境中,Key Distribution Center (KDC) 起着关键作用。它根据用户的凭证决定是否应该允许用户使用某个服务(比如 FTP)。Kerberos 用户信息存储在一个数据库中(在遗留的配置中常常是文件系统中的文件)。KDC 通过引用这个 Kerberos 数据库检查用户,然后授予凭证。遗留的 Kerberos 数据库的主要问题在于,数据库存储在运行 KDC 的系统本地(尽管它是加密的)。在发生故障时,这会造成单一故障点,风险很大。因此,有必要寻找存储 Kerberos 数据的其他方法,从而尽可能降低风险。

由于 Kerberos 数据具有层次化结构,LDAP 目录非常适合存储 Kerberos 数据。在 LDAP 目录中很容易存储和管理 Kerberos 信息。LDAP 目录还对访问数据的方式提供更好的控制。这使 Kerberos 管理员能够轻松地在 LDAP 中存储机密信息(Kerberos 用户名和密码、主密钥等等)。另外,LDAP 目录还能够提高 Kerberos 环境的可伸缩性,让管理员能够把 KDC 放在网络上的任何地方。

本文讨论如何通过配置 IBM NAS 主 KDC 和管理服务器 (kadmind) 使用 LDAP 目录插件存储 IBM NAS 身份验证数据。请注意,IBM NAS 还有另一个特性,可以使用 LDAP 目录配置 KDC 和管理服务器发现。这是一个完全不同的特性,更多信息参见文章 “IBM Network Authentication Service KDC and administration servers discovery using LDAP for AIX”(见 参考资料)。

另外,还有一个分为三部分的系列讨论使用 IBM NAS 的从 KDC 配置。其中一个部分讨论如何把从 KDC 配置为使用 LDAP 作为后端服务器,见 参考资料

如何让 Kerberos 使用 LDAP 目录?

在 Kerberos 中,最重要的信息是主体(Kerberos 用户)和策略信息。这些信息包括 Kerberos 主体密码、各种主体属性、主密钥信息(主密钥或主密钥文件位置)和 Kerberos 策略属性等等。Kerberos KDC 使用 LDAP 中存储的主体信息对用户进行身份验证。除了主体信息之外,Kerberos 策略信息也存储在 LDAP 目录中。

另外,AIX 支持在 LDAP 目录中存储常用的用户信息以及相关的 Kerberos 和 LDAP 属性。在使用 AIX 系统的集成登录时,访问这些额外的信息。因此,在 AIX 上,IBM NAS KDC 和 LDAP 目录的组合提供的不仅仅是安全性。

下图说明如何结合使用 IBM NAS KDC 和 LDAP 目录服务器,并显示这种配置中使用的重要的 IBM NAS 配置文件。

图 1. 使用 LDAP 目录插件的 IBM NAS KDC
使用 LDAP 目录插件的 IBM NAS KDC

因为 LDAP 存储敏感的 Kerberos 信息,而且 KDC 常常要访问 LDAP 目录,所以建议保护 KDC 和 LDAP 服务器之间的通信。一般情况下,需要使用 SSL (Secure Socket Layer)。为 IBM NAS KDC 和 LDAP 配置 SSL 超出了本文的范围。

现在配置使用 LDAP 目录的 IBM NAS KDC。

配置使用 LDAP 后端服务器的 IBM NAS 主 KDC

对于 AIX 上的 Kerberos 配置,使用 IBM NAS version 1.4.0.8。可以在 AIX expansion pack CD 上找到它,也可以从 AIX Web pack 下载页面下载。对于 LDAP 服务器,使用 IBM Tivoli® Directory Server (ITDS) version 6.1。下载链接见 参考资料

在开始实际配置之前,一定要正确地安装和配置 LDAP 服务器。关于如何安装和配置 LDAP 服务器,请参考 LDAP 文档。还要安装 IBM NAS。

详细的配置步骤如下:

  1. 添加后缀:

    首先,在 LDAP 服务器中添加一个新的后缀来存储 Kerberos 信息。可以认为这个后缀是存储 Kerberos 数据的树的根。典型的后缀像 ou=india,o=ibm,c=in 这样。在 LDAP 目录中添加这个后缀:

    • 如果 LDAP 目录服务器正在运行的话,停止它。
      # /opt/IBM/ldap/V6.1/bin/ibmdirctl -D cn=root -w secret stop
      ibmslapd server is stopped
      #
    • 添加后缀。

      添加后缀 ou=india,o=ibm,c=in

      # /opt/IBM/ldap/V6.1/sbin/idscfgsuf -I idsldap -s "ou=india,o=ibm,c=in" -n
      
      You have chosen to perform the following actions:
      
      GLPCSF007I Suffix 'ou=india,o=ibm,c=in' will be added to the configuration
      file of the directory server instance 'idsldap'.
      GLPCSF004I Adding suffix: 'ou=india,o=ibm,c=in'.
      GLPCSF005I Added suffix: 'ou=india,o=ibm,c=in'.
      #
    • 启动 LDAP 目录服务器。
      # /opt/IBM/ldap/V6.1/bin/ibmdirctl -D cn=root -w secret start
      Start operation succeeded
      #
    • 确定已经正确地添加了后缀。

      使用 ldapsearch 搜索刚才添加的后缀。

      # /opt/IBM/ldap/V6.1/bin/ldapsearch -b "" -s base "objectclass=*" namingcontexts
      namingcontexts=CN=SCHEMA
      namingcontexts=CN=LOCALHOST
      namingcontexts=CN=IBMPOLICIES
      namingcontexts=OU=INDIA,O=IBM,C=IN
      #

      这意味着已经成功地添加了后缀。

  2. 添加 Kerberos 模式:

    添加后缀之后,添加保存 Kerberos 数据所需的模式定义。IBM NAS 在 /usr/krb5/ldif 目录中提供用于 LDAP 目录的 LDIF (LDAP Data Interchange Format) 格式的 Kerberos 模式。IBM LDAP 目录服务器的 Kerberos 模式在 /usr/krb5/ldif/IBM.KRB.schema.ldif 文件中。按以下方法添加模式信息:

    # idsldapmodify -h playstation.in.ibm.com -D cn=root -w secret 
    -f /usr/krb5/ldif/IBM.KRB.schema.ldif -c -v
    ldap_init(playstation.in.ibm.com, 389)
    add attributetypes:
            BINARY (85 bytes) ( 1.2.840.113556.1.4.49 NAME 'badPasswordTime' 
            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27 )
    add ibmattributetypes:
            BINARY (67 bytes) ( 1.2.840.113556.1.4.49 DBNAME( 'badPwdTime'  
            'badPasswordTime' ) )
    Operation 0 modifying entry cn=schema
    
    replace attributetypes:
            BINARY (727 bytes) ( 1.2.840.113556.1.4.49 NAME 'badPasswordTime' 
            DESC 'A value indicating the last time the user tried to log onto
            the account using an incorrect password.  The value is stored as 
            a large integer that represents the number of seconds elapsed since
            00:00:00, January 1, 1970. A value of zero (0) means the last 
            password time is unknown.  Each KDC server in the realm maintains 
            its own badPasswordTime attribute.  To get an accurate value for the
            users last bad password time in the realm, the badPasswordTime 
            attribute of each KDC server must be queried, and the largest value
            should be used.  Defined in Active Directory; 
            OID is 1.2.840.113556.1.4.49' 
            SYNTAX 1.3.6.1.4.1.1466.115.121.1.27{11} 
            SINGLE-VALUE USAGE userApplications )
    replace ibmattributetypes:
            BINARY (97 bytes) ( 1.2.840.113556.1.4.49 DBNAME( 'badPwdTime'  
            'badPasswordTime' ) ACCESS-CLASS normal LENGTH 11 )
    Operation 1 modifying entry cn=schema
    .....
    .....
    .....
    add objectclasses:
            BINARY (50 bytes) ( 1.3.18.0.2.6.263 NAME 'krbRealm-V2' STRUCTURAL )
    Operation 143 modifying entry cn=schema
    ldap_modify: Type or value exists
    ldap_modify: additional info: GLPSCH048I Schema item of type 'objectClasses' and name
    'krbRealm-V2' already exists with the specified OID: '1.3.18.0.2.6.263'.
    
    
    replace objectclasses:
            BINARY (146 bytes) ( 1.3.18.0.2.6.263 NAME 'krbRealm-V2' 
            DESC 'Represents a Kerberos security realm.' 
            SUP top STRUCTURAL MUST ( krbPrincSubtree $ krbRealmName-V2 ) )
    Operation 144 modifying entry cn=schema
    
    #
  3. 添加 Kerberos 领域信息:

    接下来,在 LDAP 目录服务器中添加 Kerberos 领域信息。这需要编辑 /usr/krb5/ldif/realm_add.ldif 文件,根据您的领域设置调整相关的条目。在下面的代码清单中,修改的地方突出显示:

    # cat realm_add.ldif.changed
    ...
    ...
    # The suffix "ou=, o=, c=" should be defined before attempting to
    # load this data. Or change the suffix to be an already defined object.
    # Change all references of ISL.IN.IBM.COM to be your realm name.
    #
    # Leaving krbMaxFailAuth set to 0 will disable Principal Lockout as well as
    # preventing the Disable Time Interval from having any affect.  Refer to the
    # documentation for appropriate values to enable Principal Lockout.
    
    dn: ou=INDIA, o=IBM, c=IN
    ou: INDIA
    objectclass: organizationalUnit
    
    
    dn: krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    objectclass: KrbRealm-V2
    objectclass: KrbRealmExt
    krbrealmName-V2: ISL.IN.IBM.COM
    krbprincSubtree: krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    krbDeleteType: 3
    krbMaxFailAuth: 0
    krbDisableTimeInterval: 0
    
    
    dn: cn=principal, krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    objectclass: container
    cn: principal
    
    dn: cn=policy, krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    objectclass: container
    cn: policy
    
    #

    现在,在 LDAP 目录服务器中添加这些领域信息,如下所示:

    # idsldapadd -h playstation.in.ibm.com -D cn=root -w secret 
    -f /usr/krb5/ldif/realm_add.ldif.vipin -c -v
    ldap_init(playstation.in.ibm.com, 389)
    add ou:
            BINARY (5 bytes) INDIA
    add objectclass:
            BINARY (18 bytes) organizationalUnit
    Operation 0 adding new entry ou=INDIA, o=IBM, c=IN
    
    add objectclass:
            BINARY (11 bytes) KrbRealm-V2
            BINARY (11 bytes) KrbRealmExt
    add krbrealmName-V2:
            BINARY (14 bytes) ISL.IN.IBM.COM
    add krbprincSubtree:
            BINARY (53 bytes) krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    add krbDeleteType:
            BINARY (1 bytes) 3
    add krbMaxFailAuth:
            BINARY (1 bytes) 0
    add krbDisableTimeInterval:
            BINARY (1 bytes) 0
    Operation 1 adding new entry krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
    
    add objectclass:
            BINARY (9 bytes) container
    add cn:
            BINARY (9 bytes) principal
    Operation 2 adding new entry cn=principal, krbrealmName-V2=ISL.IN.IBM.COM, 
    ou=INDIA, o=IBM, c=IN
    
    add objectclass:
            BINARY (9 bytes) container
    add cn:
            BINARY (6 bytes) policy
    Operation 3 adding new entry cn=policy, krbrealmName-V2=ISL.IN.IBM.COM, 
    ou=INDIA, o=IBM, c=IN
    
    #
  4. 配置 IBM NAS 主 KDC:

    为了配置以 LDAP 作为后端服务器的 IBM NAS 主 KDC,需要 LDAP 服务器主机名(必须是完全限定的)以及根 DN 和密码。使用 /usr/krb5/sbin/config.krb5 命令配置这些信息。

    # /usr/krb5/sbin/config.krb5
    To configure a Server:
    Usage: /usr/krb5/sbin/config.krb5 -h | -S [-a admin] -d domain -r realm [[-l
    { ldapserver | ldapserver:port }]  [-u ldap_DN -p ldap_DN_pw] [-f {keyring |
    keyring:entry_dn} -k keyring_pw] [-m masterkey_location] [-b bind_type]
    [-R ldap_replica_list]]
    
    To configure a slave KDC:
    On a slave KDC machine:
    Usage: /usr/krb5/sbin/config.krb5 -h | -E -d domain -r realm -s server 
    { [-a admin] | -l{ ldapserver  | ldapserver:port } -u ldap_DN -p ldap_DN_PW 
    [-f {keyring |keyring:entry_dn} -k keyring_pw] [-b bind_type][-R ldap_replica_list] }
    
    On a master server machine:
    Usage: /usr/krb5/sbin/config.krb5 -h | -P -r realm -d domain -e slave_KDC -g
    
    To configure a Client:
    Usage: /usr/krb5/sbin/config.krb5 -h | [-C] -r realm -d domain 
    { -c KDC -s server | -l{ ldapserver  | ldapserver:port_number } [-c KDC -s server] }
    
    #

    在配置主 KDC 时可以使用的参数如下:

    -S表示将要配置主 KDC。
    -d <domain><domain> 是 Kerberos 领域所属的域。
    -r <realm><realm> 是主 KDC 所在的 Kerberos 领域。
    -s <server><server> 是运行主 KDC 和 kadmind 管理服务器的机器的主机名。
    -u <ldap_DN><ldap_DN> 是用来连接 LDAP 服务器的 LDAP 绑定 DN(例如,cn=root)。
    -p <ldap_DN_pw><ldap_DN_pw> 是 LDAP 绑定 DN 的密码。
    -m <masterkey_location>(只适用于 LDAP 目录)<masterkey_location> 是在使用 LDAP 存储数据时在本地文件系统中存储主密钥的文件的完全限定名。
    -b <bind_type><bind_type> 指定在连接 LDAP 服务器时使用的 LDAP 绑定机制。有效值是 'simple'、'cram-md5' 和 'external'。默认值是 'simple'。
    -f <keyring | keyring:enrty_dn>此选项指定在使用 SSL 连接方法时使用的 LDAP keyring 数据库。在这里,<keyring> 是完全限定的文件名,<entry_dn> 是 keyring 中的证书条目名。
    -k <keyring_pw>它指定用来访问 LDAP keyring 数据库的密码。如果没有指定密码,SSL 就使用适当的隐藏文件中的密码存储。
    -R <ldap_replica_list><ldap_replica_list> 是以空格分隔的 LDAP 副本服务器的列表,从 KDC 使用这些服务器实现负载平衡。

    现在,配置 IBM NAS 主 KDC:

    # /usr/krb5/sbin/config.krb5 -S -d in.ibm.com -r ISL.IN.IBM.COM 
    -l playstation.in.ibm.com -u cn=root -p secret
    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 'ISL.IN.IBM.COM'
    master key name 'K/M@ISL.IN.IBM.COM'
    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@ISL.IN.IBM.COM;
      defaulting to no policy. Note that policy may be overridden by
      ACL restrictions.
    Enter password for principal "admin/admin@ISL.IN.IBM.COM":
    Re-enter password for principal "admin/admin@ISL.IN.IBM.COM":
    Principal "admin/admin@ISL.IN.IBM.COM" 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.
    
    #

    在以上命令成功地完成时,它创建各个配置文件。其中一些配置文件如下:

    • /etc/krb5/krb5.conf
      # cat /etc/krb5/krb5.conf
      [libdefaults]
              default_realm = ISL.IN.IBM.COM
              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]
              ISL.IN.IBM.COM = {
                      kdc = fsaix11.in.ibm.com:88
                      admin_server = fsaix11.in.ibm.com:749
                      default_domain = in.ibm.com
                      vdb_plugin_lib = /usr/lib/libkrb5ldplug.a
              }
      
      [domain_realm]
              .in.ibm.com = ISL.IN.IBM.COM
              fsaix11.in.ibm.com = ISL.IN.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
      
      #
    • /var/krb5/krb5kdc/kdc.conf
      # cat /var/krb5/krb5kdc/kdc.conf
      [kdcdefaults]
              kdc_ports = 88
      
      [realms]
              ISL.IN.IBM.COM =  {
                      database_name = LDAP
                      admin_keytab = /var/krb5/krb5kdc/kadm5.keytab
                      acl_file = /var/krb5/krb5kdc/kadm5.acl
                      dict_file = /var/krb5/krb5kdc/kadm5.dict
                      key_stash_file = /var/krb5/krb5kdc/.k5.ISL.IN.IBM.COM
                      kadmind_port = 749
                      kdc_ports = 88
                      max_life = 24h 0m 0s
                      max_renewable_life = 7d 0h 0m 0s
                      master_key_type = des3-cbc-sha1
                      supported_enctypes = des3-cbc-sha1:normal arcfour-hmac:normal 
                      aes256-cts:normal des-cbc-md5:normal des-cbc-crc:normal
              }
      
      #
    • /var/krb5/krb5kdc/.kdc_ldap_data
      # cat /var/krb5/krb5kdc/.kdc_ldap_data
      [ldapdefaults]
              realm = ISL.IN.IBM.COM
              bind_dn = cn=root
              bind_dn_pw = {DES}CE609C90 4E2C88E10F02A341ED7C4CF
              ldapserver = playstation.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]
              playstation.in.ibm.com = {
                      port = 389
                      replica_type = readwrite
                      preference = 4
              }
      
      #
  5. 在 IBM NAS 配置文件中隐藏 LDAP 绑定密码(只适用于 1.4.0.8 以前的 IBM NAS 版本):

    要注意,对于 1.4.0.8 以前的 IBM NAS 版本,LDAP 绑定密码以明文形式存储在 /var/krb5/krb5kdc/.kdc_ldap_data 文件中。这可能给 LDAP 服务器造成安全风险。IBM NAS version 1.4.0.8 为此提供了一种补救方法。现在,管理员可以使用 /usr/krb5/bin/ksetup 实用程序加密 LDAP 绑定密码。这个实用程序的 '-c' 标志接受明文并输出加密的计数器部分。可以把这个文本放在 /var/krb5/krb5kdc/.kdc_ldap_data 文件中,替代明文的密码。

    # cat /var/krb5/krb5kdc/.kdc_ldap_data
    [ldapdefaults]
            realm = ISL.IN.IBM.COM
            bind_dn = cn=root
            bind_dn_pw = secret
            ldapserver = playstation.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]
            playstation.in.ibm.com = {
                    port = 389
                    replica_type = readwrite
                    preference = 4
            }
            
    # /usr/krb5/sbin/ksetup -c "secret"
    {DES}CE609C90 4E2C88E10F02A341ED7C4CF
    
    # cat /var/krb5/krb5kdc/.kdc_ldap_data
    [ldapdefaults]
            realm = ISL.IN.IBM.COM
            bind_dn = cn=root
            bind_dn_pw = {DES}CE609C90 4E2C88E10F02A341ED7C4CF
            ldapserver = playstation.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]
            playstation.in.ibm.com = {
                    port = 389
                    replica_type = readwrite
                    preference = 4
            }
    #
  6. 测试配置:

    为了测试配置,使用 /usr/krb5/bin/kinit 获取票据并使用 /usr/krb5/sbin/kadmin 接口执行任何管理任务(例如添加一个主体)。

    # /usr/krb5/bin/kinit admin/admin
    Password for admin/admin@ISL.IN.IBM.COM:
    
    # /usr/krb5/bin/klist
    Ticket cache:  FILE:/var/krb5/security/creds/krb5cc_0
    Default principal:  admin/admin@ISL.IN.IBM.COM
    
    Valid starting     Expires            Service principal
    09/29/08 17:49:35  09/30/08 17:49:33  krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
    
    # /usr/krb5/sbin/kadmin
    Authenticating as principal admin/admin@ISL.IN.IBM.COM with password.
    Password for admin/admin@ISL.IN.IBM.COM:
    kadmin:  getprincs
    admin/admin@ISL.IN.IBM.COM
    kadmin/changepw@ISL.IN.IBM.COM
    kadmin/admin@ISL.IN.IBM.COM
    kadmin/history@ISL.IN.IBM.COM
    krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
    K/M@ISL.IN.IBM.COM
    
    kadmin:  ank -pw vip vip
    WARNING: no policy specified for vip@ISL.IN.IBM.COM;
      defaulting to no policy. Note that policy may be overridden by
      ACL restrictions.
    Principal "vip@ISL.IN.IBM.COM" created.
    kadmin:  q
    
    #

配置步骤已经完成了,使用 LDAP 作为后端服务器的 IBM NAS 服务器已经在运行了。

注意,管理员还可以使用 ldapsearch 查看 LDAP 目录中存储的 Kerberos 数据:

# ldapsearch -h playstation.in.ibm.com -D cn=root -w secret -b "ou=india,o=ibm,c=in" 
objectclass=*
ou=INDIA,o=IBM,c=IN
ou=INDIA
objectclass=organizationalUnit
objectclass=top

krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=KrbRealm-V2
objectclass=KrbRealmExt
objectclass=KrbPolicy
objectclass=top
krbrealmName-V2=ISL.IN.IBM.COM
krbprincSubtree=krbrealmName-V2=ISL.IN.IBM.COM, ou=INDIA, o=IBM, c=IN
krbDeleteType=3
krbMaxFailAuth=0
krbDisableTimeInterval=0

cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=container
objectclass=top
cn=principal

cn=policy,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=container
objectclass=top
cn=policy

cn=MKEYS,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=container
objectclass=top
cn=MKEYS

krbkeyversion=1,cn=MKEYS,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=KrbMstrKey
objectclass=top
krbkdcservicename=kdc
krbkeyversion=1
krbmstrkeydata=NOT ASCII
krbkeyname=K/M@ISL.IN.IBM.COM

cn=K/M,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=person
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
objectclass=top
cn=K/M
sn=ISL.IN.IBM.COM
krbprincipalname=K/M@ISL.IN.IBM.COM
krbprincipaltype=1
krbcurkeyversion=1
pwdlastset=0
krbtaggeddatalist=NOT ASCII
badpasswordtime=0
badpwdcount=0
lastlogon=0
secacctexpires=19700101000000Z
passwordmaxage=0
maxrenewage=604800
maxticketage=86400
krbattributes=192
secacctvalid=false
useraccountcontrol=524288
krbmodifiersname=db_creation@ISL.IN.IBM.COM
krbmodifytimestamp=1222692501

krbkeyversion=1,cn=K/M,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=1
krbkeydata=NOT ASCII
krbkdcservicename=kdc

cn=krbtgt/ISL.IN.IBM.COM,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=person
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
objectclass=top
cn=krbtgt/ISL.IN.IBM.COM
sn=ISL.IN.IBM.COM
krbprincipalname=krbtgt/ISL.IN.IBM.COM@ISL.IN.IBM.COM
krbprincipaltype=2
krbcurkeyversion=1
pwdlastset=0
krbtaggeddatalist=NOT ASCII
badpasswordtime=0
badpwdcount=0
lastlogon=0
secacctexpires=19700101000000Z
passwordmaxage=0
maxrenewage=604800
maxticketage=86400
krbattributes=128
secacctvalid=true
useraccountcontrol=524288
krbmodifiersname=db_creation@ISL.IN.IBM.COM
krbmodifytimestamp=1222692502

krbkeyversion=1,cn=krbtgt/ISL.IN.IBM.COM,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,
ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=1
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkdcservicename=kdc

cn=kadmin/history,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
cn=kadmin/history
sn=ISL.IN.IBM.COM
badpasswordtime=0
badpwdcount=0
krbattributes=64
krbcurkeyversion=2
krbmodifiersname=kdb5_util@ISL.IN.IBM.COM
krbmodifytimestamp=1222692504
krbprincipalname=kadmin/history@ISL.IN.IBM.COM
krbprincipaltype=1
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
lastlogon=0
maxrenewage=604800
maxticketage=86400
objectclass=person
objectclass=top
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
passwordmaxage=0
pwdlastset=1222692504
secacctexpires=19700101000000Z
secacctvalid=false
useraccountcontrol=524288

krbkeyversion=2,cn=kadmin/history,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,
ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=2
krbkeydata=NOT ASCII
krbkdcservicename=kdc

cn=kadmin/admin,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
cn=kadmin/admin
sn=ISL.IN.IBM.COM
badpasswordtime=0
badpwdcount=0
krbattributes=132
krbcurkeyversion=3
krbmodifiersname=root/admin@ISL.IN.IBM.COM
krbmodifytimestamp=1222692517
krbprincipalname=kadmin/admin@ISL.IN.IBM.COM
krbprincipaltype=1
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
lastlogon=0
maxrenewage=604800
maxticketage=10800
objectclass=person
objectclass=top
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
passwordmaxage=0
pwdlastset=1222692517
secacctexpires=19700101000000Z
secacctvalid=true
useraccountcontrol=524288

cn=kadmin/changepw,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
cn=kadmin/changepw
sn=ISL.IN.IBM.COM
badpasswordtime=0
badpwdcount=0
krbattributes=8324
krbcurkeyversion=3
krbmodifiersname=root/admin@ISL.IN.IBM.COM
krbmodifytimestamp=1222692517
krbprincipalname=kadmin/changepw@ISL.IN.IBM.COM
krbprincipaltype=1
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
lastlogon=0
maxrenewage=604800
maxticketage=300
objectclass=person
objectclass=top
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
passwordmaxage=0
pwdlastset=1222692517
secacctexpires=19700101000000Z
secacctvalid=true
useraccountcontrol=524288

cn=admin/admin,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=person
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
objectclass=top
cn=admin/admin
sn=ISL.IN.IBM.COM
krbprincipalname=admin/admin@ISL.IN.IBM.COM
krbprincipaltype=1
krbcurkeyversion=1
pwdlastset=1222692515
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
badpasswordtime=0
badpwdcount=0
lastlogon=0
secacctexpires=19700101000000Z
passwordmaxage=0
maxrenewage=604800
maxticketage=86400
krbattributes=128
secacctvalid=true
useraccountcontrol=524288
krbmodifiersname=root/admin@ISL.IN.IBM.COM
krbmodifytimestamp=1222692515

krbkeyversion=1,cn=admin/admin,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,
ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=1
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkdcservicename=kdc

krbkeyversion=3,cn=kadmin/admin,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,
ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=3
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkdcservicename=kdc

krbkeyversion=3,cn=kadmin/changepw,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,
ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=3
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkdcservicename=kdc

cn=vip,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=person
objectclass=KrbPrincipal
objectclass=KrbPolicy
objectclass=KrbModifierInfo
objectclass=top
cn=vip
sn=ISL.IN.IBM.COM
krbprincipalname=vip@ISL.IN.IBM.COM
krbprincipaltype=1
krbcurkeyversion=1
pwdlastset=1222692587
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
krbtaggeddatalist=NOT ASCII
badpasswordtime=0
badpwdcount=0
lastlogon=0
secacctexpires=19700101000000Z
passwordmaxage=0
maxrenewage=604800
maxticketage=86400
krbattributes=128
secacctvalid=true
useraccountcontrol=524288
krbmodifiersname=admin/admin@ISL.IN.IBM.COM
krbmodifytimestamp=1222692587

krbkeyversion=1,cn=vip,cn=principal,krbrealmName-V2=ISL.IN.IBM.COM,ou=INDIA,o=IBM,c=IN
objectclass=KrbKey
objectclass=top
krbkeyversion=1
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkeydata=NOT ASCII
krbkdcservicename=kdc

#

结束语

本文详细讨论了如何在 AIX 上通过设置 IBM NAS 主 KDC 来使用 LDAP 目录。掌握这些概念肯定有助于 AIX Kerberos 管理员实现类似的配置。

参考资料

学习

获得产品和技术

讨论

条评论

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=386124
ArticleTitle=在 AIX 上配置使用 LDAP 后端服务器的 IBM Network Authentication Service 主 KDC
publish-date=04292009