转载

Kerberos LDAP 主-从配置管理

kerberos 主从安装

操作系统 ubuntu 12.04

Kerberos Server #####################   规范介绍    #######################################     Realm: BJPUC1.COM      --> 建议大写       Primary KDC: nn1.bjpuc1.com   --> 建议用域名 192.168.88.16       Secondary KDC: nn2.bjpuc1.com --> 192.168.88.17       User principal: bjpuc1       Admin principal: bjpuc1/admin       NTP 时间服务器      --> 时间需要同步 #####################   规范介绍    ####################################### 

Primary KDC

    apt-get install krb5-kdc krb5-admin-server     krb5_newrealm         dpkg-reconfigure krb5-kdc 
    cat /etc/krb5.conf    ###此文件为所有应用kerbers 机器通用         [logging]                 default = FILE:/var/log/krb5libs.log                 kdc = FILE:/var/log/krb5kdc.log                 admin_server = FILE:/var/log/kadmind.log         [libdefaults]                 default_realm = BJPUC1.COM                 dns_lookup_realm = false                 dns_lookup_kdc = false                 ticket_lifetime = 24h                 renew_lifetime = 2d                 forwardable = true                 renewable = true         [realms]                 BJPUC1.COM = {                 kdc = nn1.bjpuc1.com                 kdc = nn2.bjpuc1.com                 admin_server = nn1.bjpuc1.com         }         [domain_realm]                   [kdc]                 profile=/etc/krb5kdc/kdc.conf 
    kadmin.local         Authenticating as principal root/admin@BJPUC1.COM with password.         kadmin.local: addprinc bjpuc1/admin         WARNING: no policy specified for bjpuc1/admin@BJPUC1.COM; defaulting to no policy         Enter password for principal "bjpuc1/admin@BJPUC1.COM":          Re-enter password for principal "bjpuc1/admin@BJPUC1.COM":          Principal "bjpuc1/admin@BJPUC1.COM" created.         kadmin.local: quit 
    cat /etc/krb5kdc/kadm5.acl         bjpuc1/admin@BJPUC1.COM        *     /etc/init.d/krb5-admin-server restart     kinit bjpuc1/admin         bjpuc1/admin@BJPUC1.COM's Password: 
    cat /etc/hosts        ##或用DNS方式解决         host/nn1.bjpuc1.com@bjpuc1.com         host/nn2.bjpuc1.com@bjpuc1.com 
    kadmin -q "addprinc -randkey host/nn1.bjpuc1.com"     kadmin -q "ktadd -norandkey -k /etc/krb5.keytab host/nn1.bjpuc1.com"     klist -k /etc/krb5.keytab     klist -k /etc/krb5.keytab     kprop -r bjpuc1.com -f /var/lib/krb5kdc/dump nn2.bjpuc1.com     vi /etc/crontab         0 * * * * /usr/sbin/kdb5_util dump /var/lib/krb5kdc/dump && /usr/sbin/kprop -r BJPUC1.COM -f /var/lib/krb5kdc/dump nn2.bjpuc1.com 

Secondary KDC

    apt-get install krb5-kdc krb5-admin-server     kadmin -q "addprinc -randkey host/nn2.bjpuc1.com"     kadmin -q "ktadd -norandkey -k /etc/krb5.keytab host/nn2.bjpuc1.com"     vi /etc/krb5kdc/kpropd.acl         host/nn1.bjpuc1.com@bjpuc1.com         host/nn2.bjpuc1.com@bjpuc1.com     kdb5_util -s create     kpropd -S     kdb5_util stash     /etc/init.d/krb5-kdc start 

Kerberos Linux Client

    apt-get install krb5-user libpam-krb5 libpam-ccreds auth-client-config 

from: http://www.ibm.com/developerworks/cn/aix/library/au-kerberos_mst_slv/

概述

KRB5LDAP 客户机从 KRB5LDAP 主服务器获取用户和组信息。如果 KRB5LDAP 主服务器因为不可用而不响应 KRB5LDAP 客户机,那么 Kerberos LDAP 客户机将向 KRB5LDAP 从服务器发送一个请求,以获取用户和组信息。

KRB5LDAP 客户机应用程序设计为在 KRB5LDAP 主服务器停机的情况下,尝试根据从服务器执行身份验证。因此在系统失败时,管理员不需要做额外工作就可以将 Kerberos 身份验证服务故障转移到备份服务器。不过 Kerberos 的管理特性不提供自动故障转移。

图 1. 图表

Kerberos LDAP 主-从配置管理

如果 Kerberos 主服务器发生故障,kadmind 守护进程将不可用。因此,在修复或替换主服务器之前,管理功能是不可用的。特别是主管理、关键创建和关键变更操作在 Kerberos 主服务器失败期间是不能执行的。

本文使用 IBM® Tivoli® 目录服务器(LDAP)作为数据库服务器,使用 IBM Network Authentication Services (NAS) 作为 Kerberos 验证服务器。

配置

LDAP 配置

