ฉันใช้เซิร์ฟเวอร์การตรวจสอบสิทธิ์ 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
หลักเริ่มต้น: user@EXAMPLE.COM
หลักการเริ่มต้นบริการหมดอายุที่ถูกต้อง
04.02.2022 01:05:29 04.02.2022 11:05:29 krbtgt/EXAMPLE.COM@EXAMPLE.COM
ต่ออายุจนถึง 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/krb1.example.com@EXAMPLE.COM
ต่ออายุจนถึง 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/krb2.example.com@EXAMPLE.COM
ต่ออายุจนถึง 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
หลักเริ่มต้น: user@EXAMPLE.COM
หลักการเริ่มต้นบริการหมดอายุที่ถูกต้อง
04.02.2022 00:53:45 04.02.2022 10:53:45 krbtgt/EXAMPLE.COM@EXAMPLE.COM
ต่ออายุจนถึง 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/krb1.example.com@EXAMPLE.COM
ต่ออายุจนถึง 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/krb2.example.com@EXAMPLE.COM" authzid="dn:uid=sync/krb2.example.com, cn=example.com,cn=gssapi,cn=auth@EXAMPLE.COM"
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ซึ่งฉันเข้าใจว่าควรซิงค์ฐานข้อมูลทั้งหมด แต่เนื่องจากบางรายการมีรหัสและบางรายการไม่มี ผมจึงไม่เชื่อว่าจะเป็นความจริง