ค้นหาเว็บไซต์

วิธีการติดตั้งเซิร์ฟเวอร์ OpenLDAP สำหรับการตรวจสอบสิทธิ์แบบรวมศูนย์


Lightweight Directory Access Protocol (LDAP โดยย่อ) คือชุดโปรโตคอลมาตรฐานอุตสาหกรรม น้ำหนักเบา และใช้กันอย่างแพร่หลายสำหรับการเข้าถึงบริการไดเรกทอรี บริการไดเรกทอรีเป็นโครงสร้างพื้นฐานข้อมูลที่ใช้ร่วมกันสำหรับการเข้าถึง จัดการ จัดระเบียบ และอัปเดตรายการประจำวันและทรัพยากรเครือข่าย เช่น ผู้ใช้ กลุ่ม อุปกรณ์ ที่อยู่อีเมล หมายเลขโทรศัพท์ ไดรฟ์ข้อมูล และวัตถุอื่น ๆ อีกมากมาย

โมเดลข้อมูล LDAP ขึ้นอยู่กับรายการ รายการในไดเร็กทอรี LDAP แสดงถึงหน่วยหรือข้อมูลเดียว และระบุโดยไม่ซ้ำกันด้วยสิ่งที่เรียกว่า Distinguished Name (DN) คุณลักษณะของแต่ละรายการมีประเภทและค่าตั้งแต่หนึ่งค่าขึ้นไป

คุณลักษณะคือข้อมูลชิ้นหนึ่งที่เกี่ยวข้องกับรายการ โดยทั่วไปประเภทจะเป็นสตริงช่วยจำ เช่น “cn” สำหรับชื่อทั่วไป หรือ “mail” สำหรับที่อยู่อีเมล แต่ละแอตทริบิวต์ได้รับการกำหนดค่าตั้งแต่หนึ่งค่าขึ้นไปซึ่งประกอบด้วยรายการที่คั่นด้วยช่องว่าง

ต่อไปนี้เป็นภาพประกอบของการจัดเรียงข้อมูลในไดเรกทอรี LDAP

ในบทความนี้ เราจะแสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenLDAP สำหรับการตรวจสอบสิทธิ์แบบรวมศูนย์ใน Ubuntu 16.04/18.04 และ CentOS 7

ขั้นตอนที่ 1: การติดตั้งเซิร์ฟเวอร์ LDAP

1. ขั้นแรกให้เริ่มต้นด้วยการติดตั้ง OpenLDAP ซึ่งเป็นการใช้งานโอเพ่นซอร์สของ LDAP และยูทิลิตีการจัดการ LDAP แบบดั้งเดิมบางตัวโดยใช้คำสั่งต่อไปนี้

yum install openldap openldap-servers	    #CentOS 7
sudo apt install slapd ldap-utils	    #Ubuntu 16.04/18.04

บน Ubuntu ระหว่างการติดตั้งแพ็คเกจ คุณจะได้รับแจ้งให้ป้อนรหัสผ่านสำหรับรายการผู้ดูแลระบบในไดเร็กทอรี LDAP ของคุณ ตั้งรหัสผ่านที่ปลอดภัยและยืนยัน

เมื่อการติดตั้งเสร็จสมบูรณ์ คุณสามารถเริ่มบริการตามที่อธิบายไว้ถัดไป

2. บน CentOS 7 ให้รันคำสั่งต่อไปนี้เพื่อเริ่มต้น daemon เซิร์ฟเวอร์ openldap เปิดใช้งานให้เริ่มทำงานอัตโนมัติในเวลาบูต และตรวจสอบว่า มันเปิดใช้งานแล้ว (บน Ubuntu บริการควรเริ่มต้นอัตโนมัติภายใต้ systemd คุณสามารถตรวจสอบสถานะได้):

sudo systemctl start slapd
sudo systemctl enable slapd
sudo systemctl status slapd

3. ถัดไป อนุญาตคำขอไปยังภูตเซิร์ฟเวอร์ LDAP ผ่านไฟร์วอลล์ดังที่แสดง

firewall-cmd --add-service=ldap    #CentOS 7
sudo ufw allow ldap                #Ubuntu 16.04/18.04

ขั้นตอนที่ 2: การกำหนดค่าเซิร์ฟเวอร์ LDAP

หมายเหตุ: ไม่แนะนำให้แก้ไขการกำหนดค่า LDAP ด้วยตนเอง คุณต้องเพิ่มการกำหนดค่าในไฟล์และใช้ ldapadd หรือ ldapmodify เพื่อโหลดลงในไดเร็กทอรี LDAP ดังที่แสดงด้านล่าง

4. ตอนนี้ให้สร้างผู้ใช้ที่เป็นผู้ดูแลระบบ OpenLDAP และกำหนดรหัสผ่านสำหรับผู้ใช้นั้น ในคำสั่งด้านล่าง ค่าแฮชจะถูกสร้างขึ้นสำหรับรหัสผ่านที่กำหนด โปรดจดไว้ คุณจะใช้ในไฟล์การกำหนดค่า LDAP

slappasswd

5. จากนั้นสร้างไฟล์ LDIF (ldaprootpasswd.ldif) ซึ่งใช้เพื่อเพิ่มรายการลงในไดเร็กทอรี LDAP

sudo vim ldaprootpasswd.ldif

เพิ่มเนื้อหาต่อไปนี้ลงไป:

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD_CREATED

อธิบายคู่แอตทริบิวต์-ค่าด้านบน:

  • olcDatabase: ระบุชื่ออินสแตนซ์ฐานข้อมูลเฉพาะ และโดยทั่วไปจะพบได้ใน /etc/openldap/slapd.d/cn=config
  • cn=config: ระบุตัวเลือกการกำหนดค่าส่วนกลาง
  • รหัสผ่าน: คือสตริงแฮชที่ได้รับขณะสร้างผู้ใช้ที่เป็นผู้ดูแลระบบ

