ldap+kerberos集成

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
ldap+kerberos集成
ldap+kerberos集成
ldap+kerberos集成
b) 創建Container
ldap+kerberos集成
ldap+kerberos集成
ldap+kerberos集成

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
http://blog.51cto.com/10788142/2167924
2.2 更新後配置文件
http://blog.51cto.com/10788142/2167927

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章