LDAP 被设计为允许设置主/备份配置。首先,按照下面的说明配置 LDAP 主/备份服务器。

使用 AIX® mksecldap 命令配置 LDAP 服务器和客户机。这个命令自动将 LDAP 信息更新到所需的 LDAP 配置文件。参见 参考资料 小节获得关于配置 LDAP 主-备份拓扑结构的信息。

使用 LDAP 数据库(KRB5LDAP 主/从)配置 Kerberos 主/从服务器

  • 下面的步骤在 ldap 数据库中定义这两个模式定义:

    在 LDAP 主/备份服务器上添加 Kerberos 模式。NAS 在 /usr/krb5/ldif 目录中附带有一个 ldif 文件。使用 ldapmodify 命令将该模式导出到 LDAP 主/备份服务器。

    ldapmodify 使用以下语法:

    ldapmodify -h <LDAP Master hostname/ LDAP replica hostname> -D <bind dn> -w <bind passwd>  -f /usr/krb5/ldif/IBM.KRB.schema.ldif -v -c

    例如:

    ldapmodify -h server1.in.ibm.com -D cn=admin -w adminpwd -f /usr/krb5/ldif/IBM.KRB.schema.ldif -v -c

下面的步骤将 Kerberos 域导出到 LDAP 服务器:

NAS 附带有一个 realm_add.ldif 文件,该文件在 /usr/krb5/ldif 目录中。使用 Kerberos 域和 LDAP 后缀信息更新这个文件。需要更改的地方包括使用 LDAP 后缀替换默认的后缀,并且这个域名应该与将在 Kerberos 配置中使用的域名一样。

realm_add.ldif 文件

dn: <ou=Austin, o=IBM, c=US> ou: <Austin> objectclass: organizationalUnit  dn: krbrealmName-V2=<REALM NAME>, <ou=Austin, o=IBM, c=US> objectclass: KrbRealm-V2 objectclass: KrbRealmExt krbrealmName-V2: <REALM NAME> krbprincSubtree: krbrealmName-V2=<REALM NAME>, <ou=Austin, o=IBM, c=US> krbDeleteType: 4 krbMaxFailAuth: 0 krbDisableTimeInterval: 0  dn: cn=principal, krbrealmName-V2=<REALM NAME>, <ou=Austin, o=IBM, c=US> objectclass: container cn: principal  dn: cn=policy, krbrealmName-V2=<REALM NAME>, <ou=Austin, o=IBM, c=US> objectclass: container cn: policy

使用命令 ldapadd 将该文件导出到 LDAP 主/从服务器。

ldapadd 语法

ldapadd -h <LDAP server hostname/LDAP Replica server hostname> -D <bind dn>  -w <bind passwd> -f /usr/krb5/ldif/realm_add.ldif -v -c

例如:

ldapadd -h server1.in.ibm.com -D cn=admin   -w adminpwd  -f /usr/krb5/ldif/realm_add.ldif -v -c

将 Kerberos 模式定义导出到 LDAP 服务器之后,使用命令 ldapsearch 检查它。

ldapsearch 语法

ldapsearch -h <LDAP master/Replica hostname> -D <bind dn> -w <bind passwd>  -b <LDAP suffix> objectclass=* | more

例如:

ldapsearch -h server1.in.ibm.com -D cn=admin -w adminpwd -b " ou=People,o=sec" objectclass=* | more

使用 LDAP 主服务器配置 Kerberos 主服务器

使用命令 mkkrb5srv 配置带有 LDAP 主服务器的 Kerberos 主服务器。

mkkrb5srv 语法

mkkrb5srv -r <realm> -s <KDC server> -d <Domain name>  -a <Adminitstrater name>   -l <LDAP master server>  -u <bind dn> -p <bind passwd>

例如:

mkkrb5srv -r TEST -s server1.in.ibm.com -d in.ibm.com -a admin/admin -l server1.in.ibm.com -u cn=admin -p adminpwd

命令 mkkrb5srv 启动 krb5kdc 和 kadmind 进程。使用命令 ps 检查这个进程。

ps -eaf|grep KRB5

Kerberos 服务器类型信息存储在 /etc/krb5/krb5_cfg_type 文件中。这个文件包含主/从服务器的信息。

通过 LDAP 数据库运行命令 mkkrb5srv 将导致类似于遗留数据库配置的操作(除了数据库创建不同之外)。因为 LDAP 用作后端存储,所以没有在本地文件系统中创建数据库文件。相反,将在 /var/krb5/krb5kdc 目录中创建一个 .kdc_ldap_data 文件来保存关于 LDAP 的信息。

在 LDAP 备份服务器上配置 Kerberos 从服务器

像下面这样使用命令 config.krb5 配置 Kerberos 从服务器。

config.krb5 语法

config.krb5 -E -d <domain name> -r <realm> -s <KDC server>  -l <LDAP replica server> -u <bind dn> -p <bind passwd>

例如:

config.krb5 -E -d in.ibm.com -r TEST -s server1.in.ibm.com -l server2.in.ibm.com   -u cn=admin -p adminpwd

