OpenLDAP Proxy -- slapd.conf

English 简体中文 繁体中文 ภาษาไทย Tiếng Việt
Summary

Configuring OpenLDAP as a proxy, particularly with the meta backend, involves setting up `slapd.conf` despite its deprecation in favor of LDIF databases. Key directives include `moduleload back_meta` and `database meta` to enable the proxy functionality. Developers define virtual naming contexts with `suffix`, specify remote LDAP servers using `uri`, and map these contexts to real remote bases via `suffixmassage`. Authentication to remote servers is handled by `rootdn`/`rootpw` for the proxy itself and `idassert-bind` for client assertions, while `readonly` and `lastmod` restrict write operations. Attribute name discrepancies between the proxy and diverse remote servers can be resolved using the `rwm` overlay and `rwm-map attribute` for consistent client views.

ในบทความแนะนำเกี่ยวกับพร็อกซี OpenLDAP เราได้กล่าวถึงว่า slapd.conf คือไฟล์กำหนดค่าที่บอกบริการ slapd ว่าต้องทำอะไร  นอกเหนือจากนี้ ยังมีวิธีการกำหนดค่า slapd แบบไดนามิกที่เก็บค่ากำหนดค่าไว้ในฐานข้อมูล LDIF  ในอนาคต ฐานข้อมูล LDIF จะเป็นตัวกำหนดค่า slapd รูปแบบเก่าของ slapd.conf จะเลิกใช้แล้ว slapd.conf สามารถแปลงเป็นรูปแบบ LDIF ได้โดยใช้คำสั่ง slapdtest

slapdtest -f /etc/ldap/slapd.conf -F /etc/ldap/slapd.d

เพื่อการสาธิต เราจะใช้ slapd.conf เพื่ออธิบายวิธีการกำหนดค่าบริการ slapd เป็นพร็อกซี OpenLDAP และเราจะอธิบายส่วนที่มีการกำหนดค่า meta backend ไว้ที่นี่ การกำหนดค่า ldap backend คล้ายกับ meta backend โดยมีความแตกต่างเพียงเล็กน้อย

ด้านล่างนี้เป็นตัวอย่างการกำหนดค่า OpenLDAP พร็อกซีที่ใช้งานได้

#
# ดู slapd.conf(5) สำหรับรายละเอียดเกี่ยวกับตัวเลือกการกำหนดค่า
# ไฟล์นี้ไม่ควรสามารถอ่านได้โดยทุกคน
#

# รวม schema
include         /etc/openldap/schema/corba.schema
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/duaconf.schema
include         /etc/openldap/schema/dyngroup.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/java.schema
include         /etc/openldap/schema/misc.schema
include         /etc/openldap/schema/nis.schema
include         /etc/openldap/schema/openldap.schema
include         /etc/openldap/schema/ppolicy.schema
include         /etc/openldap/schema/collective.schema


# อนุญาตการเชื่อมต่อไคลเอ็นต์ LDAPv2 นี่ไม่ใช่ค่าเริ่มต้น
allow bind_v2

pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args

# โหลดโมดูล backend แบบไดนามิก
# - modulepath คือค่าที่ขึ้นอยู่กับสถาปัตยกรรม (ระบบ 32/64 บิต)
# - back_sql.la overlay ต้องการแพ็คเกจ openldap-server-sql
# - dyngroup.la และ dynlist.la ไม่สามารถใช้พร้อมกันได้

modulepath  /usr/lib/openldap
modulepath  /usr/lib64/openldap
moduleload  back_meta
moduleload  rwm

# สามบรรทัดถัดไปอนุญาตให้ใช้ TLS สำหรับการเข้ารหัสการเชื่อมต่อโดยใช้ใบรับรองทดสอบจำลองซึ่งคุณสามารถสร้างได้โดยการเรียกใช้
TLSCACertificateFile /root/openldap_proxy/data/certs/ldap.crt
TLSCertificateFile /root/openldap_proxy/data/certs/ldap.crt
TLSCertificateKeyFile /root/openldap_proxy/data/certs/ldap.key

# ระดับบันทึก
loglevel 256

#######################################################################
# คำจำกัดความฐานข้อมูล
#######################################################################

#### คำจำกัดความฐานข้อมูล #########################################

database meta
suffix   "dc=test,dc=com"
rootdn   "cn=admin,dc=test,dc=com"
rootpw   "password"

uri           "ldap://192.168.56.100/dc=test,dc=com"
readonly      yes
lastmod       off
suffixmassage "dc=test,dc=com" "dc=ou1,dc=test,dc=com"

uri "ldap://192.168.56.101/dc=test,dc=com"
readonly      yes
lastmod       off
suffixmassage "dc=test,dc=com" "dc=ou2,dc=test,dc=com"
idassert-bind bindmethod=simple
   binddn="cn=admin,dc=test,dc=com"
   credentials="password"
   mode=none
   flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=admin,dc=test,dc=com"

overlay       rwm
rwm-map       attribute   uid  sAMAccountName

นี่คือไฟล์ slapd.conf มาตรฐานซึ่งมีการประกาศ schema และการตั้งค่าทั่วไปอื่นๆ เราจะมุ่งเน้นเฉพาะการตั้งค่าที่เฉพาะเจาะจงสำหรับพร็อกซี

moduleload  back_meta

