OpenLDAP Proxy -- slapd.conf

  sonic0002        2017-10-29 04:01:39       21,062        0          English  简体中文  繁体中文  ภาษาไทย  Tiếng Việt 

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


  0 COMMENT


No comment for this article.



  RANDOM FUN

This might be how Windows Diagnostic tool works