
- Linux管理員教程
- 首頁
- CentOS概述
- 基本的CentOS Linux命令
- 檔案/資料夾管理
- 使用者管理
- 配額管理
- Systemd服務的啟動和停止
- 使用systemctl進行資源管理
- 使用cgroups進行資源管理
- 程序管理
- 防火牆設定
- 在CentOS Linux中配置PHP
- 在CentOS Linux中設定Python
- 在CentOS Linux中配置Ruby
- 為CentOS Linux設定Perl
- 安裝和配置OpenLDAP
- 建立SSL證書
- 安裝Apache Web伺服器CentOS 7
- 在CentOS 7上設定MySQL
- 設定Postfix MTA和IMAP/POP3
- 安裝匿名FTP
- 遠端管理
- CentOS中的流量監控
- 日誌管理
- 備份和恢復
- 系統更新
- Shell指令碼
- 包管理
- 卷管理
- Linux管理員有用資源
- Linux管理員 - 快速指南
- Linux管理員 - 有用資源
- Linux管理員 - 討論
安裝和配置OpenLDAP
LDAP,即輕量級目錄訪問協議,是一種用於訪問企業中已知的目錄內X.500服務容器的協議。熟悉Windows伺服器管理的人可以認為LDAP與Active Directory非常相似。它甚至是一個將Windows工作站融入OpenLDAP CentOS企業的廣泛使用的概念。另一方面,CentOS Linux工作站可以共享資源並參與Windows域的基本功能。
在CentOS上部署LDAP作為目錄伺服器代理、目錄系統代理或DSA(這些縮寫都是一樣的)類似於使用NDS和目錄樹結構的舊版Novell Netware安裝。
LDAP簡史
LDAP基本上是作為一種有效訪問具有企業資源的X.500目錄的方法而建立的。X.500和LDAP具有相同的特性,並且非常相似,以至於LDAP客戶端可以使用一些輔助工具訪問X.500目錄。雖然LDAP也有自己的目錄伺服器,稱為slapd。LDAP和DAP之間的主要區別在於,輕量級版本設計為在TCP上執行。
而DAP使用完整的OSI模型。隨著網際網路的興起,TCP/IP和乙太網在當今網路中的突出地位,在特定遺留計算模型之外,很少會遇到使用DAP和本地X.500企業目錄的目錄服務實現。
CentOS Linux的openldap使用的主要元件有:
openldap | LDAP支援庫 |
---|---|
openldap-server | LDAP伺服器 |
openldap-clients | LDAP客戶端實用程式 |
openldap-devel | OpenLDAP的開發庫 |
compay-openldap | OpenLDAP共享庫 |
slapd | OpenLDAP的目錄伺服器守護程序 |
slurpd | 用於在企業域中進行LDAP複製 |
注意 - 為您的企業命名時,最佳實踐是使用.local TLD。使用.net或.com可能會導致區分線上和內部域基礎設施時出現困難。想象一下,一家公司內部同時使用acme.com進行內部和外部操作所需做的額外工作。因此,明智的做法是將網際網路資源稱為acme.com或acme.net。然後,本地網路企業資源表示為acme.local。這需要配置DNS記錄,但會帶來簡單性、流暢性和安全性。
在CentOS上安裝OpenLDAP
從YUM安裝openldap、openldap-servers、openldap-clients和migrationstools。
[root@localhost]# yum -y install openldap openldap-servers openldap-clients migration tools Loaded plugins: fastestmirror, langpacks updates | 3.4 kB 00:00:00 updates/7/x86_64/primary_db | 2.2 MB 00:00:05 Determining fastest mirrors (1/2): extras/7/x86_64/primary_db | 121 kB 00:00:01 (2/2): base/7/x86_64/primary_db | 5.6 MB 00:00:16 Package openldap-2.4.40-13.el7.x86_64 already installed and latest version Resolving Dependencies --> Running transaction check ---> Package openldap-clients.x86_64 0:2.4.40-13.el7 will be installed ---> Package openldap-servers.x86_64 0:2.4.40-13.el7 will be installed --> Finished Dependency Resolution base/7/x86_64/group_gz | 155 kB 00:00:00 Dependencies Resolved =============================================================================== =============================================================================== Package Arch Version Repository Size =============================================================================== =============================================================================== Installing: openldap-clients x86_64 2.4.40-13.el7 base 188 k openldap-servers x86_64 2.4.40-13.el7 base 2.1 M Transaction Summary =============================================================================== =============================================================================== Install 2 Packages Total download size: 2.3 M Installed size: 5.3 M Downloading packages: Installed: openldap-clients.x86_64 0:2.4.40-13.el7 openldap-servers.x86_64 0:2.4.40-13.el7 Complete! [root@localhost]#
現在,讓我們啟動並啟用slapd服務:
[root@centos]# systemctl start slapd [root@centos]# systemctl enable slapd
此時,讓我們確保我們的openldap結構位於/etc/openldap中。
root@localhost]# ls /etc/openldap/ certs check_password.conf ldap.conf schema slapd.d [root@localhost]#
然後確保我們的slapd服務正在執行。
root@centos]# netstat -antup | grep slapd tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 1641/slapd tcp6 0 0 :::389 :::* LISTEN 1641/slapd [root@centos]#
接下來,讓我們配置我們的OpenLDAP安裝。
確保已建立我們的系統ldap使用者。
[root@localhost]# id ldap uid=55(ldap) gid=55(ldap) groups=55(ldap) [root@localhost]#
生成我們的LDAP憑據。
[root@localhost]# slappasswd New password: Re-enter new password: {SSHA}20RSyjVv6S6r43DFPeJgASDLlLoSU8g.a10 [root@localhost]#
我們需要儲存slappasswd的輸出。
配置OpenLDAP
步驟1 - 為域配置LDAP並新增管理員使用者。
首先,我們要設定我們的openLDAP環境。以下是使用ldapmodify命令的模板。
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=vmnet,dc=local dn: olcDatabase = {2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=ldapadm,dc=vmnet,dc=local dn: olcDatabase = {2}hdb,cn=config changetype: modify replace: olcRootPW olcRootPW: <output from slap
使用ldapmodify命令更改:/etc/openldap/slapd.d/cn=config/olcDatabase={1}monitor.ldif。
[root@localhost]# ldapmodify -Y EXTERNAL -H ldapi:/// -f /home/rdc/Documents/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" [root@localhost cn=config]#
讓我們檢查修改後的LDAP配置。
root@linux1 ~]# vi /etc/openldap/slapd.d/cn=config/olcDatabase={2}hdb.ldif [root@centos]# cat /etc/openldap/slapd.d/cn\=config/olcDatabase\=\{2\}hdb.ldif # AUTO-GENERATED FILE - DO NOT EDIT!! Use ldapmodify. # CRC32 a163f14c dn: olcDatabase = {2}hdb objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {2}hdb olcDbDirectory: /var/lib/ldap olcDbIndex: objectClass eq,pres olcDbIndex: ou,cn,mail,surname,givenname eq,pres,sub structuralObjectClass: olcHdbConfig entryUUID: 1bd9aa2a-8516-1036-934b-f7eac1189139 creatorsName: cn=config createTimestamp: 20170212022422Z olcSuffix: dc=vmnet,dc=local olcRootDN: cn=ldapadm,dc=vmnet,dc=local olcRootPW:: e1NTSEF1bUVyb1VzZTRjc2dkYVdGaDY0T0k = entryCSN: 20170215204423.726622Z#000000#000#000000 modifiersName: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth modifyTimestamp: 20170215204423Z [root@centos]#
如您所見,我們的LDAP企業修改成功了。
接下來,我們要為OpenLDAP建立一個自簽名ssl證書。這將確保企業伺服器和客戶端之間的通訊安全。
步驟2 - 為OpenLDAP建立自簽名證書。
我們將使用openssl建立自簽名ssl證書。請轉到下一章使用openssl建立LDAP SSL證書,瞭解有關使用OpenLDAP保護通訊的說明。然後,配置ssl證書後,我們將完成OpenLDAP企業配置。
步驟3 - 配置OpenLDAP以使用證書進行安全通訊。
在vim中建立一個certs.ldif檔案,其中包含以下資訊:
dn: cn=config changetype: modify replace: olcTLSCertificateFile olcTLSCertificateFile: /etc/openldap/certs/yourGeneratedCertFile.pem dn: cn=config changetype: modify replace: olcTLSCertificateKeyFile olcTLSCertificateKeyFile: /etc/openldap/certs/youGeneratedKeyFile.pem
接下來,再次使用ldapmodify命令將更改合併到OpenLDAP配置中。
[root@centos rdc]# ldapmodify -Y EXTERNAL -H ldapi:/// -f certs.ldif SASL/EXTERNAL authentication started SASL username: gidNumber = 0+uidNumber = 0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" [root@centos]#
最後,讓我們測試我們的OpenLADP配置。
[root@centos]# slaptest -u config file testing succeeded [root@centos]#
步驟4 - 設定slapd資料庫。
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG && chown ldap:ldap /var/lib/ldap/*
更新OpenLDAP模式。
新增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
最後,建立企業模式並將其新增到當前的OpenLDAP配置中。
以下是針對名為vmnet.local的域和名為ldapadm的LDAP管理員的配置。
dn: dc=vmnet,dc=local dc: vmnet objectClass: top objectClass: domain dn: cn=ldapadm ,dc=vmnet,dc=local objectClass: organizationalRole cn: ldapadm description: LDAP Manager dn: ou = People,dc=vmnet,dc=local objectClass: organizationalUnit ou: People dn: ou = Group,dc=vmnet,dc=local objectClass: organizationalUnit ou: Group
最後,將其匯入到當前的OpenLDAP模式中。
[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f ./base.ldif Enter LDAP Password: adding new entry "dc=vmnet,dc=local" adding new entry "cn=ldapadm ,dc=vmnet,dc=local" adding new entry "ou=People,dc=vmnet,dc=local" adding new entry "ou=Group,dc=vmnet,dc=local" [root@centos]#
步驟5 - 設定OpenLDAP企業使用者。
開啟vim或您喜歡的文字編輯器,並複製以下格式。這是為“vmnet.local”LDAP域上的名為“entacct”的使用者設定的。
dn: uid=entacct,ou=People,dc=vmnet,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: entacct uid: entacct uidNumber: 9999 gidNumber: 100 homeDirectory: /home/enyacct loginShell: /bin/bash gecos: Enterprise User Account 001 userPassword: {crypt}x shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
現在,將以上儲存的檔案匯入OpenLdap模式。
[root@centos]# ldapadd -x -W -D "cn=ldapadm,dc=vmnet,dc=local" -f entuser.ldif Enter LDAP Password: adding new entry "uid=entacct,ou=People,dc=vmnet,dc=local" [root@centos]#
在使用者可以訪問LDAP企業之前,我們需要按如下方式分配密碼:
ldappasswd -s password123 -W -D "cn=ldapadm,dc=entacct,dc=local" -x "uid=entacct ,ou=People,dc=vmnet,dc=local"
-s 指定使用者的密碼
-x 是應用密碼更新的使用者名稱
-D 是用於對LDAP模式進行身份驗證的“可分辨名稱”。
最後,在登入企業帳戶之前,讓我們檢查我們的OpenLDAP條目。
[root@centos rdc]# ldapsearch -x cn=entacct -b dc=vmnet,dc=local # extended LDIF # # LDAPv3 # base <dc=vmnet,dc=local> with scope subtree # filter: cn=entacct # requesting: ALL # # entacct, People, vmnet.local dn: uid=entacct,ou=People,dc=vmnet,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: entacct uid: entacct uidNumber: 9999 gidNumber: 100 homeDirectory: /home/enyacct loginShell: /bin/bash gecos: Enterprise User Account 001 userPassword:: e2NyeXB0fXg= shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
將/etc/passwd和/etc/groups等內容轉換為OpenLDAP身份驗證需要使用遷移工具。這些工具包含在migrationtools包中,然後安裝到/usr/share/migrationtools。
[root@centos openldap-servers]# ls -l /usr/share/migrationtools/ total 128 -rwxr-xr-x. 1 root root 2652 Jun 9 2014 migrate_aliases.pl -rwxr-xr-x. 1 root root 2950 Jun 9 2014 migrate_all_netinfo_offline.sh -rwxr-xr-x. 1 root root 2946 Jun 9 2014 migrate_all_netinfo_online.sh -rwxr-xr-x. 1 root root 3011 Jun 9 2014 migrate_all_nis_offline.sh -rwxr-xr-x. 1 root root 3006 Jun 9 2014 migrate_all_nis_online.sh -rwxr-xr-x. 1 root root 3164 Jun 9 2014 migrate_all_nisplus_offline.sh -rwxr-xr-x. 1 root root 3146 Jun 9 2014 migrate_all_nisplus_online.sh -rwxr-xr-x. 1 root root 5267 Jun 9 2014 migrate_all_offline.sh -rwxr-xr-x. 1 root root 7468 Jun 9 2014 migrate_all_online.sh -rwxr-xr-x. 1 root root 3278 Jun 9 2014 migrate_automount.pl -rwxr-xr-x. 1 root root 2608 Jun 9 2014 migrate_base.pl
步驟6 - 最後,我們需要允許訪問slapd服務,以便它可以提供服務請求。
firewall-cmd --permanent --add-service=ldap firewall-cmd --reload
配置LDAP客戶端訪問
配置LDAP客戶端訪問需要客戶端上的以下軟體包:openldap、open-ldap clients和nss_ldap。
為客戶端系統配置LDAP身份驗證比較容易。
步驟1 - 安裝依賴包:
# yum install -y openldap-clients nss-pam-ldapd
步驟2 - 使用authconfig配置LDAP身份驗證。
authconfig --enableldap --enableldapauth --ldapserver=10.25.0.1 -- ldapbasedn="dc=vmnet,dc=local" --enablemkhomedir --update
步驟3 - 重啟nslcd服務。
systemctl restart nslcd