天天看點

Centos 安裝openldap,phpldapadmin,apache

伺服器版本:CentOS Linux release 7.6.1810 (Core)

openldap版本:2.4.44

apache版本:2.4.6

phpldapadmin版本:1.2.5

一、準備工作

1.上傳軟體包到伺服器/usr/local/software路徑(路徑可自定義)

2.關閉防火牆,關閉selinux

臨時并永久關閉防火牆
systemctl stop firewalld && systemctl disable firewalld
臨時并永久關閉防火牆
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config           

3.軟體清單清單

openldap
    compat-openldap-2.3.43-5.el7.x86_64.rpm
    cyrus-sasl-devel-2.1.26-23.el7.x86_64.rpm
    openldap-2.4.44-24.el7_9.x86_64.rpm
    openldap-clients-2.4.44-24.el7_9.x86_64.rpm
    openldap-devel-2.4.44-24.el7_9.x86_64.rpm
    openldap-servers-2.4.44-24.el7_9.x86_64.rpm
epel-release
    epel-release-7-11.noarch.rpm
phpldapadmin和apache
    apr-1.4.8-7.el7.x86_64.rpm
    apr-util-1.5.2-6.el7.x86_64.rpm
    caddy-1.0.3-1.el7.x86_64.rpm
    httpd-2.4.6-97.el7.centos.1.x86_64.rpm
    httpd-tools-2.4.6-97.el7.centos.1.x86_64.rpm
    libzip-0.10.1-8.el7.x86_64.rpm
    mailcap-2.1.41-2.el7.noarch.rpm
    php-5.4.16-48.el7.x86_64.rpm
    php-cli-5.4.16-48.el7.x86_64.rpm
    php-common-5.4.16-48.el7.x86_64.rpm
    php-ldap-5.4.16-48.el7.x86_64.rpm
    phpldapadmin-1.2.5-1.el7.noarch.rpm           

二、安裝openldap

