Openldap集成Kerberos


1. 概述

  openldap集成kerberos,有兩種,一是openldap和kerberos各自擁有個人的數據庫,一是openldap和kerberos共用一個數據庫。

  以下操作是在https://www.cnblogs.com/swordfall/p/12009716.html Kerberos基本原理、安裝部署及用法 和https://www.cnblogs.com/swordfall/p/12119010.html Openldap安裝部署 基礎上實施的。

2. 不共用LDAP數據庫的集成方式

2.1. 創建LDAP管理員用戶

  為了使kerberos能夠綁定到openldap服務器,需創建一個管理員用戶

  在kdc服務器執行如下操作:

kadmin.local -q "addprinc ldapadmin@EXAMPLE.COM"

2.2. 添加principal

  在kdc服務器執行如下操作:

kadmin.local -q "addprinc -randkey ldap/bridge1@EXAMPLE.COM"

2.3. 生成keytab文件

  在kdc服務器執行如下操作:

kadmin.local -q "ktadd -k /etc/openldap/ldap.keytab ldap/bridge1@EXAMPLE.COM"

2.4. 賦予keytab文件權限

  把生成的ldap.keytab文件轉移到openldap服務器節點上,並在openldap服務器節點執行如下操作:

chown ldap:ldap /etc/openldap/ldap.keytab && chmod 640 /etc/openldap/ldap.keytab

2.5. 驗證keytab文件

  使用ldapadmin用戶測試,輸入密碼沒有報錯說明已通過kerberos身份驗證

kinit ldapadmin

2.6. 增加KRB5_KTNAME配置

  在openldap服務器節點,確保LDAP啟動時使用上一步創建的keytab文件,在/etc/sysconfig/sladp文件中增加如下內容:

KRB5_KTNAME=/etc/openldap/ldap.keytab

  然后重啟服務

systemctl restart slapd

  至此,LDAP與Kerberos已完成集成。

3. 共用LDAP數據庫的集成方式

  kerberos相關的數據也需要存儲在某個數據庫中,在這里我們選擇使用LDAP作為其數據庫,目的是為了數據備份的方便(只需要統一備份LDAP數據庫即可)。如果需要使用kerberos自身的數據庫,則需要將下面的kdb5_ldap_util命令替換為kdb5_util。

3.1. ldap加載kerberos對應schema

  Kerberos.schema是在krb5-server-ldap安裝之后才出現的,不能使用該軟件安裝后自帶的kerberos.ldif,需要手動生成。安裝軟件krb5-server-ldap,獲取kerberos.schema。

  在openldap服務器節點執行如下命令:

yum -y install krb5-server-ldap

   移動kerberos.schema到目的目錄

mv /usr/share/doc/krb5-server-ldap-1.15.1/Kerberos.schema /etc/openldap/schema

  手動創建文件schema_convert.conf用來生成kerberos.ldif,文件內容如下:

# vim schema_convert.conf

include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include /etc/openldap/schema/kerberos.schema

  使用命令生成kerberos.ldif

slapcat -f schema_convert.conf -F /root/kerberos/ -n 0 -s "cn={13}kerberos,cn=schema,cn=config"

cp cn\=config/cn\=schema/cn\=\{12\}kerberos.ldif /root/kerberos/Kerberos.ldif

  修改生成的kerberos.ldif,把dn: cn={12}kerberos改為dn: cn={13}kerberos,cn=schema,cn=config,把cn: {12}kerberos改為cn: {13}kerberos

  注:

    這里的cn={13}kerberos是因為schema_convert.conf文件里面kerberos排行13,故kerberos是作為第13個導入到openldap里面的。

3.2. 生成LDAP數據庫RootDN的密碼文件

kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 stashsrvpw -f /etc/krb5.ldap cn=admin,dc=node3,dc=com

3.3. 增加kerberos在ldap數據庫的container DN

  增加一個kerberos.ldif文件

vim kerberos.ldif 

dn: cn=kerberos,dc=node3,dc=com
cn: kerberos
objectClass: organizationalRole

  執行命令,添加cn=Kerberos,dc=node3,dc=com節點

 ldapadd -x -D cn=admin,dc=node3,dc=com -W -f kerberos.ldif

3.4. 更新kerberos的server配置

  [realms]字段,EXAMPLE.COM設置為需要的值,增加database_module=openldap_ldapconf配置

# vim  /var/kerberos/krb5kdc/kdc.conf

[realms]
 EXAMPLE.COM = {
  ……
  database_module = openldap_ldapconf
 }

[dbdefaults]
 ldap_kerberos_container_dn = cn=kerberos,dc=node3,dc=com

[dbmodules]
 openldap_ldapconf = {
  db_library = kldap
  ldap_servers = ldapi://192.168.1.107:389
  ldap_kerberos_container_dn = cn=kerberos,dc=node3,dc=com
  ldap_kdc_dn = cn=admin,dc=node3,dc=com
  ldap_kadmind_dn = cn=admin,dc=node3,dc=com
  ldap_service_password_file = /etc/krb5.ldap
  ldap_conns_per_server = 5
 }

  注:

  ldap_kerberos_container_dc字段為kerberos在ldap數據庫的container。ldap_kdc_dn和ldap_kadmind_dc分別對應kerberos訪問LDAP數據庫時的服務和管理賬號,為方便管理,都是用rootdn。

3.5. 創建kerberos的LDAP數據庫

kdb5_ldap_util -D cn=admin,dc=node3,dc=com -w 123456 -H ldap://192.168.1.107:389 create -r EXAMPLE.COM -s

3.6. 重啟kerberos服務

  在kdc服務器節點執行如下操作:

systemctl restart krb5kdc
systemctl restart kadmin

4. 參考資料

https://blog.51cto.com/10788142/2167923

https://www.cnblogs.com/swordfall/p/12009716.html Kerberos基本原理、安裝部署及用法 

https://www.cnblogs.com/swordfall/p/12119010.html Openldap安裝部署 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM