ฉันใช้เซิร์ฟเวอร์การตรวจสอบสิทธิ์ Kerberos / LDAP มาหลายปีแล้ว ข้อมูล Kerberos ถูกเก็บไว้ภายใน LDAP ตอนนี้ ฉันมีไซต์ที่สองและต้องการจำลองเซิร์ฟเวอร์ไปยังไซต์ใหม่ สิ่งนี้ใช้งานได้โดยทั่วไป แต่มีผลข้างเคียงที่แปลกประหลาด แต่ละเซิร์ฟเวอร์มี KDC และ LDAP ทำงานอยู่ KDC พูดคุยกับ LDAP โดยใช้โลคอล ldapi:///
ถ้าผมใช้เคดีซีเดิม krb1.example.com
ฉันสามารถพิสูจน์ตัวตนกับ LDAP หลักและตัวจำลองได้ ถ้าฉันใช้ KDC ที่จำลอง krb2.example.com
ฉันยังคงสามารถตรวจสอบสิทธิ์กับ LDAP หลักได้ แต่ลองใช้แบบจำลองที่ได้รับ
เริ่มการตรวจสอบสิทธิ์ SASL/GSSAPI แล้ว
ldap_sasl_interactive_bind_s: ข้อผิดพลาดในเครื่อง (-2)
ข้อมูลเพิ่มเติม: SASL(-1): ความล้มเหลวทั่วไป: ข้อผิดพลาด GSSAPI: ความล้มเหลวของ GSS ที่ไม่ได้ระบุ รหัสย่อยอาจให้ข้อมูลเพิ่มเติม (KDC ไม่รองรับประเภทการเข้ารหัส)
ซึ่งเป็นเรื่องแปลกเนื่องจาก krb2
เป็นการโคลนบนคอนเทนเนอร์ LXC อย่างแท้จริง krb1
เช่น.การกำหนดค่าเหมือนกันอย่างปลอดภัยสำหรับการเปลี่ยนแปลงที่จำเป็นสำหรับการจำลองแบบ แต่ที่น่างงกว่านั้นคือการดูที่แคชของตั๋วหลังจากพยายามค้นหาเซิร์ฟเวอร์ LDAP ด้วย TGT จาก krb1
root@krb2:/# klist -e
แคชตั๋ว: FILE:/tmp/krb5_cc_0.tkt
หลักเริ่มต้น: [email protected]
หลักการเริ่มต้นบริการหมดอายุที่ถูกต้อง
04.02.2022 01:05:29 04.02.2022 11:05:29 krbtgt/[email protected]
ต่ออายุจนถึง 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 01:05:42 04.02.2022 11:05:29 ldap/[email protected]
ต่ออายุจนถึง 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 01:05:53 04.02.2022 11:05:29 น. ldap/[email protected]
ต่ออายุจนถึง 05.02.2022 01:05:26, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
และจาก krb2
:
root@krb2:/# klist -e
แคชตั๋ว: FILE:/tmp/krb5_cc_0.tkt
หลักเริ่มต้น: [email protected]
หลักการเริ่มต้นบริการหมดอายุที่ถูกต้อง
04.02.2022 00:53:45 04.02.2022 10:53:45 krbtgt/[email protected]
ต่ออายุจนถึง 05.02.2022 00:53:41, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
04.02.2022 00:53:47 04.02.2022 10:53:45 ldap/[email protected]
ต่ออายุจนถึง 05.02.2022 00:53:41, Etype (skey, tkt): aes256-cts-hmac-sha1-96, aes256-cts-hmac-sha1-96
ซึ่งไม่มีรายการสำหรับ ldap/krb2.example.com
เนื่องจากข้อผิดพลาด แต่เห็นได้ชัดว่าไม่มีความแตกต่างในประเภทการเข้ารหัสที่จำเป็น แล้วมันบ่นทำไม
ปัจจุบันเซิร์ฟเวอร์ LDAP ทั้งสองอ้างอิงถึง krb1
. แต่เนื่องจากการจำลองแบบ LDAP คีย์ทั้งหมดควรเหมือนกัน เช่น คีย์จาก krb1
ควรเหมือนกับจาก krb2
ไม่ควรหรือไม่ และถ้าคีย์จาก krb1
ใช้งานได้กับเซิร์ฟเวอร์ LDAP ทั้งสอง เหตุใดคีย์จากเซิร์ฟเวอร์จำลองจึงใช้ได้กับ LDAP หลักเท่านั้น
รองรับ_enctypes
สำหรับอาณาจักรทั้งสอง /etc/krb5kdc/kdc.conf
เป็น support_enctypes = aes256-cts:ปกติ arcfour-hmac:ปกติ des3-hmac-sha1:ปกติ des-cbc-crc:ปกติ des:ปกติ des:v4 des:norealm des:onlyrealm des:afs3
. ไม่มีคำสั่ง enctype ในทั้งสองอย่าง /etc/krb5.conf
. ไม่มี เอสเอสเอฟ
การกำหนดค่าที่ใช้ใน LDAP เดอะ krbPrincipalName
รายการสำหรับ krb2
มีอยู่ในทั้ง LDAP
แม้ว่าฉันจะได้รับ TGT จาก krb2
แล้วเปลี่ยน krb5.conf
ถึง krb1
สำหรับตั๋วบริการ ฉันสามารถยืนยันตัวตนกับ LDAP ได้ krb2
.
OpenLDAP อยู่ในเวอร์ชัน 2.4.47, Kerberos 1.17 บนทั้งสองเครื่อง (ปัจจุบัน Debian เสถียร)
อัปเดต: ปรากฎว่าการจำลองไม่สมบูรณ์นั่นคือ krbPrincipalKey
ไม่ได้รับการจำลองแบบ (อย่างน่าเชื่อถือ) ฉันตรวจสอบ ตบ
เอาต์พุตการดีบัก:
9 ก.พ. 19:14:52 น. krb1lapd[19560]: conn=1300 op=3 BIND authcid="sync/[email protected]" authzid="dn:uid=sync/krb2.example.com, cn=example.com,cn=gssapi,[email protected]"
9 ก.พ. 19:14:52 น. krb1lapd[19560]: conn=1300 op=3 BIND dn="cn=admin,dc=example,dc=com" mech=GSSAPI sasl_ssf=256 ssf=256
ดังนั้น, ซินโพรฟ
เห็นได้ชัดว่าผูกเป็น cn=ผู้ดูแลระบบ,dc=ตัวอย่าง,dc=com
ซึ่งเป็นไปตามวัตถุประสงค์ อย่างไรก็ตาม หากข้าพเจ้าทำ
root@krb1:~# ldapsearch -b 'cn=KERBEROS,dc=example,dc=com' -D 'cn=admin,dc=example,dc=com' -Wx 'krbPrincipalName=ldap/krb2.example.com@ ตัวอย่าง.COM'
ถ้าอย่างนั้นฉันก็เห็น krbPrincipalKey
. เหตุใดจึงไม่ได้รับการจำลองแบบ
ฉันเริ่มต้นใหม่ ตบ
บน krb2
พร้อมตัวเลือก -c กำจัด = 1, csn = 0
ซึ่งฉันเข้าใจว่าควรซิงค์ฐานข้อมูลทั้งหมด แต่เนื่องจากบางรายการมีรหัสและบางรายการไม่มี ผมจึงไม่เชื่อว่าจะเป็นความจริง