Score:0

KDC ไม่รองรับประเภทการเข้ารหัสในขณะที่ตรวจสอบความถูกต้องกับ OpenLDAP

ธง fr

ฉันใช้เซิร์ฟเวอร์การตรวจสอบสิทธิ์ 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ซึ่งฉันเข้าใจว่าควรซิงค์ฐานข้อมูลทั้งหมด แต่เนื่องจากบางรายการมีรหัสและบางรายการไม่มี ผมจึงไม่เชื่อว่าจะเป็นความจริง

user1686 avatar
fr flag
คุณหมายความว่าอย่างไรโดย "ปัจจุบันเซิร์ฟเวอร์ LDAP ทั้งสองอ้างถึง krb1" คุณกำลังพูดถึง KDC ใน krb5.conf หรือเกี่ยวกับ keytab หรืออย่างอื่น?
user1686 avatar
fr flag
คุณสามารถแสดงกระบวนการรับรองความถูกต้องจริงที่ล้มเหลวได้หรือไม่? หากคอนเทนเนอร์เป็นการโคลนที่แน่นอน บริการ LDAP บน kdc2 _know_ นั้นเรียกว่า `ldap/kdc2` แทนที่จะเป็น `ldap/kdc1` หรือไม่ เช่น อย่างน้อยก็มีแท็บคีย์ใหม่สำหรับชื่อใหม่ หรือยังคงใช้อยู่ คีย์แท็บเดิม?
fr flag
ใช่ ชื่อโฮสต์ ที่อยู่ IP รายการ DNS แท็บคีย์ ใบรับรอง TLS ได้รับการปรับให้ตรงกับอินสแตนซ์ใหม่
fr flag
สิ่งที่ฉันทำคือ: ldapsearch -b "cn=admin,dc=example,dc=com" -H ldap://kdc?.uac.microsult.de การตั้งค่า /etc/krb5.conf เป็น kdc2 ฉันสามารถทำ kinit ได้ ฉันสามารถค้นหา kdc1 ได้ แต่ kdc2 ล้มเหลว ถ้าฉันเปลี่ยน kdc เป็น krb1 ใน /etc/krb5.conf การสืบค้นเป็น kdc2 ก็สำเร็จเช่นกันโดยใช้ตั๋วเดียวกัน
user1686 avatar
fr flag
คุณสามารถขอตั๋วด้วยตนเองจาก 'kdc2' KDC โดยใช้ `KRB5_TRACE=/dev/stderr kvno ldap/kdc2.uac.microsult.de` ได้หรือไม่ และถ้าล้มเหลว krb5kdc จะรายงานอะไรไปยังล็อกไฟล์ คุณสามารถตรวจสอบได้หรือไม่ว่า KDC ทั้งสองมีข้อมูลเดียวกันในแบบจำลอง LDAP ของตน (เช่น โดยการทิ้งข้อมูลทั้งสองอย่างผ่านlapcat หรือผ่าน ldapsearch ด้วยการตรวจสอบสิทธิ์ rootdn/rootpw) คุณสามารถเรียกใช้ `kadmin.local` ใน KDC ทั้งสองเพื่อตรวจสอบสิ่งที่พวกเขารู้เกี่ยวกับหลักการ ldap/kdc2 ได้หรือไม่
user1686 avatar
fr flag
อ่า และคุณไม่ควรมีการตั้งค่า "supported_enctypes" แบบนั้น... มันอาจจะไม่ _hurt_ (แต่) แต่รายการนั้นค่อนข้างเก่าแล้ว และการกำหนดค่าอย่างชัดแจ้งก็ไม่ได้มีจุดประสงค์ที่ดี
fr flag
คำใบ้ ```kadmin.local``` แสดงให้เห็นว่าเซิร์ฟเวอร์จำลองไม่มีคีย์สำหรับหลักการบางอย่าง ฉันไม่เห็นสิ่งนี้เนื่องจากผู้ดูแลระบบหลักของฉันสำหรับ LDAP ไม่เห็นคีย์เนื่องจาก ACL เช่น รายการดูเหมือนกันบนทั้งสองเซิร์ฟเวอร์ อย่างไรก็ตาม หลักการจำลองแบบควรเห็นคีย์ ดังนั้น ดูเหมือนว่าฉันต้องแก้ปัญหา ACL และ Authzid ```slapd``` ฉันยังไม่พบค่าการดีบักที่เหมาะสมเพื่อดูว่าผู้ใช้รายใดใช้รหัสรับรองความถูกต้องกับ DN ใด แต่อย่างน้อยก็เป็นปัญหาการกำหนดค่า LDAP อย่างแท้จริง
user1686 avatar
fr flag
ระดับการบันทึก `stats` จะเป็นการเริ่มต้นที่ดี
Score:0
ธง fr

ปัญหาได้รับการแก้ไขโดย สแลคแคท ฐานข้อมูลหลักและ ตบ ตั้งแต่เริ่มต้นกับผู้บริโภค

ขอบคุณ user1686 ที่ชี้ไปยังสิ่งที่ต้องตรวจสอบเพื่อให้ฉันเลิกคิดวนเวียน

สาเหตุของปัญหาคือตัวการ Kerberos บางตัวใน LDAP ไม่มี krbPrincipalKey คุณลักษณะ. ldap/krb2.example.com เป็นหนึ่งในนั้น สิ่งนี้ชัดเจนโดยใช้ get_principal ใน kadmin.local ในแต่ละเซิร์ฟเวอร์ ความสับสนเกิดขึ้นเนื่องจากการใช้ DN การผูกที่ไม่เหมาะสมและ ACL ที่เชื่อมโยงกับสิ่งเหล่านั้น นอกจากนี้ ฉันเชื่อว่าฉันใช้ตัวเลือกสำหรับ ตบ เพื่อดึงฐานข้อมูลทั้งหมดอีกครั้งเมื่อเริ่มต้นระบบ ซึ่งไม่ได้เกิดขึ้น

ข้อผิดพลาดบางอย่างที่ทำให้ฉันติดอยู่: ตั้งแต่เปิดใช้งาน TLS -Y ภายนอก ใช้งานไม่ได้ ฉันใช้หลักการ Kerberos พิเศษสำหรับการบำรุงรักษาฐานข้อมูล ครูใหญ่ของฉันสำหรับ cn=การกำหนดค่า ไม่สามารถเข้าถึงข้อมูลประจำตัวที่จัดเก็บไว้ในฐานข้อมูลหลัก ซึ่งฉันไม่ทราบอีกต่อไป ดังนั้นการเปรียบเทียบรายการของ LDAP ทั้งสองจึงให้ผลลัพธ์ที่เหมือนกัน แม้ว่าหลักการจำลองแบบจริงจะสามารถเข้าถึงข้อมูลประจำตัวได้ ฉันอาจใช้ DN การผูกอื่นในตอนแรก เช่น ก่อนที่ฉันจะตั้งค่า Kerberos สำหรับการจำลองแบบ ดังนั้น รายการที่สร้างขึ้นในช่วงเวลานี้จึงถูกทำซ้ำโดยไม่มีข้อมูลประจำตัว และ ซิงโครไนซ์ ไม่แก้ไขในภายหลัง

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา