OpenLDAP Proxy -- slapd.conf

  sonic0002        2017-10-29 04:01:39       21,065        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

OpenLDAP Proxy入門文章中,我們提到slapd.conf是設定檔,它告訴slapd服務該做什麼。除此之外,還有一種動態配置slapd的方法,其配置儲存在LDIF資料庫中。未來,LDIF資料庫將成為配置slapd的唯一方式,舊式的slapd.conf已不建議使用。可以使用slapdtest命令將slapd.conf轉換為LDIF格式。

slapdtest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d

為方便說明,我們將使用slapd.conf來解釋如何將slapd服務配置為OpenLDAP Proxy。我們將在此解釋已配置meta後端的配置。ldap後端配置與meta後端配置類似,只有一些細微的差別。

以下是一個可運作的OpenLDAP Proxy配置範例。

#
# 詳細配置選項,請參閱slapd.conf(5)。
# 此檔案不應允許世界可讀。
#

# 包含綱要
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.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/collective.schema


# 允許LDAPv2客戶端連線。這不是預設值。
allow bind_v2

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

# 載入動態後端模組
# - modulepath是依賴架構的值(32/64位元系統)
# - back_sql.la覆蓋層需要openldap-server-sql套件
# - dyngroup.la和dynlist.la不能同時使用

modulepath  /usr/lib/openldap
modulepath  /usr/lib64/openldap
moduleload  back_meta
moduleload  rwm

# 接下來三行允許使用TLS來加密使用虛擬測試憑證的連線,您可以通過執行來生成。
TLSCACertificateFile /root/openldap_proxy/data/certs/ldap.crt
TLSCertificateFile /root/openldap_proxy/data/certs/ldap.crt
TLSCertificateKeyFile /root/openldap_proxy/data/certs/ldap.key

# 記錄層級
loglevel 256

#######################################################################
# 資料庫定義
#######################################################################

#### 資料庫定義 #########################################

database meta
suffix   "dc=test,dc=com"
rootdn   "cn=admin,dc=test,dc=com"
rootpw   "password"

uri           "ldap://192.168.56.100/dc=test,dc=com"
readonly      yes
lastmod       off
suffixmassage "dc=test,dc=com" "dc=ou1,dc=test,dc=com"

uri "ldap://192.168.56.101/dc=test,dc=com"
readonly      yes
lastmod       off
suffixmassage "dc=test,dc=com" "dc=ou2,dc=test,dc=com"
idassert-bind bindmethod=simple
   binddn="cn=admin,dc=test,dc=com"
   credentials="password"
   mode=none
   flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=admin,dc=test,dc=com"

overlay       rwm
rwm-map       attribute   uid  sAMAccountName

這是一個標準的slapd.conf檔案,其中包含綱要的宣告和其他一般設定。我們只關注與Proxy相關的設定。

moduleload  back_meta

這載入meta後端模組,以便可以使用meta後端。

database meta

這宣告LDAP伺服器的後端,在本例中為meta。也可以設定為ldap。

suffix   "dc=test,dc=com"

這宣告LDAP客戶端可以用來搜尋LDAP Proxy的虛擬命名內容(基底)。它可以是任何符合基底語法的有意義的值。

rootdn   "cn=admin,dc=test,dc=com"
rootpw   "password"

這兩個項目宣告LDAP客戶端可以用來驗證LDAP Proxy的虛擬bind dn和密碼。當遠端LDAP伺服器需要客戶端bind時,這些很有用,因為我們需要告訴Proxy誰可以驗證到遠端LDAP伺服器。

uri           "ldap://192.168.56.100/dc=test,dc=com"

這開始一個新的遠端LDAP伺服器項目。語法應為"://[:]/<vritual-naming-context/suffix>"。uri結尾的virtual-naming-context通常與database meta之後宣告的suffix相同。

每個新的遠端LDAP伺服器都應該使用單獨的uri。

suffixmassage "dc=test,dc=com" "dc=ou1,dc=test,dc=com"

這宣告Proxy中定義的suffix/base與遠端LDAP伺服器中真實base之間的映射,以便在客戶端查詢進來時,它可以將查詢重新導向到遠端LDAP伺服器真實的搜尋基底。左邊部分是virtual-naming-context,通常與database meta之後宣告的suffix相同。右邊部分是遠端LDAP伺服器中真實的搜尋基底。

這在ldap後端中不可用。

readonly      yes

這宣告LDAP客戶端只能查詢遠端LDAP伺服器,但不能更新遠端LDAP伺服器。當使用LDAP伺服器作為Proxy時,這通常是我們會做的事情。

lastmod       off

這也表示不能修改遠端伺服器。預設值為off,這將不允许修改。

idassert-bind bindmethod=simple
   binddn="cn=admin,dc=test,dc=com"
   credentials="password"
   mode=none
   flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=admin,dc=test,dc=com"

當遠端LDAP伺服器需要客戶端驗證才能查詢伺服器時,這些是必要的。支援幾種bindmethod。一種是simple,它需要正常的dn和密碼進行驗證。binddn和憑證應由真實的LDAP伺服器提供。

此外,authzFrom宣告哪些本地識別可以訪問身份斷言功能。在本例中,我們定義了cn=admin,dc=test,dc=com可以訪問它。這是Proxy中定義的rootdn。

overlay           rwm
rwm-map       attribute   uid  sAMAccountName

這定義了Proxy伺服器向客戶端公開的屬性名稱與遠端LDAP伺服器提供的真實屬性名稱之間的映射。當不同的遠端LDAP伺服器可能有不同的屬性名稱但意思相同時,這很有用。例如,在Linux LDAP伺服器中,uid表示使用者ID,而在Windows AD中,相同的事物可能由sAMAccountName表示。或者當需要自定義屬性時,它們也很有用。

在下一篇文章中,我們將介紹如何使用slapd.conf設定LDAP Proxy。

OPENLDAP  OPENLDAP PROXY  SLAPD  SLAPD.CONF 

       

  RELATED


  0 COMMENT


No comment for this article.



  RANDOM FUN

We are Twins

This scene happens at the Roxbury theme one night back in 90's. The original video can be found at YouTube.