准备
- 根据《CentOS安装部署OpenLDAP》部署好OpenLDAP
- 根据《CentOS安装部署KDC集群》安装好kerberos服务端软件
sudo yum install krb5-server krb5-libs krb5-auth-dialog -y
sudo yum install krb5-server-ldap -y
配置OpenLDAP
引入kerberos.schema
cp /usr/share/doc/krb5-server-ldap-1.10.3/kerberos.schema /etc/openldap/schema/
cp /usr/share/doc/krb5-server-ldap-1.10.3/kerberos.ldif /etc/openldap/schema/
vim slapd.conf
# 添加以下内容
include /etc/openldap/schema/kerberos.schema
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
更新slapd.d
slaptest -f ~/openldap/slapd.conf -F /etc/openldap/slapd.d
chown ldap:ldap /etc/openldap/slapd.d/cn=config/cn=schema/cn={0}kerberos.ldif
重启OpenLDAP
sudo service slapd restart
创建kerberos用户
想好krb5kdc和kadmind服务分别对应的dn是cn= krb5kdc,cn=admin,dc=test,dc=com
和cn= kadmind,cn=admin,dc=test,dc=com
在phpldapadmin上创建
创建用户组
用户组为:cn=admin,dc=test,dc=com
在test.com条目下点击“创建一个子条目”
选择Posix Group创建用户组
创建用户
用户分别为cn=krb5kdc,cn=admin,dc=test,dc=com
和cn=kadmind,cn=admin,dc=test,dc=com
在cn=admin,dc=test,dc=com
条目下创建子条目
设置权限
修改数据库管理员(可忽略)
编写LDIF
vim chdbroot.ldif
# 添加内容如下
dn: olcDatabase={2}bdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=test,dc=com
执行LDIF
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdbroot.ldif
修改数据库ACL
编写LDIF
vim chdbacl.ldif
# 添加内容如下
dn: olcDatabase={2}bdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to dn.subtree="cn=TEST.COM,cn=krbContainer,dc=test,dc=com"
by dn.exact="cn=krb5kdc,cn=admin,dc=test,dc=com" write
by dn.exact="cn=kadmind,cn=admin,dc=test,dc=com" write
by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by * read
执行LDIF
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdbroot.ldif
Kerberos服务端配置
保存密码
kdb5_ldap_util stashsrvpw -f /var/kerberos/krb5kdc/admin.stash "cn=krb5kdc,cn=admin,dc=test,dc=com"
kdb5_ldap_util stashsrvpw -f /var/kerberos/krb5kdc/admin.stash "cn=kadmind,cn=admin,dc=test,dc=com"
编写kdc.conf
vim /var/kerberos/krb5kdc/kdc.conf
# 配置如下
[kdcdefaults]
kdc_ports = 88
kdc_tcp_ports = 88
[realms]
TEST.COM = {
#master_key_type = aes256-cts
acl_file = /var/kerberos/krb5kdc/kadm5.acl
dict_file = /usr/share/dict/words
admin_keytab = /var/kerberos/krb5kdc/kadm5.keytab
supported_enctypes = aes256-cts:normal aes128-cts:normal des3-hmac-sha1:normal arcfour-hmac:normal des-hmac-sha1:normal des-cbc-md5:normal des-cbc-crc:normal
database_module = LDAP #对应dbmodules下的模块名
}
[dbmodules]
LDAP = {
db_library = kldap #指定以ldap为数据库
ldap_kerberos_container_dn = cn=krbContainer,dc=test,dc=com #kerberos容器的dn
ldap_kdc_dn = cn=krb5kdc,cn=admin,dc=test,dc=com #krb5kdc服务对应的dn
ldap_kadmind_dn = cn=kadmind,cn=admin,dc=test,dc=com #kadmind服务对应的dn
ldap_service_password_file = /var/kerberos/krb5kdc/admin.stash #krb5dkc和kadmind服务密码保存的文件
ldap_servers = ldapi:///
}
初始化数据库
kdb5_ldap_util -D cn=admin,dc=test,dc=com -H ldapi:/// create -s -r TEST.COM
如果没有container,会自动创建container,realm对应的entry也会自动创建,登录phpldapadmin,可以看到这些
启动服务
sudo krb5kdc -r TEST.COM
sudo kadmind -r TEST.COM