Ubuntu(14.04)Kerberos LDAP配置
来源:互联网 发布:网络电视看珠江台了 编辑:程序博客网 时间:2024/05/31 04:03
原文地址:https://help.ubuntu.com/14.04/serverguide/kerberos-ldap.html
大多数情况下,我们不会光使用Kerberos;一旦用户被Kerberos认证,我们需要指出用户可以做什么(认证哪些服务)。这将会是一些程序的工作比如:LDAP。
在两个服务器之间复制一个kerberos实体数据库,或者将一个附加的用户数据库添加到您的网络中可能会比较麻烦。幸运的是,MIT Kerberos可以被配置成使用一个LDAP目录作为主数据库。本节包括配置主从Kerberos服务器使用OpenLDAP作为实体数据库。
tips:这里介绍的例子假定是MIT Kerberos和OpenLDAP。
配置OpenLDAP
首先,必要的schema(模式)需要被加载在OpenLDAP服务器上,并且这个OpenLDAP服务器和主从KDC是网络连通的。本节假设的LDAP复制至少配置在两台以上的服务器。配置OpenLDAP查看OpenLDAP服务器。
同时要求配置OpenLDAP的TLS和SSL连接,这使得KDC和LDAP服务器之间的传输是加密的。具体配置查看TLS
。
tips:cn=admin,cn=config是我们使用权限编辑ldap数据库创建的用户。大多数时候,它是RootDN。根据自己的需求进行修改。
在LDAP服务器上安装krb5-kdc-ldap包,用来加载schema。在终端输入:
sudo apt-get install krb5-kdc-ldap
解压kerberos.schema.gz文件:
sudo gzip -d /usr/share/doc/krb5-kdc-ldap/kerberos.schema.gzsudo cp /usr/share/doc/krb5-kdc-ldap/kerberos.schema /etc/ldap/schema/
Kerberos的schema需要被添加到cn=config树。下面的过程是添加一个新的schema到slapd。同样的,详细资料请查看Modifying the slapd Configuration Database。
首先,创建一个名叫schema_convert.conf的配置文件,或者其他类似描述的名字,包含以下内容:
include /etc/ldap/schema/core.schemainclude /etc/ldap/schema/collective.schemainclude /etc/ldap/schema/corba.schemainclude /etc/ldap/schema/cosine.schemainclude /etc/ldap/schema/duaconf.schemainclude /etc/ldap/schema/dyngroup.schemainclude /etc/ldap/schema/inetorgperson.schemainclude /etc/ldap/schema/java.schemainclude /etc/ldap/schema/misc.schemainclude /etc/ldap/schema/nis.schemainclude /etc/ldap/schema/openldap.schemainclude /etc/ldap/schema/ppolicy.schemainclude /etc/ldap/schema/kerberos.schema
创建一个临时目录来存放LDIF文件:
mkdir /tmp/ldif_output
现在使用slapcat来转换schema文件:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s \"cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
编辑生成的/tmp/cn\=kerberos.ldif文件,修改如下的属性:
dn: cn=kerberos,cn=schema,cn=config...cn: kerberos
并在文件的结尾移除如下的行:
structuralObjectClass: olcSchemaConfigentryUUID: 18ccd010-746b-102d-9fbe-3760cca765dccreatorsName: cn=configcreateTimestamp: 20090111203515ZentryCSN: 20090111203515.326445Z#000000#000#000000modifiersName: cn=configmodifyTimestamp: 20090111203515Z
属性可能不一样,保证它们被移除就行了。
用ldapadd加载新的schema:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=kerberos.ldif
为krb5principalname添加一个索引:
ldapmodify -x -D cn=admin,cn=config -WEnter LDAP Password:dn: olcDatabase={1}hdb,cn=configadd: olcDbIndexolcDbIndex: krbPrincipalName eq,pres,submodifying entry "olcDatabase={1}hdb,cn=config"
最后,更新访问控制列表(ACL):
ldapmodify -x -D cn=admin,cn=config -WEnter LDAP Password: dn: olcDatabase={1}hdb,cn=configreplace: olcAccessolcAccess: to attrs=userPassword,shadowLastChange,krbPrincipalKey bydn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none-add: olcAccessolcAccess: to dn.base="" by * read-add: olcAccessolcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * readmodifying entry "olcDatabase={1}hdb,cn=config"
好了,现在你的LDAP目录已经准备好为Kerberos principal数据库服务了。
主KDC配置
配置完OpenLDAP之后,应该配置KDC了。
首先,安装必要的包,在终端输入:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
编辑/etc/krb5.conf添加在合适的位置如下选项:
[libdefaults] default_realm = EXAMPLE.COM...[realms] EXAMPLE.COM = { kdc = kdc01.example.com kdc = kdc02.example.com admin_server = kdc01.example.com admin_server = kdc02.example.com default_domain = example.com database_module = openldap_ldapconf }...[domain_realm] .example.com = EXAMPLE.COM...[dbdefaults] ldap_kerberos_container_dn = dc=example,dc=com[dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=example,dc=com" # this object needs to have read rights on # the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=example,dc=com" # this object needs to have read and write rights on # the realm container, principal container and realm sub-trees ldap_service_password_file = /etc/krb5kdc/service.keyfile ldap_servers = ldaps://ldap01.example.com ldaps://ldap02.example.com ldap_conns_per_server = 5 }
tips:为你的网络修改example.com, dc=example,dc=com, cn=admin,dc=example,dc=com,和ldap01.example.com在适当的domain,LDAP object,和LDAP server。
接下来使用kdb5_ldap_util工具创建realm:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com create -subtrees \dc=example,dc=com -r EXAMPLE.COM -s -H ldap://ldap01.example.com
创建一个隐藏的密码用来绑定LDAP服务器。这个密码被用于/etc/krb5.conf文件中的ldap_kdc_dn和ldap_kadmin_dn选项:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
从LDAP服务器复制CA证书:
scp ldap01:/etc/ssl/certs/cacert.pem .sudo cp cacert.pem /etc/ssl/certs
并编辑/etc/ldap/ldap.conf来使用证书:
TLS_CACERT /etc/ssl/certs/cacert.pem
tips:这个证书同样需要复制到Secondary KDC,来允许连接到LDAP服务器使用LDAPS。
现在你可以添加Kerberos实体到LDAP数据库,并且他们会被复制到任何其他被配置过备份的LDAP服务器。使用kadmin.local工具添加一个principal,输入:
sudo kadmin.localAuthenticating as principal root/admin@EXAMPLE.COM with password.kadmin.local: addprinc -x dn="uid=steve,ou=people,dc=example,dc=com" steveWARNING: no policy specified for steve@EXAMPLE.COM; defaulting to no policyEnter password for principal "steve@EXAMPLE.COM": Re-enter password for principal "steve@EXAMPLE.COM": Principal "steve@EXAMPLE.COM" created.
现在, krbPrincipalName, krbPrincipalKey, krbLastPwdChange 和 krbExtraData 属性将被添加到uid=steve,ou=people,dc=example,dc=com用户对象。使用kinit和klist工具测试是否用户真的被签发了证书。
如果用户对象已经被创建,-x dn=”…” 选项需要添加Kerberos的属性。否则新的principal对象会被创建在realm子树。
Secondary KDC配置
配置Secondary KDC使用LDAP备份和配置使用普通Kerberos数据库差不多。
首先,安装必要的包,在终端输入:
sudo apt-get install krb5-kdc krb5-admin-server krb5-kdc-ldap
接着,编辑/etc/krb5.conf使用LDAP备份:
[libdefaults] default_realm = EXAMPLE.COM... [realms] EXAMPLE.COM = { kdc = kdc01.example.com kdc = kdc02.example.com admin_server = kdc01.example.com admin_server = kdc02.example.com default_domain = example.com database_module = openldap_ldapconf }...[domain_realm] .example.com = EXAMPLE.COM...[dbdefaults] ldap_kerberos_container_dn = dc=example,dc=com[dbmodules] openldap_ldapconf = { db_library = kldap ldap_kdc_dn = "cn=admin,dc=example,dc=com" # this object needs to have read rights on # the realm container, principal container and realm sub-trees ldap_kadmind_dn = "cn=admin,dc=example,dc=com" # this object needs to have read and write rights on # the realm container, principal container and realm sub-trees ldap_service_password_file = /etc/krb5kdc/service.keyfile ldap_servers = ldaps://ldap01.example.com ldaps://ldap02.example.com ldap_conns_per_server = 5 }
创建隐藏的LDAP绑定的密码:
sudo kdb5_ldap_util -D cn=admin,dc=example,dc=com stashsrvpw -f \/etc/krb5kdc/service.keyfile cn=admin,dc=example,dc=com
现在,在主KDC复制/etc/krb5kdc/.k5.EXAMPLE.COM Master Key保存到Secondary KDC。保证复制的文件是=通过加密的连接,比如scp或者物理介质。
sudo scp /etc/krb5kdc/.k5.EXAMPLE.COM steve@kdc02.example.com:~sudo mv .k5.EXAMPLE.COM /etc/krb5kdc/
再次强调:用你自己的realm替换EXAMPLE.COM
回到Secondary KDC,启动(或重启)ldap服务器。
sudo service slapd restart
最后,开启krb5-kdc守护进程:
sudo service krb5-kdc start
核实两LDAP服务器(和Kerberos扩展)是同步的。
现在,你有了冗余的KDC和LDAP服务器在你的网络,你应该能够继续进行身份认证,在其中一台LDAP服务器,一台Kerberos服务器,或者一台LDAP和一台Kerberos同时挂掉的情况下。
资源
- Kerberos Admin Guide有一些额外的细节。
- 更多关于kdb5_ldap_util的资料查看Section 5.6和kdb5_ldap_util man page。
- 另一个有用的链接是krb5.conf man page。
- 另外,请看Kerberos and LDAP Ubuntu wiki页面。
转载请注明出处:
http://blog.csdn.net/m1213642578/article/details/52413426
- Ubuntu(14.04)Kerberos LDAP配置
- Hadoop配置LDAP集成Kerberos
- 配置Kerberos+LDAP整合,共用LDAP 数据库
- CDH5.3配置Kerberos+LDAP+Sentry记录
- Ubuntu(14.04)-Kerberos安装和配置
- ubuntu - ldap安装配置
- Kerberos+LDAP认证整合
- Kerberos 配置
- kerberos 配置
- ubuntu下subversion的LDAP验证配置
- Ubuntu LDAP
- 今天主要讲解Kerberos与LDAP
- kerberos整合ldap进行服务器认证
- Single Sign On using LDAP + Kerberos
- PAM SASL LDAP kerberos SSL辨析!
- ubuntu下安装kerberos
- LDAP配置
- 配置 SharePoint Kerberos
- Java中的类型提升与转换
- java事件机制包括三个部分:事件、事件监听器、事件源
- 内存泄漏的检测;leakCanary
- Java中List与Array的转换
- 上传图片并生成缩略图
- Ubuntu(14.04)Kerberos LDAP配置
- 关于checkbox的全选和反选实例
- 【oracle学习】7.plsql光标和例外
- lua 字符串匹配
- 一个漂亮的输出MySql数据库表结构的PHP页面
- React Router 使用教程
- 使用git建立本地仓储管理代码
- android开发中怎么在界面上实现曲线图
- 运维