:::
hirokofan - Linux雜記 | 2020-02-29 | 人氣:72

OpenLDAP設定筆記

環境:CentOS 7

大綱

  • 安裝LDAP相關服務
  • 設定檔結構
  • ldapmodify的ldif檔注意事項
  • 基本設定流程
    • ldap.conf
    • ldappasswd
    • db.ldif ({2}hdb)
    • monitor.ldif ({1}monitor)
    • 設定DB_CONFIG
    • LDAP schemas
    • base.ldif
    • acl.ldif ({2}hdb)
    • 禁止匿名訪問
  • 安裝phpldapadmin
  • 參考資料

 

安裝LDAP相關服務
安裝所需軟體
yum -y install openldap-clients openldap-servers


啟動服務

systemctl start slapd
systemctl enable slapd

 

設定rsyslog,將LDAP log記錄在/var/log/ldap.log

echo 'local4.* /var/log/ldap.log' >> /etc/rsyslog.conf
systemctl restart rsyslog

 

設定檔結構

OpenLDAP的檔案在以下兩個目錄中

  • /var/lib/ldap/
  • /etc/openldap/

其中/var/lib/ldap/下的檔案是LDAP的資料庫,整個設定過程中只有設定DB_CONFIG會來到這裡。主要設定是在/etc/openldap/,其中的設定檔又分成大兩部分,一個是ldap.conf,一個是slapd.conf資料夾。

ldap.conf 影響的是 ldapsearch、 ldapadd、 ldapdelete、 ldapmodify等客戶端增刪查改指令。

slapd.conf資料夾裡面的設定檔是ldap服務(slapd)設定的抄本,這些檔案的第一行都有禁止修改的警告,如果要修改設定必須使用ldapmodify。可以透過這幾個檔案的內容來確認設定或ldapmodify是否成功。

 

ldapmodify的ldif檔注意事項

slapd設定必須使用ldapmodify修改,先編寫好要修改的內容存成xxxx.ldif,然後執行ldapmodify -Y EXTERNAL -H ldapi:/// -f xxxx.ldif。假設2.3版的slapd.conf內容如下

access to attrs=userPassword,shadowLastChange
        by dn="cn=admin,dc=example,dc=com" write
        by anonymous auth
        by self write
        by * none
access to dn.base="" by * read
access to *
        by dn="cn=admin,dc=example,dc=com" write
        by * none

寫成ldif會變成

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * none

以下幾點要注意,格式不正確就會報錯

  • 在:後面要有一個空格,每行結尾不能有空格
  • dn: olcDatabase={2}hdb是要設定的項目,設好可以去/etc/openlad/slapd.conf/cn=config/看對應的設定檔是否更新
  • add: olcAccess是因為原本在{2}hdb沒有olcAccess設定要用新增,如果已經有要改成replace,刪除為delete
  • 要增加(修改)的olcAccess設定有三項,用{0}{1}{2}分別建立,每一項的設定必須寫在一行裡面。

 

基本設定流程
  • ldap.conf

編輯ldap.conf設好BASE及URI即可。

 

  • ldappasswd

執行ldappasswd,輸入密碼之後會出現{SSHA}XXXXXXXXXXXXXXXXXXXXXX,把這段複製起來下面的步驟會用到。

  • db.ldif ({2}hdb)

新增db.ldif

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=example,dc=com 

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}XXXXXXXXXXXXXXXXXXXX     

 導入設定

ldapmodify -Y EXTERNAL -H ldapi:/// -f db.ldif

 

  • monitor.ldif ({1}monitor)

新增monitor.ldif

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=admin,dc=example,dc=com" read by * none

導入設定

ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif

 

  • 設定DB_CONFIG

複製資料庫設定

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG

 

  • LDAP schemas

匯入schema

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

 

  • base.ldif

這部份的工作可以用phpldapadmin處理,略

  • acl.ldif ({2}hdb)

新增acl.ldif (因{2}hdb還沒有olcAccess設定,在這裡要用add,以後修改要改成replace)

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=admin,dc=example,dc=com" write by * none

導入設定

ldapmodify -Y EXTERNAL -H ldapi:/// -f acl.ldif

 

  • 禁止匿名訪問

導入設定

ldapmodify -Q -Y EXTERNAL -H ldapi:/// <<EOF
dn: cn=config
changetype: modify
add: olcDisallows
olcDisallows: bind_anon
EOF
 
ldapmodify -Q -Y EXTERNAL -H ldapi:/// <<EOF
dn: olcDatabase={-1}frontend,cn=config
changetype: modify
add: olcRequires
olcRequires: authc
EOF

 

這裡會分別寫入兩個設定檔,第一個是/etc/openldap/slapd.conf/cn=config.ldif新增olcDisallows: bind_anon,第二個是/etc/openldap/slapd.conf/cn=config/olcDatabase={-1}frontend.ldif新增olcRequires: authc

 

安裝phpldapadmin

安裝

yum install epel-release
yum install phpldapadmin

 

  • 設定/etc/httpd/conf.d/phpldapadmin.conf允許連線的IP範圍
  • 設定/etc/phpldapadmin/config.php,將

$servers->setValue('login','attr','uid'); 

改成

$servers->setValue('login','attr','dn');
 

參考資料

:::

萌典查詢

版面風格


(共 7 個樣板佈景)

跑馬燈

  • 跑馬燈內容
  • 這是跑馬燈內容
  • 這真的是跑馬燈內容

精美選單