มีการเปลี่ยนแปลงอะไรบ้างในการตรวจสอบสิทธิ์ LDAP ภายนอกใน Zimbra
การตรวจสอบสิทธิ์ LDAP ภายนอกช่วยให้ Zimbra ตรวจสอบรหัสผ่านของผู้ใช้กับไดเร็กทอรีอื่นแทนที่จะใช้รหัสผ่านที่จัดเก็บไว้ใน LDAP ภายในของ Zimbra คู่มือผู้ดูแลระบบ Zimbra Daffodil (v10) ฉบับปัจจุบันระบุว่า การตรวจสอบสิทธิ์ LDAP ภายนอกจะถูกกำหนดค่าต่อโดเมน และวิธีการภายนอกจะพยายามเชื่อมต่อกับไดเร็กทอรีที่ระบุด้วยข้อมูลประจำตัวผู้ใช้ที่ให้มา หากการเชื่อมต่อสำเร็จ รหัสผ่านจะถือว่าถูกต้อง
การดำเนินการนี้ไม่ได้เปลี่ยนไดเร็กทอรี LDAP ภายนอกให้กลายเป็นฐานข้อมูลบัญชีของ Zimbra โดยอัตโนมัติ Zimbra ยังคงจัดเก็บข้อมูลบัญชีเฉพาะของ Zimbra ไว้ในไดเร็กทอรีของตนเอง คู่มือเวอร์ชัน 10 ระบุไว้อย่างชัดเจนว่าโดยปกติแล้วผู้ใช้จะต้องมีอยู่ในทั้ง Zimbra และไดเร็กทอรีภายนอก เว้นแต่คุณจะกำหนดค่าการจัดเตรียมอัตโนมัติแยกต่างหาก
สำหรับเอกสารประกอบผลิตภัณฑ์ฉบับปัจจุบัน โปรดดูที่คู่มือผู้ดูแลระบบ Zimbra Daffodil v10และคู่มือการกำหนดค่า Zimbra v10
รายการตรวจสอบการวางแผนอย่างรวดเร็ว
- ยืนยันโดเมน Zimbra ที่คุณต้องการเปลี่ยนแปลง ตัวอย่าง
example.comเช่น
- ตรวจสอบว่าผู้ใช้เหล่านั้นมีอยู่ใน Zimbra อยู่แล้วหรือไม่ หรือวางแผนการจัดสรรผู้ใช้โดยอัตโนมัติแยกต่างหาก
- ต้องทราบชื่อโฮสต์ LDAP ภายนอก พอร์ต วิธีการ TLS และห่วงโซ่ใบรับรอง
- เข้าใจวิธีการจับคู่ชื่อผู้ใช้ Zimbra กับ User DN ใน LDAP
- หากไม่สามารถสร้าง DN โดยตรงจากชื่อผู้ใช้ ให้เตรียมฐานข้อมูลการค้นหา ตัวกรองการค้นหา และบัญชีผู้ใช้สำหรับการค้นหาที่มีสิทธิ์น้อยที่สุด
- ในระหว่างการทดสอบ ให้เปิดเซสชันผู้ดูแลระบบ Zimbra ไว้เสมอ เพื่อให้คุณสามารถย้อนกลับไปยังเวอร์ชันก่อนหน้าได้อย่างรวดเร็ว
เลือกวิธีการแมปที่ถูกต้องก่อน
| วิธี | ใช้เมื่อ | การตั้งค่าหลัก |
| เทมเพลต Direct bind-DN | DN ของผู้ใช้เป็นไปตามรูปแบบที่คาดเดาได้ | zimbraAuthLdapURL,zimbraAuthLdapBindDn |
| การแมปการค้นหาและตัวกรอง | DN ของผู้ใช้แตกต่างกัน หรือผู้ใช้กระจายอยู่ทั่ว OU หลายแห่ง | zimbraAuthLdapSearchBase, zimbraAuthLdapSearchFilter, ข้อมูลรับรองการค้นหาและผูกมัด |
| DN ภายนอกต่อบัญชี | บัญชีจำนวนเล็กน้อยจำเป็นต้องมีการแมปอย่างชัดเจน | zimbraAuthLdapExternalDnในบัญชีส่วนบุคคล |
คู่มือการกำหนดค่า v10 ปัจจุบันยังคงกำหนดแอตทริบิวต์ search-base, search-bind, search-filter และ external-DN ต่อบัญชี เอกสารเก่าจาก Zimbra Tech Center อธิบายวิธีการใช้งานการแมปเหล่านี้ในทางปฏิบัติ เนื่องจากเอกสารเหล่านั้นมีมาก่อน Daffodil โปรดใช้เป็นข้อมูลพื้นฐานในการปฏิบัติงานและตรวจสอบรายละเอียดกับเวอร์ชันที่ติดตั้งของคุณก่อนที่จะทำการย้ายข้อมูลขนาดใหญ่ ดูหมายเหตุ external LDAP อย่างเป็นทางการจาก Zimbra Tech Center
ขั้นตอนที่ 1: บันทึกการตั้งค่าการตรวจสอบสิทธิ์โดเมนปัจจุบัน
เรียกใช้คำสั่งผู้ดูแลระบบในฐานะzimbraผู้ใช้ระบบปฏิบัติการ ก่อนทำการเปลี่ยนแปลงใดๆ โปรดบันทึกค่าโดเมนที่มีอยู่ก่อน:
su - zimbra
zmprov gd example.com \
zimbraAuthMech \
zimbraAuthLdapURL \
zimbraAuthLdapBindDn \
zimbraAuthLdapSearchBase \
zimbraAuthLdapSearchFilter \
zimbraAuthFallbackToLocal
บันทึกผลลัพธ์ลงในบันทึกการเปลี่ยนแปลงของคุณ คู่มือการกำหนดค่า v10 ระบุค่าที่ถูกต้องสำหรับzimbraAuthMechรวมถึงzimbra, ldap, ad, และ Kerberos หรือกลไกแบบกำหนดเอง สำหรับคู่มือนี้ กลไกเป้าหมายldapคือ
ขั้นตอนที่ 2: ตรวจสอบการเชื่อมต่อเครือข่ายและ TLS ก่อนเปลี่ยน Zimbra
อย่าแก้ไขปัญหาการแมปการตรวจสอบสิทธิ์จนกว่าจะแน่ใจว่าการเชื่อมต่อพื้นฐานใช้งานได้ จากเซิร์ฟเวอร์ Zimbra ให้ยืนยันการแก้ไข DNS และตรวจสอบว่าสามารถเข้าถึงปลายทาง LDAP ได้ สำหรับ LDAPS คุณสามารถตรวจสอบห่วงโซ่ใบรับรองด้วย OpenSSL ได้:
openssl s_client -connect ldap.example.net:636 \
-servername ldap.example.net -showcerts
สำหรับไดเร็กทอรีที่ใช้ LDAP มาตรฐานร่วมกับ StartTLS ให้ทดสอบเอนด์พอยต์ที่รองรับ StartTLS ด้วยไคลเอ็นต์ LDAP ที่เหมาะสมกับระบบปฏิบัติการของคุณ หากldapsearchติดตั้งแล้ว การตรวจสอบบัญชีค้นหาอาจมีลักษณะดังนี้:
ldapsearch -x -H ldap://ldap.example.net:389 -ZZ \
-D "cn=zimbra-search,ou=svc,dc=example,dc=net" -W \
-b "ou=people,dc=example,dc=net" \
"(uid=alice)" dn
คู่มือผู้ดูแลระบบ Zimbra เวอร์ชัน 10 ระบุว่าldaps:ปลายทาง (endpoint) จำเป็นต้องมีใบรับรองเซิร์ฟเวอร์ LDAP ที่ได้รับการยอมรับจาก Zimbra อย่าข้ามขั้นตอนการตรวจสอบใบรับรองเพียงเพื่อให้การทดสอบผ่าน ติดตั้ง CA หรือห่วงโซ่ใบรับรองที่เหมาะสมตามขั้นตอนการจัดเก็บความเชื่อถือสำหรับ Zimbra เวอร์ชันที่คุณใช้งาน
ขั้นตอนที่ 3: กำหนดค่าเทมเพลต bind-DN โดยตรงเมื่อสามารถคาดเดา DN ของผู้ใช้ได้
นี่คือรูปแบบที่ง่ายที่สุด สมมติว่าไดเร็กทอรีภายนอกจัดเก็บผู้ใช้เป็นuid=alice,ou=people,dc=example,dc=netและชื่อผู้ใช้ Zimbra คือalice@example.comกำหนดค่าโดเมนดังนี้:
zmprov md example.com zimbraAuthMech ldap
zmprov md example.com \
zimbraAuthLdapURL "ldaps://ldap.example.net:636"
zmprov md example.com \
zimbraAuthLdapBindDn "uid=%u,ou=people,dc=example,dc=net"
คู่มือผู้ดูแลระบบอธิบายzimbraAuthLdapBindDnว่าเป็นสตริงรูปแบบที่ใช้ในการกำหนด DN ที่ใช้สำหรับการเชื่อมต่อภายนอก เอกสารอย่างเป็นทางการของ Zimbra Tech Center อธิบายถึงค่าทดแทนทั่วไป เช่น%uสำหรับส่วนท้องถิ่นของชื่อผู้ใช้ และ%nสำหรับชื่อผู้ใช้ทั้งหมด
ใช้เทมเพลต DN เฉพาะเมื่อระบุวัตถุในไดเร็กทอรีที่ถูกต้องได้อย่างแน่นอนเท่านั้น หากผู้ใช้อยู่ภายใต้หน่วยงานองค์กรที่แตกต่างกัน หรือ DN ของผู้ใช้ไม่ได้มาจากชื่อผู้ใช้ในการเข้าสู่ระบบ ให้ใช้รูปแบบตัวกรองการค้นหาแทน
ขั้นตอนที่ 4: ใช้การแมปตัวกรองการค้นหาเมื่อไม่สามารถสร้าง DN ได้โดยตรง
การแมปตัวกรองการค้นหาช่วยให้ Zimbra ค้นหาข้อมูลผู้ใช้ก่อน จากนั้นจึงตรวจสอบสิทธิ์กับ DN ที่ได้มา คู่มือการกำหนดค่าเวอร์ชัน 10 กำหนดคุณลักษณะโดเมนที่เกี่ยวข้องกับการค้นหาที่จำเป็นไว้
การกำหนดค่าแบบ OpenLDAP ทั่วไปมีดังนี้:
zmprov md example.com \
zimbraAuthLdapSearchBase "ou=people,dc=example,dc=net"
zmprov md example.com \
zimbraAuthLdapSearchFilter "(uid=%u)"
zmprov md example.com \
zimbraAuthLdapSearchBindDn \
"cn=zimbra-search,ou=svc,dc=example,dc=net"
เพื่อหลีกเลี่ยงการบันทึกรหัสผ่านของไดเร็กทอรีลงในประวัติคำสั่งเชลล์โดยตรง ให้บันทึกรหัสผ่านนั้นลงในตัวแปรเชลล์ชั่วคราวก่อน:
read -s LDAP_BIND_PASSWORD
zmprov md example.com \
zimbraAuthLdapSearchBindPassword "$LDAP_BIND_PASSWORD"
unset LDAP_BIND_PASSWORD
บัญชีผู้ใช้สำหรับการค้นหาควรมีสิทธิ์ในการอ่านเพียงอย่างเดียวที่จำเป็นในการค้นหาผู้ใช้ภายใต้ฐานข้อมูลที่กำหนดค่าไว้ ไม่จำเป็นต้องมีสิทธิ์ในการบริหารจัดการไดเร็กทอรีอย่างกว้างขวาง
สำหรับ Active Directory ตัวกรองอาจใช้sAMAccountNameหรือuserPrincipalNameขึ้นอยู่กับรูปแบบการเข้าสู่ระบบของคุณ Zimbra ยังมีกลไกการตรวจสอบสิทธิ์ Active Directory ภายนอก ดังนั้นควรใช้กลไกเฉพาะของ AD เมื่อเหมาะสมกับการใช้งานของคุณมากกว่าการบังคับใช้สภาพแวดล้อม AD ทุกแห่งผ่านการตั้งค่า LDAP ทั่วไป
ขั้นตอนที่ 5: ตรวจสอบว่า Zimbra จัดเก็บข้อมูลอะไรไว้บ้าง
อ่านค่าแอตริบิวต์ของโดเมนกลับมาหลังจากทำการเปลี่ยนแปลงแล้ว:
zmprov gd example.com \
zimbraAuthMech \
zimbraAuthLdapURL \
zimbraAuthLdapBindDn \
zimbraAuthLdapSearchBase \
zimbraAuthLdapSearchFilter \
zimbraAuthLdapSearchBindDn \
zimbraAuthFallbackToLocal
ตรวจสอบข้อผิดพลาดในการอ้างอิง, Base DN ที่ไม่ถูกต้อง, ชื่อโฮสต์ที่ไม่คาดคิด หรือการแมปเก่าที่หลงเหลืออยู่จากการลองครั้งก่อน ห้ามพิมพ์รหัสผ่าน search-bind ลงในเอกสาร, ภาพหน้าจอ, ตั๋ว หรือบันทึกการทำงานของเชลล์
ขั้นตอนที่ 6: ทดสอบกับผู้ใช้ควบคุมหนึ่งรายก่อนเปิดใช้งานในวงกว้าง
เลือกบัญชีทดสอบที่ไม่ใช่ผู้ดูแลระบบ ซึ่งมีอยู่ในทั้ง Zimbra และไดเร็กทอรีภายนอก ทดสอบกรณีเหล่านี้อย่างรอบคอบ:
- รหัสผ่าน LDAP ภายนอกที่ถูกต้องจะช่วยให้สามารถเข้าสู่ระบบ Zimbra ได้
- ระบบปฏิเสธรหัสผ่าน LDAP ภายนอกที่ไม่ถูกต้อง
- บัญชีผู้ใช้ในไดเร็กทอรีที่ถูกปิดใช้งานหรือล็อกไว้ จะทำงานตามนโยบายไดเร็กทอรีของคุณ
- บัญชี Zimbra ที่ไม่มีอยู่จะไม่สามารถเข้าสู่ระบบได้ เว้นแต่จะตั้งค่าการสร้างบัญชีอัตโนมัติไว้แล้ว
- ความล้มเหลวของเซิร์ฟเวอร์ LDAP หรือเครือข่ายจะทำให้เกิดพฤติกรรมความล้มเหลวตามที่คาดไว้
การทดสอบครั้งสุดท้ายมีความสำคัญเพราะzimbraAuthFallbackToLocalเป็นตัวเลือกโดเมนแยกต่างหาก เอกสารเวอร์ชัน 10 ระบุว่าค่าเริ่มต้นคือ การเปิดFALSEใช้งานการสำรองข้อมูลอาจมีประโยชน์สำหรับการย้ายข้อมูลที่ออกแบบมาอย่างรอบคอบ แต่ก็อาจทำให้ความคาดหวังที่ว่าการปิดใช้งานหรือเปลี่ยนรหัสผ่านในไดเร็กทอรีภายนอกจะบล็อกการเข้าถึงทันทีหากรหัสผ่าน Zimbra ในเครื่องเดิมยังคงใช้งานได้นั้นไม่เป็นไปตามที่คาดไว้ ควรพิจารณาการสำรองข้อมูลเป็นนโยบายด้านความปลอดภัย ไม่ใช่สวิตช์สำหรับการแก้ไขปัญหาทั่วไป
ขั้นตอนที่ 7: ตัดสินใจว่าคุณต้องการการจัดเตรียมอัตโนมัติเพิ่มเติมหรือไม่
การตรวจสอบสิทธิ์ภายนอกและการจัดเตรียมบัญชีเป็นฟังก์ชันที่แตกต่างกัน หากผู้ใช้ใหม่ในไดเร็กทอรีควรได้รับบัญชี Zimbra โดยอัตโนมัติ ให้กำหนดค่าการจัดเตรียมบัญชี Zimbra อัตโนมัติแยกต่างหาก คู่มือผู้ดูแลระบบเวอร์ชัน 10 ปัจจุบันได้อธิบายโหมด EAGER, LAZY และ MANUAL รวมถึงzimbraAutoProv*คุณลักษณะ เฉพาะของแต่ละโหมดไว้แล้ว
อย่านำการตั้งค่าการตรวจสอบสิทธิ์มาใช้ซ้ำโดยไม่พิจารณาให้รอบคอบสำหรับการจัดเตรียมอัตโนมัติ การจัดเตรียมอัตโนมัติมีตัวเลือก URL, การผูก, ฐานการค้นหา, ตัวกรอง, การแมปชื่อบัญชี และการแมปคุณลักษณะที่แยกต่างหาก ก่อนอื่นต้องทำให้การตรวจสอบสิทธิ์ภายนอกมีความน่าเชื่อถือสำหรับผู้ใช้ที่มีอยู่ จากนั้นจึงออกแบบการจัดเตรียมเป็นขั้นตอนที่สอง
รูปแบบความล้มเหลวที่พบบ่อยและสิ่งที่ควรตรวจสอบ
| อาการ | พื้นที่ที่มีแนวโน้มสูง | ตรวจสอบ |
| ผู้ใช้ทุกคนล้มเหลวทันที | การเชื่อมต่อหรือ TLS | DNS, พอร์ต, ความน่าเชื่อถือของใบรับรอง, จุดเชื่อมต่อ LDAP |
| มีผู้ใช้เพียงบางส่วนเท่านั้นที่ล้มเหลว | การแมป DN | การจัดวาง OU, เทมเพลต bind-DN, ความเป็นเอกลักษณ์ของตัวกรองการค้นหา |
| การค้นหาผ่าน LDAP ใช้งานได้ แต่การเข้าสู่ระบบ Zimbra ล้มเหลว | การผูกผู้ใช้หรือสถานะบัญชี | ข้อมูลที่ส่งคืน ได้แก่ DN, รหัสผ่านผู้ใช้, สถานะการล็อก/ปิดใช้งานไดเร็กทอรี และการมีอยู่ของบัญชี Zimbra |
| ผู้ใช้ใหม่ในไดเร็กทอรีไม่สามารถเข้าสู่ระบบได้ | การจัดเตรียม | สร้างบัญชี Zimbra ที่ตรงกัน หรือกำหนดค่าการจัดสรรบัญชีอัตโนมัติ |
| LDAPS ล้มเหลวหลังจากเปลี่ยนจาก LDAP | ใบรับรองความน่าเชื่อถือ | ห่วงโซ่ CA, การจับคู่ชื่อโฮสต์, ที่เก็บความเชื่อถือของ Zimbra |
| รหัสผ่านภายในเครื่องเดิมยังใช้งานได้อยู่ | นโยบายสำรอง | ทบทวนzimbraAuthFallbackToLocal |
แผนการย้อนกลับ
หากการกำหนดค่าไดเร็กทอรีภายนอกขัดขวางการตรวจสอบสิทธิ์ผู้ใช้ตามปกติ ให้เปลี่ยนโดเมนกลับไปใช้การตรวจสอบสิทธิ์ Zimbra ภายในโดยใช้เซสชันผู้ดูแลระบบที่เปิดอยู่แล้ว:
zmprov md example.com zimbraAuthMech zimbra
จากนั้นตรวจสอบค่า:
zmprov gd example.com zimbraAuthMech
อย่าลบแอตทริบิวต์ LDAP ภายนอกระหว่างการย้อนกลับฉุกเฉิน เว้นแต่จะมีเหตุผลที่จำเป็น การเก็บรักษาแอตทริบิวต์เหล่านั้นไว้จะช่วยให้ตรวจสอบสิ่งที่ล้มเหลวและลองใหม่ได้ง่ายขึ้นหลังจากแก้ไขปัญหาการแมปหรือปัญหา TLS แล้ว
บทสรุปอ้างอิงเชิงปฏิบัติ
zimbraAuthMech: เลือกกลไกการตรวจสอบสิทธิ์สำหรับโดเมน
zimbraAuthLdapURL: จุดเชื่อมต่อ LDAP ภายนอก; ใช้ldaps:สำหรับ LDAP ผ่าน SSL
zimbraAuthLdapBindDn: รูปแบบที่ใช้ในการสร้าง User DN สำหรับการเชื่อมโยงโดยตรง
zimbraAuthLdapSearchBase: โครงสร้างย่อยที่ Zimbra ใช้ค้นหาผู้ใช้ภายนอก
zimbraAuthLdapSearchFilter: ตัวกรอง LDAP ที่ใช้ในการระบุตำแหน่งผู้ใช้
zimbraAuthLdapSearchBindDnและzimbraAuthLdapSearchBindPassword: ข้อมูลประจำตัวที่ใช้ในการค้นหาเมื่อการค้นหาแบบไม่ระบุตัวตนไม่เหมาะสม
zimbraAuthLdapExternalDn: การกำหนดค่า DN ภายนอกอย่างชัดเจนสำหรับบัญชี Zimbra เดียว
zimbraAuthFallbackToLocal: ควบคุมว่า Zimbra จะเปลี่ยนไปใช้การตรวจสอบสิทธิ์ภายในเครื่องหรือไม่ หากการตรวจสอบสิทธิ์ภายนอกล้มเหลว
รายการตรวจสอบการตรวจสอบขั้นสุดท้าย
- สามารถเข้าถึงเอนด์พอยต์ LDAP ภายนอกได้จากเซิร์ฟเวอร์เมลบ็อกซ์ Zimbra
- การตรวจสอบความถูกต้องของใบรับรอง TLS สำเร็จโดยไม่ต้องใช้วิธีแก้ไขปัญหาที่ไม่ปลอดภัย
- เทมเพลต bind-DN หรือตัวกรองการค้นหาที่เลือกจะเชื่อมโยงการเข้าสู่ระบบหนึ่งรายการกับรายการในไดเร็กทอรีเพียงรายการเดียว
- ผู้ใช้งานทดสอบมีอยู่ใน Zimbra หรือมีการตั้งค่าการจัดสรรบัญชีผู้ใช้โดยอัตโนมัติไว้แล้ว
- การทดสอบรหัสผ่านที่ถูกต้องและไม่ถูกต้องทำงานได้ตามที่คาดไว้
- การทำงานสำรองต้องสอดคล้องกับนโยบายความปลอดภัยของคุณ
- การตั้งค่าโดเมนดั้งเดิมและคำสั่งย้อนกลับได้รับการบันทึกไว้แล้ว
สำหรับการเปลี่ยนแปลงในระบบการผลิต ควรเลือกใช้วิธีทยอยเปิดใช้งาน โดยเริ่มจากโดเมนทดสอบหนึ่งโดเมนหรือกลุ่มผู้ใช้ขนาดเล็ก การตรวจสอบสิทธิ์ LDAP ภายนอกนั้นทำได้ง่ายเมื่อการแมปข้อมูลประจำตัวสามารถคาดเดาได้ ความล้มเหลวที่ยากที่สุดส่วนใหญ่มักเกิดจากการแมป DN ความน่าเชื่อถือของใบรับรอง หรือการสับสนระหว่างการตรวจสอบสิทธิ์กับการจัดเตรียมบัญชี