Kerberos + OpenLDAP集成测试

本文探讨了Kerberos与OpenLDAP的集成方案,分析两者作为独立用户认证系统的关系,以及在大数据平台如CDH中的应用。文章记录了集成过程中遇到的kinit登录失败问题及其解决方法。

最近研究了下Kerberos + OpenLDAP的集成,得出结论如下:

1、Kerberos 与OpenLDAP是两套分别独立的用户认证系统

2、OpenLDAP主要做用户管理,其可以作为Kerberos的用户存储数据库

3、OpenLDAP可以与SSSD、SSH集成来作为Linux远程登录用户管理

4、对于大数据平台比如CDH,可以集成Kerberos也可以集成OpenLDAP,但是集成时依然是两套独立的用户认证系统,可以通过后台脚本或者其他方式做到在两个系统中同时创建用户,但是本质上依然为两套

5、从本质上来说,可以直接在LDAP中创建用户,通过Kinit来访问,但是发现创建的用户kinit登陆不了,报如下错误:

 kpasswd steve1@FIELD.HORTONWORKS.COM
kpasswd: KDC has no support for encryption type getting initial ticket

在日志中发现:

12月 18 20:25:41 test-ldap2 krb5kdc[77137](info): AS_REQ (8 etypes {18 17 20 19 16 23 25 26}) 192.168.116.201: CANT_FIND_CLIENT_KEY: steve@FIELD.HORTONWORKS.COM for krbtgt/FIELD.HORTONWORKS.COM@FIELD.HORTONWORKS.COM, KDC has no support for encryption type
12月 18 20:25:41 test-ldap2 krb5kdc[77137](info): closing down fd 15
12月 18 20:27:41 test-ldap2 krb5kdc[77137](info): AS_REQ (11 etypes {18 17 20 19 16 23 25 26 1 3 2}) 192.168.116.201: CANT_FIND_CLIENT_KEY: steve@FIELD.HORTONWORKS.COM for krbtgt/FIELD.HORTONWORKS.COM@FIELD.HORTONWORKS.COM, KDC has no support for encryption type
12月 18 20:27:41 test-ldap2 krb5kdc[77137](info): closing down fd 15
12月 18 20:27:45 test-ldap2 krb5kdc[77137](info): AS_REQ (11 etypes {18 17 20 19 16 23 25 26 1 3 2}) 192.168.116.201: CANT_FIND_CLIENT_KEY: steve@FIELD.HORTONWORKS.COM for krbtgt/FIELD.HORTONWORKS.COM@FIELD.HORTONWORKS.COM, KDC has no support for encryption type
12月 18 20:27:45 test-ldap2 krb5kdc[77137](info): closing down fd 15
12月 18 20:41:11 test-ldap2 krb5kdc[77137](info): AS_REQ (11 etypes {18 17 20 19 16 23 25 26 1 3 2}) 192.168.116.201: CANT_FIND_CLIENT_KEY: steve1@FIELD.HORTONWORKS.COM for kadmin/changepw@FIELD.HORTONWORKS.COM, KDC has no support for encryption type
12月 18 20:41:11 test-ldap2 krb5kdc[77137](info): closing down fd 15
12月 18 20:42:32 test-ldap2 krb5kdc[77137](info): AS_REQ (11 etypes {18 17 20 19 16 23 25 26 1 3 2}) 192.168.116.201: ISSUE: authtime 1545136952, etypes {rep=18 tkt=18 ses=18}, steve1@FIELD.HORTONWORKS.COM for krbtgt/FIELD.HORTONWORKS.COM@FIELD.HORTONWORKS.COM
12月 18 20:42:32 test-ldap2 krb5kdc[77137](info): closing down fd 15

解决该错误需要从kadmin中将密码修改下就可以了:

kadmin.local:  cpw steve1@FIELD.HORTONWORKS.COM
Enter password for principal "steve1@FIELD.HORTONWORKS.COM": 
Re-enter password for principal "steve1@FIELD.HORTONWORKS.COM": 
Password for "steve1@FIELD.HORTONWORKS.COM" changed.
kadmin.local:  exit

 

参考文档:

https://help.ubuntu.com/lts/serverguide/kerberos-ldap.html.en

https://community.hortonworks.com/articles/199542/configuring-kerberos-with-openldap-back-end.html

http://k5wiki.kerberos.org/wiki/LDAP_on_Kerberos

https://blog.youkuaiyun.com/cheng_fangang/article/details/40143261

http://blog.51cto.com/11555417/2065747

