ในบทความแนะนำเกี่ยวกับพร็อกซี 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