สิ่งนี้โหลดโมดูล meta backend เพื่อให้สามารถใช้ meta backend ได้

database meta

สิ่งนี้ประกาศ backend ของเซิร์ฟเวอร์ LDAP ซึ่งในกรณีนี้คือ meta สามารถตั้งค่าเป็น ldap ได้เช่นกัน

suffix   "dc=test,dc=com"

สิ่งนี้ประกาศบริบทการตั้งชื่อเสมือน (ฐาน) ที่ไคลเอ็นต์ LDAP สามารถใช้เพื่อค้นหาพร็อกซี LDAP สามารถเป็นค่าที่มีความหมายใดๆ ก็ได้ที่สอดคล้องกับไวยากรณ์ฐาน

rootdn   "cn=admin,dc=test,dc=com"
rootpw   "password"

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

uri           "ldap://192.168.56.100/dc=test,dc=com"

สิ่งนี้เริ่มรายการเซิร์ฟเวอร์ LDAP ระยะไกลใหม่ ไวยากรณ์ควรเป็น "://[:]/<vritual-naming-context/suffix>" บริบทการตั้งชื่อเสมือนในตอนท้ายของ uri มักจะเหมือนกับคำต่อท้ายที่ประกาศหลังจากฐานข้อมูล meta 

เซิร์ฟเวอร์ LDAP ระยะไกลใหม่ทุกตัวควรใช้ uri ที่แยกต่างหาก

suffixmassage "dc=test,dc=com" "dc=ou1,dc=test,dc=com"

สิ่งนี้ประกาศการแมประหว่างคำต่อท้าย/ฐานที่กำหนดไว้ในพร็อกซีและฐานจริงในเซิร์ฟเวอร์ LDAP ระยะไกลเพื่อให้สามารถเปลี่ยนเส้นทางแบบสอบถามไปยังฐานการค้นหาจริงของเซิร์ฟเวอร์ LDAP ระยะไกลเมื่อแบบสอบถามของไคลเอ็นต์เข้ามา ส่วนทางซ้ายคือบริบทการตั้งชื่อเสมือนซึ่งมักจะเหมือนกับคำต่อท้ายที่ประกาศหลังจากฐานข้อมูล meta ส่วนทางขวาคือฐานการค้นหาจริงในเซิร์ฟเวอร์ LDAP ระยะไกล

สิ่งนี้ไม่พร้อมใช้งานสำหรับ ldap backend

readonly      yes

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

lastmod       off

สิ่งนี้ยังบอกด้วยว่าไม่สามารถแก้ไขเซิร์ฟเวอร์ระยะไกลได้ ค่าเริ่มต้นคือ off ซึ่งจะไม่อนุญาตให้แก้ไข 

idassert-bind bindmethod=simple
   binddn="cn=admin,dc=test,dc=com"
   credentials="password"
   mode=none
   flags=non-prescriptive
idassert-authzFrom "dn.exact:cn=admin,dc=test,dc=com"

สิ่งเหล่านี้จำเป็นเมื่อเซิร์ฟเวอร์ LDAP ระยะไกลต้องการการตรวจสอบสิทธิ์ของไคลเอ็นต์เพื่อให้สามารถสอบถามเซิร์ฟเวอร์ได้ มี bindmethod ที่รองรับอยู่ไม่กี่วิธี หนึ่งในนั้นคือ simple ซึ่งต้องการ dn และรหัสผ่านปกติสำหรับการตรวจสอบสิทธิ์ binddn และข้อมูลประจำตัวควรจัดเตรียมโดยเซิร์ฟเวอร์ LDAP จริง

นอกจากนี้ authzFrom ยังประกาศว่าข้อมูลประจำตัวในพื้นที่ใดบ้างที่สามารถเข้าถึงคุณลักษณะการยืนยันข้อมูลประจำตัวได้ ในกรณีนี้ เราได้กำหนดว่า cn=admin,dc=test,dc=com สามารถเข้าถึงได้ นี่คือ rootdn ที่กำหนดไว้ในพร็อกซี

overlay           rwm
rwm-map       attribute   uid  sAMAccountName

สิ่งนี้กำหนดการแมประหว่างชื่อแอตทริบิวต์ที่เซิร์ฟเวอร์พร็อกซีเปิดเผยให้กับไคลเอ็นต์และชื่อแอตทริบิวต์จริงที่จัดเตรียมโดยเซิร์ฟเวอร์ LDAP ระยะไกล สิ่งนี้มีประโยชน์เมื่อเซิร์ฟเวอร์ LDAP ระยะไกลที่แตกต่างกันอาจมีชื่อแอตทริบิวต์ที่แตกต่างกันซึ่งมีความหมายเหมือนกัน ตัวอย่างเช่น ในเซิร์ฟเวอร์ LDAP ของ Linux uid จะหมายถึงรหัสผู้ใช้ ในขณะที่ใน Windows AD สิ่งเดียวกันอาจแสดงโดย sAMAccountName หรือมีประโยชน์เมื่อต้องการแอตทริบิวต์ที่กำหนดเอง

ในบทความถัดไป เราจะแนะนำวิธีการตั้งค่าพร็อกซี LDAP โดยใช้ slapd.conf

OPENLDAP OPENLDAP PROXY SLAPD SLAPD.CONF

  RELATED

  COMMENTS

0

No comment for this article.