<think>嗯,用户的问题是关于如何实现Kerberos与Active Directory(AD)的集成,需要配置教程和最佳实践。首先,我得回顾一下Kerberos和AD的基本概念。Kerberos是一个网络认证协议,而AD是微软的目录服务,通常用于Windows环境中的身份管理。他们的集成应该涉及到如何在AD环境中配置Kerberos认证,可能用于跨平台的环境或者需要强化安全性的场景。 首先,用户可能需要了解集成的必要性,比如统一身份验证、单点登录(SSO)的好处。然后,具体的步骤可能包括AD的配置、Kerberos服务器的设置、服务主体名称(SPN)的注册、密钥表的生成等。另外,最佳实践可能涉及安全策略、密钥管理和故障排除方法。 我需要检查现有的引用内容。引用[1]提到如何打造统一的KerberosOpenLDAP服务,这可能部分相关,但用户问的是AD,不是OpenLDAP。引用[2]介绍了AD LDS,但可能不够直接。引用[3]详细解释了Kerberos的鉴权过程,这对理解原理有帮助。引用[4]讨论了基于目录的用户管理,与AD的用户管理相关。引用[5]有图片,可能无法直接使用。 接下来,我需要确保回答结构清晰,分步骤说明集成方法,可能包括原理、配置步骤、最佳实践和常见问题。需要确认是否AD本身已经内置了Kerberos,因为实际上AD默认使用Kerberos作为认证协议之一,所以集成可能更多是指如何配置应用或服务使用AD的Kerberos功能。 可能的误解是用户以为需要单独安装Kerberos,而实际上AD已经集成了Kerberos。因此,集成Kerberos与AD可能是指如何让非Windows服务使用AD的Kerberos进行认证。例如,在Linux服务器上配置使用AD的Kerberos域。 因此,步骤可能包括:确保AD域控制器正确配置,设置DNS,创建服务主体,生成keytab文件,配置客户端使用AD的KDC等。最佳实践可能涉及定期轮换密钥、确保时间同步、使用安全的传输协议等。 需要验证这些步骤是否正确,并参考引用中的内容。例如,引用[1]中提到的统一Kerberos和LDAP,可能涉及类似的步骤,但AD本身已经整合了LDAP和Kerberos。因此,配置应用使用AD的Kerberos可能需要通过SPN注册和keytab生成。 另外,引用[3]中的Kerberos鉴权过程需要简明扼要地解释,以帮助用户理解原理。可能还需要提到双向信任、领域配置等内容。 总结:回答需要先解释AD和Kerberos的关系,说明AD内置Kerberos,然后提供配置步骤,比如SPN设置、生成keytab、配置客户端,接着是验证方法和最佳实践,如时间同步、密钥管理。可能还需要提到集成中的常见问题,比如DNS配置错误、时间不同步导致的票据问题。</think>### Kerberos与Active Directory集成配置方法 #### 一、集成原理 Kerberos是Active Directory默认的身份验证协议,AD域控制器(DC)本身充当Kerberos密钥分发中心(KDC)[^3]。集成核心在于: 1. 服务主体名称(SPN)注册:每个服务需在AD中注册唯一标识 2. 密钥表(Keytab)生成:存储服务账户的加密密钥 3. 跨域信任建立(可选):实现不同域间的身份验证 #### 二、配置步骤 1. **环境准备** - 确认AD域功能级别至少为Windows Server 2008 R2 - 确保所有节点时间同步(NTP服务误差<5分钟) 2. **服务账户创建** ```powershell New-ADUser -Name "svc_kerberos" -AccountPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) -Enabled $true -ServicePrincipalNames "HTTP/web01.example.com" ``` 3. **SPN注册** ```powershell setspn -S HTTP/web01.example.com svc_kerberos ``` 4. **生成Keytab文件** ```bash ktpass -out krb5.keytab -princ HTTP/web01.example.com@EXAMPLE.COM -mapuser svc_kerberos -crypto AES256-SHA1 -pass P@ssw0rd! -ptype KRB5_NT_PRINCIPAL ``` 5. **客户端配置(Linux示例)** ```conf /etc/krb5.conf: [libdefaults] default_realm = EXAMPLE.COM dns_lookup_realm = false dns_lookup_kdc = true ``` #### 三、最佳实践 1. **密钥管理** - 定期轮换服务账户密码(推荐90天) - 使用`AES256`加密类型而非RC4-HMAC 2. **监控与维护** - 监控Kerberos事件ID:4768(TGS请求)、4771(Kerberos预认证失败) - 使用`klist purge`命令定期清理票据缓存 3. **高可用配置** - 部署至少两个只读域控制器(RODC) - 配置DNS轮询实现KDC负载均衡 #### 四、验证方法 1. 票据获取测试: ```bash kinit svc_kerberos@EXAMPLE.COM klist ``` 2. 服务认证验证: ```bash curl --negotiate -u : http://web01.example.com ``` #### 五、常见问题处理 | 现象 | 解决方案 | |------|----------| | 错误代码0x6(KRB5KRB_AP_ERR_MODIFIED) | 检查服务账户密码与Keytab是否匹配[^1] | | 错误代码0x7(KRB5KDC_ERR_S_PRINCIPAL_UNKNOWN) | 验证SPN是否注册正确 | | 跨域认证失败 | 检查双向信任关系是否建立[^2] | : Kerberos与LDAP的集成需要严格保证加密密钥的一致性 : AD域间信任配置需确保DNS解析和网络连通性 : Kerberos票据有效期默认10小时,需根据业务需求调整
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值