openldap slapd.conf參數

已安裝系統的 /etc/openldap/slapd.conf 中包含 LDAP 服務器的完整配置文件。在此簡述了其中的各個項並說明了必要的調整。以符號 (#) 爲前綴的項處於非活動狀態。必須取消這個註釋字符才能激活這些項。html

slapd.conf 中的全局指令

1.用於加載schema模式的 Include 指令正則表達式

include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/rfc2307bis.schema
include         /etc/openldap/schema/yast.schema

這是 slapd.conf 中的第一個指令,用於指定組織 LDAP 目錄所依據的模式。core.schema 是必需項。所需的其他模式會追加到此指令中。在包含的 OpenLDAP 文檔中查找信息。數據庫

2.pidfile 和 argsfile緩存

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

這兩個文件包含啓動 slapd 進程所用的 PID(進程 ID)和一些參數。安全

3.訪問控制服務器

# Sample Access Control
#       Allow read access of root DSE
# Allow self write access
#       Allow authenticated users read access
#       Allow anonymous users to authenticate
# access to dn="" by * read
  access to * by self write
              by users read
              by anonymous auth
#
# if no access controls are present, the default is:
#       Allow read by all
#
# rootdn can always write!

此選項涉及如何管理服務器上的 LDAP 目錄的訪問權限。只要在數據庫特定部分沒有聲明任何自定義訪問規則,slapd.conf 的全局部分中的設置將始終有效。這些自定義聲明會重寫全局聲明。如本例所示,全部用戶均可以讀取目錄,但只有管理員 (rootdn) 才能寫入此目錄。LDAP 中的訪問控制管理是一個很是複雜的過程。如下提示會有所幫助:app

  • 每條訪問規則都具備以下結構:ide

    access to <what> by <who> <access>
  • what 是一個佔位符,表示受權訪問的對象或屬性。可使用單獨的規則來明確保護各個目錄分支。還可使用正則表達式經過一條規則處理目錄樹的各個區域。slapd 按照各條規則列在配置文件中的前後順序依次評估它們。較通用的規則應列在較特定的規則以後 - 在評估 slapd 認爲有效的第一條規則以後,隨後的全部項都將被忽略。spa

  • who 肯定應該受權誰來訪問 what 肯定的區域。可使用正則表達式。slapd 一樣會在評估第一條有效規則以後停止對隨後的 who 的評估,因此應將較具體的規則列在較抽象的規則以前。日誌

    表 用戶組及其訪問受權

    標記

    範圍

    *

    全部用戶,無一例外

    anonymous

    未身份驗證「匿名」用戶

    users

    已身份驗證用戶

    self

    與目標對象鏈接的用戶

    dn.regex=<regex>

    與正則表達式匹配的全部用戶


  • access 指定訪問類型。請使用 上表所列的選項。

    表 訪問類型

    標記

    訪問範圍

    none

    無訪問權

    auth

    用於聯繫服務器

    compare

    授予要進行比較訪問的對象

    search

    用於應用搜索過濾器

    read

    讀權限

    write

    寫權限


    slapd 會將客戶機請求的訪問權限與 slapd.conf 中授予的權限進行對比。若是規則容許的權限等於或高於請求的權限,則能夠授予客戶機權限。若是客戶機請求的權限高於規則中聲明的權限,便會拒絕授予權限。

以下一個簡單示例,使用正則表達式能夠隨意指定這樣的簡單訪問控制。

access to  dn.regex="ou=([^,]+),dc=example,dc=com" 
by dn.regex="cn=Administrator,ou=$1,dc=example,dc=com" write  
by user read 
by * none

此規則聲明只有各個 ou 項的管理員纔有權寫入他/她所管理的項。其餘全部經過身份驗證的用戶只有讀權限,其他人沒有任何權限。

若是沒有   access to 規則或匹配的   by 指令,則拒絕訪問。只有通過顯式聲明才能授予訪問權限。若是根本沒有聲明任何規則,默認規則是管理員具備寫權限,其餘全部用戶都具備讀權限。 

除了可使用中央服務器配置文件 (slapd.conf) 管理訪問權限以外,還可使用訪問控制信息 (ACI)。ACI 容許儲存 LDAP 樹中各個對象的訪問信息。

slapd.conf 中的數據庫特定指令

特定於數據庫的指令

database bdb1
suffix "dc=example,dc=com"2 
checkpoint      1024    53
cachesize       100004
rootdn "cn=Administrator,dc=example,dc=com"5 
# Cleartext passwords, especially for the rootdn, should 
# be avoided.  See slappasswd(8) and slapd.conf(5) for details. 
# Use of strong authentication encouraged.
rootpw secret6 
# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd/tools. Mode 700 recommended. 
directory /var/lib/ldap7 
# Indices to maintain 
index   objectClass     eq8
overlay ppolicy9
ppolicy_default "cn=Default Password Policy,dc=example,dc=com"
ppolicy_hash_cleartext
ppolicy_use_lockout

1

數據庫類型(本案例中爲 Berkeley)是在本部分的第一行設置的(請參見例 36.6 「slapd.conf:特定於數據庫的指令」)。

2

suffix 肯定服務器應負責的 LDAP 樹的部分。

3

checkpoint 肯定寫入真實數據庫前保留在事務日誌中的數據量(以 KB 爲單位)以及兩次寫操做之間的時間(以分鐘爲單位)。

4

cachesize 設置保留在數據庫緩存中的對象數。

5

rootdn 肯定擁有此服務器的管理員權限的用戶。在此聲明的用戶沒必要擁有 LDAP 項,也沒必要是普通用戶。

6

rootpw 設置管理員密碼。在此沒必要使用 secret,能夠輸入 slappasswd 建立的管理員密碼的哈希值。

7

directory 指令代表數據庫目錄儲存在服務器的文件系統中的哪一個目錄中。

8

最後一個指令 index objectClass eq 指示對全部對象類的索引進行維護。能夠在此根據經驗添加用戶最常搜索的屬性。

9

overlay ppolicy 添加一個密碼控制機制層。ppolicy_default 指定給定用戶項上未設置特定策略時要使用的 pwdPolicy 對象的 DN。若是對某項無特定策略,且未給定默認值,則不會強加任何策略。ppolicy_hash_cleartext 指定顯示在添加和修改請求中的明文密碼在儲存到數據庫中以前會執行哈希運算。使用此選項時,建議拒絕全部目錄用戶對 userPassword 屬性的比較、搜索和讀訪問,由於 ppolicy_hash_cleartext 違反了 X.500/LDAP 信息模型。當某客戶機嘗試鏈接鎖定賬戶時,ppolicy_use_lockout 會發送一個特定的錯誤代碼。若是您的站點對安全問題敏感,請禁用此選項,由於錯誤代碼會向攻擊者提供有用的信息。

在此爲數據庫自定義的 Access 規則將取代全局 Access 規則




相關文章
相關標籤/搜索