6. ถัดไป เพิ่มรายการ LDAP ที่เกี่ยวข้องโดยระบุ URI ที่อ้างอิงถึงเซิร์ฟเวอร์ ldap และไฟล์ด้านบน

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f ldaprootpasswd.ldif  

ขั้นตอนที่ 3: การกำหนดค่าฐานข้อมูล LDAP

7. ตอนนี้คัดลอกไฟล์การกำหนดค่าฐานข้อมูลตัวอย่างสำหรับ slapd ลงในไดเร็กทอรี /var/lib/ldap และตั้งค่าการอนุญาตที่ถูกต้องบนไฟล์ .

sudo cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
sudo chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
sudo systemctl restart slapd

8. จากนั้น นำเข้าสคีมา LDAP พื้นฐานบางส่วนจากไดเร็กทอรี /etc/openldap/schema ดังนี้

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

9. ตอนนี้เพิ่มโดเมนของคุณในฐานข้อมูล LDAP และสร้างไฟล์ชื่อ ldapdomain.ldif สำหรับโดเมนของคุณ

sudo vim ldapdomain.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=Manager,dc=example,dc=com" read by * none

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=Manager,dc=example,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}PASSWORD

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

10. จากนั้นเพิ่มการกำหนดค่าข้างต้นไปยังฐานข้อมูล LDAP ด้วยคำสั่งต่อไปนี้

sudo ldapmodify -Y EXTERNAL -H ldapi:/// -f ldapdomain.ldif

11. ในขั้นตอนนี้ เราจำเป็นต้องเพิ่มบางรายการลงในไดเร็กทอรี LDAP ของเรา สร้างไฟล์อื่นชื่อ baseldapdomain.ldif โดยมีเนื้อหาดังต่อไปนี้

dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: example com
dc: example

dn: cn=Manager,dc=example,dc=com
objectClass: organizationalRole
cn: Manager
description: Directory Manager

dn: ou=People,dc=example,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=example,dc=com
objectClass: organizationalUnit
ou: Group 

บันทึกไฟล์แล้วเพิ่มรายการลงในไดเร็กทอรี LDAP

sudo ldapadd -Y EXTERNAL -x -D cn=Manager,dc=example,dc=com -W -f baseldapdomain.ldif

12. ขั้นตอนต่อไปคือการสร้างผู้ใช้ LDAP สำหรับ ตัวอย่าง, tecmint และตั้งรหัสผ่านสำหรับผู้ใช้รายนี้ดังนี้

sudo useradd tecmint
sudo passwd tecmint

13. จากนั้นสร้างคำจำกัดความสำหรับกลุ่ม LDAP ในไฟล์ชื่อ ldapgroup.ldif โดยมีเนื้อหาดังต่อไปนี้

dn: cn=Manager,ou=Group,dc=example,dc=com
objectClass: top
objectClass: posixGroup
gidNumber: 1005

ในการกำหนดค่าข้างต้น gidNumber คือ GID ใน /etc/group สำหรับ tecmint และเพิ่มลงใน OpenLDAP ไดเรกทอรี

sudo ldapadd -Y EXTERNAL -x  -W -D "cn=Manager,dc=example,dc=com" -f ldapgroup.ldif

14. ถัดไป สร้างไฟล์ LDIF ชื่อ ldapuser.ldif และเพิ่มคำจำกัดความสำหรับผู้ใช้ tecmint

dn: uid=tecmint,ou=People,dc=example,dc=com
objectClass: top
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
cn: tecmint
uid: tecmint
uidNumber: 1005
gidNumber: 1005
homeDirectory: /home/tecmint
userPassword: {SSHA}PASSWORD_HERE
loginShell: /bin/bash
gecos: tecmint
shadowLastChange: 0
shadowMax: 0
shadowWarning: 0

จากนั้นโหลดการกำหนดค่าไปยังไดเร็กทอรี LDAP

ldapadd -Y EXTERNAL  -x -D cn=Manager,dc=example,dc=com -W -f  ldapuser.ldif

เมื่อคุณตั้งค่าเซิร์ฟเวอร์กลางสำหรับการตรวจสอบสิทธิ์แล้ว ส่วนสุดท้ายคือการเปิดใช้งานไคลเอ็นต์เพื่อตรวจสอบสิทธิ์โดยใช้ LDAP ตามที่อธิบายไว้ในคู่มือนี้:

  1. วิธีกำหนดค่าไคลเอนต์ LDAP เพื่อเชื่อมต่อการรับรองความถูกต้องภายนอก

สำหรับข้อมูลเพิ่มเติม โปรดดูเอกสารประกอบที่เหมาะสมจากแค็ตตาล็อกเอกสารซอฟต์แวร์ OpenLDAP และผู้ใช้ Ubuntu สามารถดูได้จากคู่มือเซิร์ฟเวอร์ OpenLDAP

สรุป

OpenLDAP คือการใช้งาน LDAP แบบโอเพ่นซอร์สใน Linux ในบทความนี้ เราได้แสดงวิธีการติดตั้งและกำหนดค่าเซิร์ฟเวอร์ OpenLDAP สำหรับการตรวจสอบสิทธิ์แบบรวมศูนย์ใน Ubuntu 16.04/18.04 และ CentOS 7 หากคุณมีคำถามหรือความคิดเห็นที่จะแบ่งปัน อย่าลังเลที่จะติดต่อเราผ่านแบบฟอร์มความคิดเห็นด้านล่าง