因為我是把包下載下傳到我本地了,是以安裝的是目前目錄下的rpm包
yum install -y ./*.rpm
也可以執行:
yum install -y openldap openldap-clients openldap-servers compat-openldap openldap-devel

# 複制一個預設配置到指定目錄下,并授權,這一步一定要做,然後再啟動服務,不然生産密碼時會報錯
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
# 授權給ldap使用者,此使用者yum安裝時便會自動建立
chown -R ldap. /var/lib/ldap/DB_CONFIG

# 啟動服務,先啟動服務,配置後面再進行修改
systemctl start slapd
systemctl enable slapd

# 檢視狀态,正常啟動則ok
systemctl status slapd           
從openldap2.4.23版本開始,所有配置都儲存在/etc/openldap/slapd.d目錄下的cn=config檔案夾内,不再使用slapd.conf作為配置檔案。配置檔案的字尾為ldif,且每個配置檔案都是通過指令自動生成的,任意打開一個配置檔案,在開頭都會有一行注釋,說明此為自動生成的檔案,請勿編譯,使用ldapmodify指令進行修改。           

1.修改管理者密碼

# slappasswd -s 123456
{SSHA}HYILOvpwpe5svDDjqgYv8M4Il8ESPMsD

如果密碼中包含特殊字元,密碼則用單引号引起來
比如:slappasswd -s 'abc!@#123'           

2.新增修改密碼檔案,ldif為字尾,不要在/etc/openldap/slapd.d目錄下建立類似檔案,生成的檔案為需要通過指令去動态修改ldap現有配置,如下,在使用者目錄~下,建立檔案

# cd ~
# vim changepwd.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}HYILOvpwpe5svDDjqgYv8M4Il8ESPMsD

密碼修改配置檔案内容解釋:

第一行執行配置檔案,這裡就表示指定為 cn=config/olcDatabase={0}config檔案。到/etc/openldap/slapd.d/目錄下就能找到此檔案。

第二行 changetype 指定類型為修改

第三行 add表示添加 olcRootPW 配置項

第四行指定 olcRootPW配置項的值

在執行下面的指令前,可以檢視原本的olcDatabase={0}config檔案,裡面是沒有olcRootPW這個項的,執行指令後,你再看就會新增olcRootPW項,而且内容是我們檔案中指定的值加密後的字元串           

3、執行指令,修改ldap配置,通過-f執行檔案

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif           

4、執行修改指令後,有如下輸出則為正常:

Centos 安裝openldap,phpldapadmin,apache

5、導入基本schema

我們需要向ldap中導入一些基本的schema。這些schema檔案位于/etc/openldap/schema/目錄中,schema控制着條目擁有哪些對象類和屬性,可以自行選擇需要的進行導入。依次執行下面的指令,導入基礎的一些配置,我這裡将所有的都導入一下,其中core.ldif是預設已經加載了的,不用導入           
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
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif           

6、修改域名

修改域名,新增changedomain.ldif,這裡自定義的域名為node1.com,管理者使用者賬号為admin。如果要修改,則修改檔案中相應的dc=node3.com,dc=com為自己的域名。           
# vim changedomain.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=node3,dc=com" read by * none

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

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

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=node3,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=node3,dc=com" write by * read           

7、執行指令,修改配置

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

最後這裡有5個修改,是以執行會輸出5行表示成功

Centos 安裝openldap,phpldapadmin,apache

8、添加memberOf子產品

這個工作應該一開始就做好,要不然後面要做的話,還得把建好的組全删掉再重建。這個子產品的作用是當你建一個組的時候,把一些使用者添加到這個組裡去,它會自動給這些使用者添加一個memberOf屬性,有很多應用需要檢查這個屬性。           

新增add-memberof.ldif,#開啟memberof支援并新增使用者支援memberof配置

# vim add-memberof.ldif
dn: cn=module{0},cn=config
cn: module{0}
objectClass: olcModuleList
objectclass: top
olcModuleload: memberof.la
olcModulePath: /usr/lib64/openldap

dn: olcOverlay={0}memberof,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
olcMemberOfDangling: ignore
olcMemberOfRefInt: TRUE
olcMemberOfGroupOC: groupOfUniqueNames
olcMemberOfMemberAD: uniqueMember
olcMemberOfMemberOfAD: memberOf           

新增refint1.ldif檔案

# vim refint1.ldif
dn: cn=module{0},cn=config
add: olcmoduleload
olcmoduleload: refint           

新增refint2.ldif檔案

# vim refint2.ldif
dn: olcOverlay=refint,olcDatabase={2}hdb,cn=config
objectClass: olcConfig
objectClass: olcOverlayConfig
objectClass: olcRefintConfig
objectClass: top
olcOverlay: refint
olcRefintAttribute: memberof uniqueMember  manager owner           

依次執行下面指令,加載配置,順序不能錯

ldapadd -Q -Y EXTERNAL -H ldapi:/// -f add-memberof.ldif
ldapmodify -Q -Y EXTERNAL -H ldapi:/// -f refint1.ldif
ldapadd -Q -Y EXTERNAL -H ldapi:/// -f refint2.ldif           
Centos 安裝openldap,phpldapadmin,apache

9、建立node3組織

在上述基礎上,我們來建立一個node3 company的組織,node3為域名,并在其下建立一個admin的組織角色(該組織角色内的使用者具有管理整個LDAP的權限)和People和Group兩個組織單元:           
# vim node3.ldif
dn: dc=node3,dc=com
dc: node3
objectClass: top
objectClass: domain
o: node3

dn: cn=admin,dc=node3,dc=com
objectClass: organizationalRole
cn: admin
description: LDAP admin

dn: dc=hdp,dc=node3,dc=com
changetype: add
dc: hdp
objectClass: top
objectClass: dcObject
objectClass: organization
o: hdp

dn: ou=People,dc=hdp,dc=node3,dc=com
ou: People
objectClass: organizationalUnit

dn: ou=Group,dc=hdp,dc=node3,dc=com
ou: Group
objectClass: organizationalUnit           

執行指令,添加配置,這裡要注意修改域名為自己配置的域名,然後需要輸入上面我們生成的密碼

ldapadd -x -D cn=admin,dc=node3,dc=com -W -f node3.ldif           
Centos 安裝openldap,phpldapadmin,apache

10、後續如果想再次修改管理者密碼,按如下步驟

# slappasswd -s 654321
{SSHA}HYILOvpwpe5svDDjqgYv8M4Il8ESPMsD

建立一個test.ldif檔案
vim test.ldif

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}HYILOvpwpe5svDDjqgYv8M4Il8ESPMsD

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}HYILOvpwpe5svDDjqgYv8M4Il8ESPMsD           
ldapmodify -Y EXTERNAL -H ldapi:/// -f test.ldif           

三、安裝phpldapadmin

1.yum安裝軟體包

因為我是把包下載下傳到我本地了,是以安裝的是目前目錄下的rpm包
yum install -y ./*.rpm
也可以執行:
# yum安裝時,會自動安裝apache和php的依賴。
# 注意: phpldapadmin很久沒更新了,隻支援php5,如果你伺服器的環境是php7,則會有問題,頁面會有各種報錯
yum install epel-release-7-11.noarch.rpm (不安裝這個,yum install phpldapadmin會報找不到包的錯誤)
yum install phpldapadmin           

2.修改配置檔案

# 修改apache的phpldapadmin配置檔案
# 修改如下内容,放開網際網路通路,這裡隻改了2.4版本的配置,因為centos7 預設安裝的apache為2.4版本。是以隻需要改2.4版本的配置就可以了
# 如果不知道自己apache版本,執行 rpm -qa|grep httpd 檢視apache版本

vim /etc/httpd/conf.d/phpldapadmin.conf
-----------------------------------------------------------------
  <IfModule mod_authz_core.c>
    # Apache 2.4
    Require all granted
  </IfModule>
-----------------------------------------------------------------

# 修改配置用DN登入ldap
vim /etc/phpldapadmin/config.php
-----------------------------------------------------------------
# 398行,預設是使用uid進行登入,我這裡改為cn,也就是使用者名
$servers->setValue('login','attr','cn');

# 460行,關閉匿名登入,否則任何人都可以直接匿名登入檢視所有人的資訊
$servers->setValue('login','anon_bind',false);

# 519行,設定使用者屬性的唯一性,這裡我将cn,sn加上了,以確定使用者名的唯一性
$servers->setValue('unique','attrs',array('mail','uid','uidNumber','cn','sn'));
-----------------------------------------------------------------

# 啟動apache
systemctl start httpd
systemctl enable httpd           

3.登入

登入,賬号是admin,密碼是之前自己設定的密碼           
登入進來之後,顯示之前設定的組織機構           

4.apache

在yum install phpldapadmin的時候會自動下載下傳安裝apache的軟體包

apahce配置檔案:/etc/httpd/conf/httpd.conf
可以修改apache監聽的端口和逾時時間,配置如下
Listen 80
Timeout 3600(逾時時間預設是60秒)

apache的預設配置是在/usr/share/doc/httpd-2.4.6/路徑下。           

參考文檔

Openldap安裝部署:https://www.cnblogs.com/swordfall/p/12119010.html
Openldap安裝部署:https://blog.csdn.net/weixin_41004350/article/details/89521170(這篇文章中的配置檔案格式有問題,盡量不要複制,配置檔案内容,請參考第一篇文章)
Openldap安裝部署:https://segmentfault.com/a/1190000014683418