Kerberos+LDAP集成安装说明
一、 安装Openldap
使用附件提供的openldap-2.4.46.tar解压缩,直接进入解压后的目录openldap-2.4.46,执行make install命令安装。
yum install libdb-cxx libdb-cxx-devel gcc-plugin-devel -y
yum install libtool-ltdl-devel -y
tar zxvf openldap-2.4.46.tar
cd openldap-2.4.46
./configure
make
make depend
make install
注:该文件已经完成最初的编译和检查,直接安装即可,要求有对应依赖工具gcc和Berkeley DB代码库等,如遇到问题可参考常见问题解决方法
二、 配置Openldap
在openldap的2.4版本之后,不再使用.conf文件作为主流配置方式,使用.ldif数据库文件作为配置文件。即是配置也是配置加载后生成的数据库文件格式,我们使用openldap组织推荐的此种格式来进行配置。
2.1. 删除无用配置文件
安装完成后,文件路径为/usr/local/etc/openldap,删除过时配置文件.conf
rm –rf /usr/local/etc/openldap/.conf
rm –rf /usr/local/etc/openldap/*.default
2.2. 更新配置文件
也可以用附件中的文件直接替换。
vi /usr/local/etc/openldap/slapd.ldif
在包含schema处增加如下字段:
include: file:///usr/local/etc/openldap/schema/cosine.ldif
include: file:///usr/local/etc/openldap/schema/duaconf.ldif
include: file:///usr/local/etc/openldap/schema/dyngroup.ldif
include: file:///usr/local/etc/openldap/schema/inetorgperson.ldif
include: file:///usr/local/etc/openldap/schema/java.ldif
include: file:///usr/local/etc/openldap/schema/misc.ldif
include: file:///usr/local/etc/openldap/schema/nis.ldif
include: file:///usr/local/etc/openldap/schema/openldap.ldif
include: file:///usr/local/etc/openldap/schema/ppolicy.ldif
include: file:///usr/local/etc/openldap/schema/collective.ldif
更新olcSuffix/ olcRootDN / olcRootPW为需要的值。
olcSuffix: dc=test,dc=com
olcRootDN: cn=app,dc=test,dc=com
olcRootPW: 123456
2.3. 加载配置文件初始化ldap数据库
/usr/local/sbin/slapadd -n 0 -F /usr/local/etc/openldap -l /usr/local/etc/openldap/slapd.ldif
2.4. 启动slapd服务进程
/usr/local/libexec/slapd -F /usr/local/etc/openldap
2.5. 加载已有的ldap数据对象
a) 创建RootDN及BaseDN对象,否则无法通过ldap客户端使用RootDN进行基本操作。
b) 创建rootdn.ldif,注意格式,每行末尾无空格,“:”后有空格。不同对象间用无空格空行间隔。
vi /usr/local/etc/openldap/rootdn.ldif
dn: dc=test,dc=com
objectclass: dcObject
objectclass: organization
o: test
dc: test
dn: cn=app,dc=test,dc=com
objectclass: organizationalRole
cn: app
加载对象
ldapadd -x -D "cn=app,dc=test,dc=com" -W -f /usr/local/etc/openldap/rootdn.ldif
注:是标准ldap规范的工具ldapadd,不是openldap工具slapadd。
2.6. 增加rootDN全局权限
修改ldap全局配置文件/usr/local/etc/openldap/cn=config/olcDatabase\={0}config.ldif增加rootDN创建库权限
在olcRootDN: cn=config增加
olcRootRW: 123456
更改完毕需要重启slapd服务
ps -aux | grep slapd
kill -9 $PID
/usr/local/libexec/slapd -F /usr/local/etc/openldap
2.7. 加载kerberos对应schema,已便后续集成kerberos。
ldapadd -x -D "cn=config" -w 123456 -f /root/ldap/cn\=kerberos.ldif
注:【cn=kerberos.ldif】见附件,无kerberos的schema,后续解析kerberos配置文件创建ldap数据库会无法解析语法。导致创建kerberos的数据库失败。
三、 安装初始化Kerberos
3.1. 安装kerberos服务及客户端
yum install krb5-server krb5-libs krb5-auth-dialog krb5-workstation krb5-devel -y
注:客户机仅需要krb5-libs krb5-workstation krb5-devel
3.2. Server端配置更新
vi /var/kerberos/krb5kdc/kdc.conf
[realms]字段,TEST.COM设置为需要的值。
TEST.COM = {
……
}
3.3. Client端配置更新
vi /etc/krb5.conf
更改[realms]和[domain_realm]为需要的域名。
#Configuration snippets may be placed in this directory as well
includedir /etc/krb5.conf.d/
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
kinit={
renewable=true
forwardable=true
}
[libdefaults]
default_realm = TEST.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
renewable=true
udp_preference_limit=1
[realms]
TEST.COM = {
kdc = 192.168.xxx.xxx:88
admin_server = 192.168.xxx.xx:749
}
[domain_realm]
.test.com = TEST.COM
test.com = TEST.COM
kdb5_util create -r TEST.COM -s
systemctl restart krb5kdc
systemctl restart kadmin
四、 配置Kerberos使用LDAP数据库
4.1. 生成LDAP数据库RootDN的密码文件
yum install krb5-server-ldap –y
kdb5_ldap_util -D cn=app,dc=test,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=app,dc=test,dc=com
4.2. 使用客户端增加kerberos在ldap数据库的container DN。
客户端推荐 Apache Directory Studio
a) 连接LDAP
b) 创建Container
4.3. 更新server配置
vi /var/kerberos/krb5kdc/kdc.conf
[realms]字段,TEST.COM设置为需要的值,增加database_module = openldap_ldapconf配置。
TEST.COM = {
……
database_module = openldap_ldapconf
}
增加[dbdefaults]和[dbdefaults]字段
[dbdefaults]
ldap_kerberos_container_dn = cn=Krb,dc=test,dc=com
[dbmodules]
openldap_ldapconf = {
db_library = kldap
ldap_servers = ldap://192.168.xxx.xxx
ldap_kerberos_container_dn = cn=Krb,dc=test,dc=com
ldap_kdc_dn = cn=app,dc=test,dc=com
ldap_kadmind_dn = cn=app,dc=test,dc=com
ldap_service_password_file = /etc/krb5.ldap
ldap_conns_per_server = 5
}
注:ldap_kerberos_container_dn字段为kerberos在ldap数据库的container。
ldap_kdc_dn 和 ldap_kadmind_dn 分别对应 Kerberos 访问 LDAP 数据库时的服务和管理帐号,为方便管理,都是用rootdn。
4.4. 创建kerberos的LDAP数据库
kdb5_ldap_util -D cn=app,dc=test,dc=com -w 123456 -H ldap://192.168.xxx.xxx:389 create -r TEST.COM -s
4.5. 启动kerberos服务
systemctl restart krb5kdc
systemctl restart kadmin
五、 使用和维护
5.1. 创建用户
在kerberos服务所在主机执行kadmin.local进入kerberos管理员模式
使用add_principal user1/[email protected],输入密码确认密码,完成用户添加。
5.2. 查看和删除用户
在客户端刷新数据,点击用户,即可查看详细信息。
在客户端刷新数据,右键删除,即可删除该用户。
kadmin.local
list_principals
六、 常见问题解决方法
6.1. 自行编译失败
安装编译工具及依赖库。包括gcc,Berkeley DB依赖库等。
yum install libdb.x86_64 libdb-cxx.x86_64 libdb-cxx-devel.x86_64 gcc-plugin-devel.x86_64 -y
yum install libtool-ltdl-devel
6.2. 安装异常如何删除重新安装
删除安装目录下所有cn开头的文件、文件夹即可。本环境为/usr/local/etc/openldap
6.3. 使用slapadd初始化异常
/usr/local/sbin/slapadd -n 0 -F /usr/local/etc/openldap -l /usr/local/etc/openldap/slapd.ldif
[-f configfile] [-F configdir]
-n databasenumber -n 0 可避免内存问题。
6.4. 使用ldapadd添加记录异常
检查命令格式是否正确
ldapadd -x -D "cn=app,dc=test,dc=com" -W -f /usr/local/etc/openldap/app.ldif
-x Simple authentication
-D binddn bind DN
-W prompt for bind password
-f file read operations from `file'
检查ldif格式是否正确,
详细格式信息:http://www.openldap.org/doc/admin24/dbtools.html#The LDIF text entry format
6.5. 使用kdb5_ldap_util创建kerberos数据库失败
a) 检查命令格式是否正确。
kdb5_ldap_util -D cn=app,dc=test,dc=com -w 123456 -H ldap://192.168.20.221:389 create -r TEST.COM -s
[-D user_dn [-w passwd]] [-H ldapuri] [-r realm] realm必须使用大写字母!
b) 确认-D后的DN是有权限进行ldap数据库写入的账户,最好使用rootDN。
c) 如果提示非法语法格式,请确认Kerberos的schema已正确导入。可以
ll /usr/local/etc/openldap/cn=config/cn=schema查看目前导入的schema。
加载cn=kerberos.ldif失败
不能使用软件安装后自带的kerberos.ldif,需要使用附件提供的,或者自己手动生成
安装软件yum install krb5-server-ldap –y,获取kerberos.schema。
移动到目的目录
mv /usr/share/doc/krb5-server-ldap-1.15.1/kerberos.schema /usr/local/etc/openldap/schema/kerberos.schema
手动创建文件schema_convert.conf用来生成kerberos.ldif,文件内容如下:
include /usr/local/etc/openldap/schema/core.schema
include /usr/local/etc/openldap/schema/collective.schema
include /usr/local/etc/openldap/schema/corba.schema
include /usr/local/etc/openldap/schema/cosine.schema
include /usr/local/etc/openldap/schema/duaconf.schema
include /usr/local/etc/openldap/schema/dyngroup.schema
include /usr/local/etc/openldap/schema/inetorgperson.schema
include /usr/local/etc/openldap/schema/java.schema
include /usr/local/etc/openldap/schema/misc.schema
include /usr/local/etc/openldap/schema/nis.schema
include /usr/local/etc/openldap/schema/openldap.schema
include /usr/local/etc/openldap/schema/ppolicy.schema
include /usr/local/etc/openldap/schema/kerberos.schema
使用命令生成kerberos.ldif
slapcat -f schema_convert.conf -F /tmp/ -n 0 -s "cn={12}kerberos,cn=schema,cn=config" > /tmp/cn=kerberos.ldif
并注释掉如下属性
#structuralObjectClass: olcSchemaConfig
#entryUUID: 02b11972-d310-1037-80c6-774a6a5fe133
#creatorsName: cn=config
#createTimestamp: 20180413024211Z
#entryCSN: 20180413024211.191038Z#000000#000#000000
#modifiersName: cn=config
#modifyTimestamp: 20180413024211Z
附件文档
修改后的kerberos.ldif
https://blog.51cto.com/10788142/2167924
2.2 更新后配置文件
https://blog.51cto.com/10788142/2167927