OpenLDAP是OpenLDAP項目開發的輕量級目錄訪問協議的開源實現。LDAP是一種Internet協議,電子郵件和其餘程序用於從服務器查找聯繫人信息。它是在OpenLDAP公共許可下發布的; 它適用於全部主要的Linux發行版, AIX, Android, HP-UX, OS X, Solaris, Windows和z/OS。php
它以某種方式用做關係數據庫,可用於存儲任何信息。LDAP不限於存儲信息; 它還用做「單點登陸」的後端數據庫,其中用戶的一個密碼在許多服務之間共享。html
在本教程中,咱們將配置OpenLDAP以進行集中登陸,其中用戶使用單個賬戶登陸到多個服務器。
本文僅涉及沒有SSL的OpenLDAP配置。若是您想使用SSL配置OpenLDAP,請在完成此帖後按照如下連接進行操做。node
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
CentOS 6 沒法使用linux
LDAP服務器「node1」 (192.168.1.10)
LDAP客戶端「node2」 (192.168.1.20)git
192.168.1.10 node1 server 192.168.1.20 node2 client
要麼github
若是您計劃使用主機名而不是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.htmlsql
在這裏,我將使用IP地址進行全部配置。數據庫
若是您計劃使用Replication構建LDAP服務器,請跳過本教程並訪問在Linux上配置OpenLDAP多主複製。
https://www.itzgeek.com/how-tos/linux/centos-how-tos/configure-openldap-multi-master-replication-linux.htmlvim
yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
systemctl start slapd systemctl enable slapd
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 root密碼。咱們將在本文中使用此LDAP管理員(root)密碼。
用密碼替換ldppassword。
slappasswd -h {SSHA} -s ldppassword
以上命令將生成輸入密碼的加密哈希值,您須要在LDAP配置文件中使用該哈希值。因此記下這一點並把它放在一邊。
輸出:
{SSHA}d/thexcQUuSfe3rx3gRaEhHpNJ52N8D3
OpenLDAP服務器配置文件位於 /etc/openldap/slapd.d/ 。要開始配置LDAP,咱們須要更新變量 「olcSuffix」 和 「olcRootDN「 。
以上條目須要在/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"
將示例數據庫配置文件複製到/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,而不是建立新用戶。讓咱們爲名爲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"
將LDAP服務添加到防火牆(TCP 389)。
firewall-cmd --permanent --add-service=ldap firewall-cmd --reload
配置Rsyslog以將LDAP事件記錄到日誌文件/var/log/ldap.log。
vim /etc/rsyslog.conf
將如下行添加到/etc/rsyslog.conf文件中。
local4.* /var/log/ldap.log
從新啓動rsyslog服務。
systemctl restart rsyslog
在客戶端計算機上安裝必要的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
使用getent命令從LDAP服務器獲取LDAP條目。
getent passwd raj
輸出:
raj:x:9999:100:Raj [Admin (at) 51Cto]:/home/raj:/bin/bash
要驗證LDAP,請使用客戶端計算機上的LDAP用戶「 raj 」 登陸。
就這樣。
https://myanbin.github.io/post/openldap-in-centos-7.html
https://www.itzgeek.com/how-tos/linux/centos-how-tos/step-step-openldap-server-configuration-centos-7-rhel-7.html
使用migrationtools添加用戶:
https://www.itzgeek.com/how-tos/linux/centos-how-tos/migrate-local-users-ldap-accounts.html
安裝phpldapadmin管理工具:
https://www.linuxidc.com/Linux/2017-07/145436.htm