1. 程式人生 > >在CentOS 7 / RHEL 7配置OpenLDAP服務

在CentOS 7 / RHEL 7配置OpenLDAP服務

perm The monitor people ip地址 rhel 丟失 條目 無限

OpenLDAP是OpenLDAP項目開發的輕量級目錄訪問協議的開源實現。LDAP是一種Internet協議,電子郵件和其他程序用於從服務器查找聯系人信息。它是在OpenLDAP公共許可下發布的; 它適用於所有主要的Linux發行版, AIX, Android, HP-UX, OS X, Solaris, Windows和z/OS。

它以某種方式用作關系數據庫,可用於存儲任何信息。LDAP不限於存儲信息; 它還用作“單點登錄”的後端數據庫,其中用戶的一個密碼在許多服務之間共享。

在本教程中,我們將配置OpenLDAP以進行集中登錄,其中用戶使用單個帳戶登錄到多個服務器。
本文僅涉及沒有SSL的OpenLDAP配置。如果您想使用SSL配置OpenLDAP,請在完成此帖後按照以下鏈接進行操作。

一. 環境

Host Name IP Address OS Purpose
node1 192.168.1.10 CentOS 7 LDAP Server
node2 192.168.1.20 CentOS 7 LDAP Client

例如域名為:51cto.com,即:dc=51cto,dc=com

二. 先決條件

1.確保可以訪問

LDAP服務器“node1” (192.168.1.10)
LDAP客戶端“node2” (192.168.1.20)

2.在每臺計算機上創建主機條目以 /etc/hosts 進行名稱解析。

192.168.1.10 node1 server
192.168.1.20 node2 client

要麽

如果您計劃使用主機名而不是IP地址,請使用如何在 CentOS 7 / RHEL 7 上配置DNS服務器的文章配置DNS服務器。
https://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-dns-bind-server-on-centos-7-rhel-7.html

在這裏,我將使用IP地址進行所有配置。

如果您計劃使用Replication構建LDAP服務器,請跳過本教程並訪問在Linux上配置OpenLDAP多主復制。
https://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-openldap-multi-master-replication-linux.html

三. 安裝OpenLDAP包

1.在LDAP服務器(node1)上安裝以下LDAP RPM軟件包。

yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel

2.啟動LDAP服務並啟用它以在系統引導時自動啟動服務。

CentOS 6.*

service slapd start
chkconfig slapd on
chkconfig --list|grep slapd

輸出:
slapd           0:關閉    1:關閉    2:啟用    3:啟用    4:啟用    5:啟用    6:關閉

CentOS 7.*

systemctl start slapd
systemctl enable slapd

3.驗證LDAP

netstat -antup | grep -i 389

輸出:

tcp        0      0 0.0.0.0:389             0.0.0.0:*               LISTEN      1520/slapd          
tcp6       0      0 :::389                  :::*                    LISTEN      1520/slapd

READ:在CentOS 7 / RHEL 7上找不到netstat命令 - 快速修復
https://www.itzgeek.com/how-tos/mini-howtos/netstat-command-not-found-on-centos-7-rhel-7-quick-fix.html

四. 設置LDAP管理員密碼

運行以下命令以創建LDAP root密碼。我們將在本文中使用此LDAP管理員(root)密碼。
用密碼替換ldppassword。

slappasswd -h {SSHA} -s ldppassword

以上命令將生成輸入密碼的加密哈希值,您需要在LDAP配置文件中使用該哈希值。所以記下這一點並把它放在一邊。
輸出:

{SSHA}d/thexcQUuSfe3rx3gRaEhHpNJ52N8D3

五. 配置OpenLDAP服務器

OpenLDAP服務器配置文件位於 /etc/openldap/slapd.d/ 。要開始配置LDAP,我們需要更新變量 “olcSuffix” 和 “olcRootDN“ 。

  • olcSuffix - 數據庫後綴,它是LDAP服務器提供信息的域名。簡單來說,它應該更改為您的域名。
  • olcRootDN - 具有對LDAP執行所有管理活動的無限制訪問權限的用戶的根專有名稱(DN)條目,如root用戶。
  • olcRootPW - 上述RootDN的LDAP管理員密碼。

以上條目需要在/etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif文件中更新。建議不要手動編輯LDAP配置,因為每次運行ldapmodify命令時都會丟失更改。

請創建一個.ldif文件。

vim db.ldif

添加以下條目。

將加密密碼({SSHA} d / thexcQUuSfe3rx3gRaEhHpNJ52N8D3 )替換為您在上一步中生成的密碼。

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

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=ldapadm,dc=51cto,dc=com

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

完成ldif文件後,將配置發送到LDAP服務器。

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

輸出:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

modifying entry "olcDatabase={2}hdb,cn=config"

對/etc/openldap/slapd.d/cn=config/olcDatabase={1 }monitor.ldif (不要手動編輯)文件進行更改,以僅將監視器訪問限制為ldap root(ldapadm)用戶而不是其他用戶。