选项 -E 指定配置的是从 KDC 服务器。

<realm> 名应该与 Kerberos 主服务器相同。

这将启动 krb5kdc 守护进程,并使用命令 ps 进行检查:

ps -eaf|grep KRB5

Kerberos 服务器类型信息存储在 /etc/krb5/krb5_cfg_type 文件中。这个文件包含主或从服务器的信息。使用以下命令检查 Kerberos 服务器的类型:

# cat /etc/krb5/krb5_cfg_type

查看 /etc/krb5/krb5.conf 文件确认从服务器配置。

# 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 = Server1.in.ibm.com:88            kdc = Server2.in.ibm.com:88            admin_server = Server1.in.ibm.com:749               default_domain = in.ibm.com              vdb_plugin_lib = /usr/lib/libkrb5ldplug.a         }  [domain_realm]         .in.ibm.com = TEST         Server1.in.ibm.com = TEST         Server2.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

在用作数据库服务器的 LDAP 中,将在 /var/krb5/krb5kdc 目录下创建一个 .kdc_ldap_data 文件来保存关于 LDAP 的信息。

在用作后端存储的 LDAP 中,将不在本地文件系统创建数据库文件。相反,将在 /var/krb5/krb5kdc 目录下创建一个 .kdc_ldap_data 文件来保存关于 LDAP 的信息。因此必须在 Kerberso 主和从服务器中编辑 .kdc_ldap_data 文件,然后同步这两个服务器。

在 Kerberos 主服务器上,添加 KDC 从条目:

[ldapdefaults]            realm = TEST            bind_dn = cn=admin            bind_dn_pw = adminpwd            ldapserver = server1.in.ibm.com  ldapserver = server2.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]           server1.in.ibm.com = {                 port = 389                 replica_type = readwrite                 preference = 9         }         server2.in.ibm.com = {                 port = 389                 replica_type = readonly                 preference = 4         }

在 Kerberos 从服务器上,添加 KDC 主条目:

[ldapdefaults]         realm = TEST         bind_dn = cn=admin         bind_dn_pw = adminpwd         ldapserver = server2.in.ibm.com   ldapserver = server1.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]         server2.in.ibm.com = {                 port = 389                 replica_type = readonly                 preference = 9         }         server1.in.ibm.com = {                 port = 389                 replica_type = readwrite                 preference = 4         } 

配置 Kerberos 客户机

使用 mkkrb5clnt 命令配置带有 Kerberos 服务器的 Kerberos 客户机。

mkkrb5clnt 语法

mkkrb5clnt -r  <realm> -d <domain name> {-c <KDC server> -s <server> | -l {ldapserver | ldapserver:port}  [-c <KDC> -s <server>]}  [-a <admin>] [-A] [-i <data base>] [-K] [-T]
mkkrb5clnt -r TEST -c server1.in.ibm.com -s server1.in.ibm.com -d in.ibm.com -i LDAP -K -T

mkkrb5clnt 创建包含 <realm> 名称、KDC 服务器、Kerberos 管理服务器和域名信息的 /etc/krb5/krb5.conf 文件。

#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]         REDDY = {                 kdc = server1.in.ibm.com:88                 admin_server = server1.in.ibm.com:749                 default_domain = in.ibm.com         } [domain_realm]         .in.ibm.com = TEST         server1.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

Kerberos 服务器类型信息存储在 /etc/krb5/krb5_cfg_type 文件中。这个文件应该包含 “客户机” 的信息。

Kerberos 用户可以从 Kerberos 客户机创建。要创建 Kerberos 用户,根用户必须拥有凭证。凭证可以通过 kinit 命令从 KDC 服务器获取。

# /usr/krb5/bin/kinit admin/admin

admin/admin@TEST 的密码:

可以使用 /usr/krb5/bin/klist 命令来验证凭证文件。

在 AIX Kerberos 客户机上,可以使用 mkuser 命令按照以下方式创建 Kerberos 用户:

# mkuser -R KRB5LDAP SYSTEM= "KRB5LDAP" registry=KRB5LDAP <user1>

通过密码命令为用户设置密码,然后验证登录。

#passwd -R KRB5LDAP <user1>

在 Kerberos 客户机服务器中添加从 KDC 服务器的详细信息

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 = server1.in.ibm.com:88           kdc = server2.in.ibm.com:88                 admin_server = server1.in.ibm.com:749                 default_domain = in.ibm.com         }  [domain_realm]         .in.ibm.com = TEST         server1.in.ibm.com = TEST    server2.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

这个故障转移机制可以按照以下方法进行验证。停止并关闭 LDAP 主服务器和 Kerberos 主服务器。从 Kerberos 客户机运行 kinit。此外,保证所有 Kerberos 用户 都从客户机登录。

在 Kerberos 从服务器中检查 /var/krb5/log/ krb5kdc.log 文件,以跟踪事件机制。

+

+

=

=

=

0

0‘

0

原文  http://fantaxy025025.iteye.com/blog/2310008
正文到此结束
Loading...