vim 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=ldapadm,dc=51cto,dc=com" read by * none

更新文件後,將配置發送到LDAP服務器。

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

輸出:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"

六. 設置LDAP數據庫

將示例數據庫配置文件復制到/var/lib/ldap並更新文件權限。

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

添加cosine和nis LDAP模式。

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為您的域生成文件。

vim base.ldif

使用以下信息。您可以根據自己的要求進行修改。

dn: dc=51cto,dc=com
dc: 51cto
objectClass: top
objectClass: domain

dn: cn=ldapadm ,dc=51cto,dc=com
objectClass: organizationalRole
cn: ldapadm
description: LDAP Manager

dn: ou=People,dc=51cto,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=51cto,dc=com
objectClass: organizationalUnit
ou: Group

構建目錄結構。

ldapadd -x -W -D "cn=ldapadm,dc=51cto,dc=com" -f base.ldif

ldapadd命令將提示您輸入ldapadm(LDAP root用戶)的密碼。
輸出:

Enter LDAP Password: 
adding new entry "dc=51cto,dc=com"

adding new entry "cn=ldapadm ,dc=51cto,dc=com"

adding new entry "ou=People,dc=51cto,dc=com"

adding new entry "ou=Group,dc=51cto,dc=com"

七. 創建LDAP用戶

您可以將本地用戶遷移到LDAP,而不是創建新用戶。讓我們為名為raj的新用戶創建一個LDIF文件。

vim raj.ldif

將以下行粘貼到LDIF文件上方。

dn: uid=raj,ou=People,dc=51cto,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: raj
uid: raj
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/raj
loginShell: /bin/bash
gecos: Raj [Admin (at) 51Cto]
userPassword: {crypt}x
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7

使用帶有上述文件的ldapadd命令在OpenLDAP目錄中創建名為“ raj ” 的新用戶。

ldapadd -x -W -D "cn=ldapadm,dc=51cto,dc=com" -f raj.ldif

輸出: - 輸入ldapadm密碼。
Enter LDAP Password:
adding new entry "uid=raj,ou=People,dc=51cto,dc=com"

為用戶分配密碼。

ldappasswd -s password123 -W -D "cn=ldapadm,dc=51cto,dc=com" -x "uid=raj,ou=People,dc=51cto,dc=com"

參數:
-s指定用戶名的密碼

-x用戶名,密碼已更改

-D要對LDAP服務器進行身份驗證的可分辨名稱。

驗證LDAP條目。

ldapsearch -x cn=raj -b dc=51cto,dc=com

輸出:

# extended LDIF
#
# LDAPv3
# base <dc=51cto,dc=com> with scope subtree
# filter: cn=raj
# requesting: ALL
#

# raj, People, 51cto.com
dn: uid=raj,ou=People,dc=51cto,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: raj
uid: raj
uidNumber: 9999
gidNumber: 100
homeDirectory: /home/raj
loginShell: /bin/bash
gecos: Raj [Admin (at) 51Cto]
shadowLastChange: 17058
shadowMin: 0
shadowMax: 99999
shadowWarning: 7
userPassword:: e1NTSEF9MkE2eUhIS0pJQVRnMHBCdkpVWjR5Q3JvTkJLTzdBTWY=

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

從LDAP中刪除條目(可選)。

ldapdelete -W -D "cn=ldapadm,dc=51cto,dc=com" "uid=raj,ou=People,dc=51cto,dc=com"

八. 防火墻-Firewall

將LDAP服務添加到防火墻(TCP 389)。

firewall-cmd --permanent --add-service=ldap
firewall-cmd --reload

九. 啟用LDAP日誌記錄

配置Rsyslog以將LDAP事件記錄到日誌文件/var/log/ldap.log。

vim /etc/rsyslog.conf

將以下行添加到/etc/rsyslog.conf文件中。

local4.* /var/log/ldap.log

重新啟動rsyslog服務。

systemctl restart rsyslog

十. LDAP客戶端(node2)配置以使用LDAP服務器

在客戶端計算機上安裝必要的LDAP客戶端軟件包。

yum install -y openldap-clients nss-pam-ldapd

執行以下命令將客戶端計算機添加到LDAP服務器以進行單點登錄。將“192.168.1.10”替換為LDAP服務器的IP地址或主機名。

authconfig --enableldap --enableldapauth --ldapserver=192.168.1.10 --ldapbasedn="dc=51cto,dc=com" --enablemkhomedir --update

重新啟動LDAP客戶端服務。

systemctl restart nslcd

十一. 驗證LDAP登錄

使用getent命令從LDAP服務器獲取LDAP條目。

getent passwd raj

輸出:

raj:x:9999:100:Raj [Admin (at) 51Cto]:/home/raj:/bin/bash

要驗證LDAP,請使用客戶端計算機上的LDAP用戶“ raj ” 登錄。

技術分享圖片
就這樣。

十二. 參考

https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html

在CentOS 7 / RHEL 7配置OpenLDAP服務