หลายอาณาจักรและ TGT หลายอันภายใต้ MIT Kerberos สำหรับ Windows


10

คอมพิวเตอร์ในพื้นที่ของฉันใช้ Windows 7 Pro และเป็นของ LR ขอบเขตจัดการโดยเซิร์ฟเวอร์โฆษณา ฉันลงชื่อเข้าใช้คอมพิวเตอร์ในขณะที่เชื่อมต่อกับเครือข่ายของอาณาจักรนั้น ฉันสามารถดู TGT ด้วย MIT Kerberos สำหรับ Windows เวอร์ชั่น 4.0.1

ฉันต้องการเข้าถึงทรัพยากรในอาณาจักรต่างประเทศ FR Kerberos ไม่ไว้วางใจระหว่าง LR และ FR แต่อนุญาตการรับส่งข้อมูล TCP ระหว่างกัน ฉันขอ TGT สำหรับ FR ด้วย KDC (Red Hat IdM / FreeIPA) และป้อนรหัสผ่านของฉันสำเร็จเมื่อถูกท้าทาย อีกครั้งฉันสามารถดู TGT ด้วย MIT Kerberos สำหรับ Windows เวอร์ชั่น 4.0.1 ตอนนี้ฉันสามารถเข้าถึงทรัพยากรใน FR ผ่าน SSH โดยไม่ต้องถามรหัสผ่านแม้จะมาจาก LR

ปัญหาคือเมื่อฉันได้รับ TGT สำหรับ FR, TGT สำหรับเงินต้นของฉันจะหายไป เฉพาะ FR TGT เท่านั้นที่สามารถมองเห็นได้ใน MIT Kerberos หากฉันล็อคคอมพิวเตอร์ของฉันและปลดล็อคด้วยรหัสผ่านตอนนี้ FR TGT จะหายไปแทนที่ด้วย LR TGT ใหม่

ดูเหมือนว่า MIT Kerberos สำหรับ Windows สามารถจัดเก็บ TGT ได้ครั้งละหนึ่งเครื่องเท่านั้น TGT แต่ละตัวทำงานอย่างสมบูรณ์สำหรับขอบเขตของมันสำหรับเจตนาและวัตถุประสงค์ทั้งหมด ฉันจะกำหนดค่า MIT Kerberos ได้อย่างไรเพื่อให้ฉันมี TGT สองตัวในคราวเดียวแต่ละอันสำหรับอาณาจักร เป็นไปได้หรือไม่ที่จะ "แยก" กับไคลเอนต์อินสแตนซ์หลายตัวแต่ละตัวชี้ไปที่ KRB5_CONFIG และแท็บท้องถิ่นที่แตกต่างกัน ถ้าฉันทำไม่ได้จะมีการใช้ Windows อีกทางหนึ่งของ Kerberos 5 ฝั่งไคลเอ็นต์ที่จะทำได้แม้ว่าจะไม่มีการเชื่อถือระหว่างอาณาจักร

ป.ล. - ฉันไม่ต้องการความไว้วางใจ ไม่สามารถได้รับความไว้วางใจ

อัปเดต:ฉันออกจากรายละเอียดบางส่วนก่อนหน้านี้เพราะฉันคิดว่าอาจทำให้เกิดความสับสน แต่จากคำตอบของแบรดก็อาจได้รับการรับประกัน ฉันคาดว่าซอฟต์แวร์ท้องถิ่นส่วนใหญ่จะใช้การติดตั้ง Windows ของ Kerberos และใช้คีย์แท็บ LR เสมอ

อย่างไรก็ตามผู้ใช้ระดับสูงอย่างฉันใช้ heimdal ภายใต้ Cygwin ถึง SSH ใน FR ฉันคาดหวังว่าทุกอย่างจะต้องผ่าน Cygwin DLLs เพื่อใช้ heimdal และไม่เคยเห็น LR TGT (ซึ่งไม่เป็นอย่างน้อยก็ไม่ใช่ค่าเริ่มต้น) ฉัน kinit อย่างชัดเจนและไปต่อ

ส่วนที่ยุ่งยากมาสำหรับผู้ใช้ที่ไม่ใช้พลังงานฉันต้องสนับสนุนผู้ที่ไม่ได้ใช้ Cygwin แต่ใช้ PuTTY PuTTY ช่วยให้คุณระบุทั้งเส้นทางไลบรารีและ DLL ที่การนำ GSSAPI ไปใช้ ตัวอย่างเช่นฉันกำหนดค่าเซสชัน SSH เพื่อใช้ MIT Kerberos DLLs แทน Windows DLLs ในตัว ฉันหวังว่าจะมี DLL ออกมาซึ่งไม่เคยพยายามหา LR TGT (เช่น heimdal) หรืออนุญาต TGT หลายตัวจากหลายอาณาจักร ไม่จำเป็นต้องมีหน้าต่าง GUI เช่น MIT Kerberos แต่มันช่วยได้


คำถามที่น่าสนใจ
mfinni

คำตอบ:


4

ฉันจะไม่บอกว่าไม่สามารถใช้ Windows ได้ แต่ฉันจะบอกว่าข้อ จำกัด นั้นขึ้นกับเซสชัน ปัญหาก็คือว่าสำหรับแต่ละเซสชัน Windows แคชตั๋วหนึ่งใบ เมื่อคุณล็อกคอมพิวเตอร์ของคุณแล้วปลดล็อคเซสชันอื่นจะเริ่มต้นขึ้นและขอรหัสใหม่จาก KDC สิ่งเดียวกันนี้เกิดขึ้นเมื่อคุณออกจากระบบแล้วเข้าสู่คอมพิวเตอร์อีกครั้ง วิธีนี้เป็นวิธีการกำหนดสิทธิ์ของผู้ใช้สำหรับเซสชันเซิร์ฟเวอร์เช่นกันหมายความว่าสามารถเก็บรหัส / ตั๋วเพื่อให้ทรัพยากรเซิร์ฟเวอร์หรือเซสชันทั้งหมดที่คุณเริ่มต้นไม่ต้องขอรหัสผ่านจากคุณ แต่ฉันไม่เคยได้ยิน / อ่าน / วิจัยแล้วเพื่อให้สามารถแคชมากกว่าหนึ่ง

ตอนนี้คุณคงรู้แล้วว่าได้รับความรู้ที่คุณแสดงในคำถามของคุณดังนั้นฉันจะบอกว่าตามความจริงที่ว่า Windows จัดเก็บรหัสที่คุณได้รับเมื่อมีการออก TGT และเป็นไปตามเซสชันฉันไม่ คิดว่าเป็นไปได้ด้วย JUST Windows MIT Kerberos สำหรับ Windows อาจมีวิธีการเริ่มต้นสองเซสชันภายใต้ผู้ใช้คนหนึ่ง แต่ถึงอย่างนั้นฉันก็ยังไม่แน่ใจว่าทรัพยากรที่คุณกำลังเข้าถึงนั้นจะรู้ได้อย่างไรว่าคู่ของตั๋ว / คีย์จะใช้งานอย่างไร มันสมเหตุสมผลไหม

โปรดดูสิ่งนี้สำหรับคำอธิบายว่า Windows เก็บ TGTs / คู่คีย์อย่างไร

คำถามที่ดีมากโดยวิธี


ฉันอัปเดตคำถามเดิมของฉันซึ่งหวังว่าจะอธิบายว่าทรัพยากรรู้ได้อย่างไรว่าจะใช้คู่ของตั๋ว / คู่คีย์ใด
Toddius Zho

อีกครั้งเป็นคำถามที่ดี แต่น่าเสียดายที่ฉันสามารถตอบได้ (เท่าที่ฉันมี) เกี่ยวกับ Windows ด้านสิ่งต่าง ๆ ตามที่คุณถามในคำถามดั้งเดิมของคุณ นอกเหนือจากปลั๊กอิน / ซอฟต์แวร์ของบุคคลที่สามฉันไม่ทราบวิธีการทำโดยกำเนิดโดยมีหรือไม่มี GUI หวังว่าฉันจะได้รับความช่วยเหลือเพิ่มเติม
Brad Bouchard

4

ตกลงฉันคิดวิธีแก้ปัญหาการทำงานที่ต้องการความเงางามมากขึ้นดังนั้นอาจไม่สามารถทำงานได้ในทุกสภาพแวดล้อม

ใช้ได้กับ:

  1. MIT Kerberosสำหรับ Windows 4.0.1 พร้อมเครื่องมือสนับสนุน Windows (KSETUP.EXE, KTPASS.EXE)
  2. PuTTY 0.63
  3. Windows 7 SP1

ฉันถูกมองในแหล่ง MIT Kerberos และมาข้ามREADME สำหรับ Windows น่าสนใจโดยเฉพาะเป็นค่าที่แตกต่างกันสำหรับข้อมูลประจำตัวแคช มันใช้ค่าเริ่มต้นของAPI:แต่ฉันพบว่ารีจิสทรีของฉันใช้MSLSA:แทน

ผมเล่นรอบกับค่าที่แตกต่างของccnameHKEY_CURRENT_USER\Software\MIT\Kerberos5ภายใต้ ฉันลองMEMORY:ตอนแรกซึ่งนำไปสู่พฤติกรรมที่น่าสนใจ เมื่อเปิดเซสชัน PuTTY หน้าต่าง MIT Kerberos Ticket Manager ของฉันจะคืนค่าและมาที่เบื้องหน้าขอให้ฉันป้อนข้อมูลประจำตัว ว้าว! ที่ไม่เคยเกิดขึ้นมาก่อน แต่อนิจจา PuTTY จะปฏิเสธมัน FILE:C:\Some\Full\File\Pathค่าที่ได้เคล็ดลับสำหรับฉันคือ ฉันไม่แน่ใจว่าจะรักษาความปลอดภัยในการเข้าถึงไฟล์ที่ระบุได้อย่างไรดังนั้นฉันจะปล่อยให้มันเป็นแบบฝึกหัดสำหรับผู้อ่าน ฉันมีพฤติกรรมแบบหน้าต่างต่อหน้าเหมือนกันมีเพียง PuTTY เท่านั้นที่ชอบในครั้งนี้ ในที่สุดหน้าต่างตัวจัดการตั๋วก็แสดงทั้งตั๋ว LR และ FR ตั๋วดังกล่าวได้รับการพิสูจน์แล้วว่าสามารถส่งต่อได้และจะสามารถใช้ Windows Lock / Unlock ได้หลายตัว บันทึก:อย่าลืมออกจากระบบและเริ่มต้นตัวจัดการตั๋วใหม่ระหว่างการแก้ไขรีจิสทรี ฉันไม่ได้พยายามออกccnameของAPI:เลย

ฉันไม่รู้ว่าสิ่งนี้สร้างความแตกต่างหรือไม่ แต่ฉันก็ลองเล่นกับKSETUPก่อนที่จะเริ่มทำงาน ตอนแรก KSETUP ที่ไม่มีพารามิเตอร์จะแสดงข้อมูลเกี่ยวกับ LR ให้ฉันดู ฉันเพิ่มข้อมูลบางอย่างเกี่ยวกับ FR บนเวิร์กสเตชันท้องถิ่นของฉัน

ksetup /AddKdc FOREIGN.REALM KDC.FOREIGN.REALM
ksetup /AddRealmFlags FOREIGN.REALM TcpSupported Delegate NcSupported

2

สำหรับฉันดูเหมือนว่ามีข้อบกพร่องจริง ๆ ใน Kerberos สำหรับ Windows

ฉันพบสิ่งต่อไปนี้:

ถ้าฉันใช้ตัวเลือก "รับตั๋ว" ในหน้าต่าง KfW 4.0.1 ก็แค่ใช้งานได้ (TM); ฉันสามารถกดปุ่ม "รับตั๋ว" และรับตั๋วเพิ่มเติมไปยังตั๋วเดิมที่ฉันได้รับเมื่อเข้าสู่ระบบ

ถ้าฉันกดตัวเลือก "ทำให้เป็นค่าเริ่มต้น" ในหน้าต่าง KfW จากนั้นในทุกครั้งที่ฉันกด "รับตั๋ว" ตั๋วใหม่จะแทนที่ตั๋วใด ๆ ที่เป็นค่าเริ่มต้นแทนที่จะเพิ่มรายการอื่นลงในรายการตั๋วที่รู้จัก . การตรวจสอบรีจิสทรี ณ จุดนั้นจะแสดงว่ามีการเพิ่มccnameรายการ (ตามคำตอบใน Toddius) การลบรายการนั้นจะทำให้พฤติกรรมก่อนหน้านี้อนุญาตให้มีตั๋วหลายใบได้อย่างน่าประหลาดใจ


ฉันสามารถยืนยันพฤติกรรมนี้ ฉันสงสัยว่าคุณยกเป็นข้อผิดพลาดกับ MIT หรือไม่?
Paul Hedderly

2

ต่อจากคำตอบของ Toddius ฉันมีเพื่อนร่วมงานในสถานการณ์ที่คล้ายคลึงกัน (Windows 7 Enterprise 64 บิตเข้าร่วมกับโดเมนโฆษณารวมถึง MIT Kerberos สำหรับ Windows 4.0.1): สำเนา Kerberos Ticket Manager ของเขาจะ อนุญาตให้เขามีอาจารย์ใหญ่หนึ่งคน / หนึ่ง TGT เท่านั้น เมื่อใดก็ตามที่เขาจะใช้ปุ่ม "รับตั๋ว" เพื่อรับ TGT สำหรับเงินต้นที่แตกต่างกันเงินต้นก่อนหน้านี้จะหายไป

ผมทบทวนREADMEและส่วนใหญ่ของคีย์รีจิสทรีถูกตั้งค่าเป็นไปตามคาดยกเว้นสำหรับccnameHKEY_CURRENT_USER\Software\MIT\Kerberos5สำคัญในเส้นทาง MSLSA:ที่สำคัญที่ได้รับการตั้งค่า API:การแก้ไขของเราคือการเปลี่ยนที่ไป โดยเฉพาะขั้นตอนคือ:

  1. ออกจากตัวจัดการตั๋ว Kerberos พร้อมกับแอปพลิเคชันอื่น ๆ (เนื่องจากคุณจะเริ่มต้นใหม่)
  2. ที่เส้นทางพา ธHKEY_CURRENT_USER\Software\MIT\Kerberos5ให้เปลี่ยนคีย์ccnameเป็นAPI:(API จากนั้นเครื่องหมายโคลอน)
  3. ออกจาก regedit และเริ่มต้นใหม่
  4. หลังจากลงชื่อเข้าใช้อีกครั้งให้รัน Kerberos Ticket Manager และใช้ปุ่ม Get Ticket เพื่อรับ TGT ของผู้ไม่ลงโฆษณา

ด้วยขั้นตอนข้างต้นทุกอย่างทำงานได้และฉันก็สามารถเห็นผู้ว่าจ้างหลายคน / TGT ได้พร้อมกัน

อย่างไรก็ตาม MIT Kerberos สำหรับ Windows นำเสนอโปรแกรมบรรทัดคำสั่ง (เช่น klist) ของตนเองและโปรแกรมเหล่านั้นสนับสนุนแคชข้อมูลรับรองหลายชุด ในระบบ 64 บิตของฉันเมื่อฉันรัน"C:\Program Files\MIT\Kerberos\bin\klist.exe" -A"หลังจากรับ TGT หลายตัวฉันเห็น Active Directory เป็นหลักในแคช MSLSA แล้วฉันมีหนึ่งแคช API สำหรับเงินต้นเพิ่มเติมแต่ละรายการ

ป.ล. นี่เป็นรายการแรกของฉันในเว็บไซต์นี้ดังนั้นฉันจึงไม่สามารถเพิ่มเป็นความคิดเห็นในคำตอบของ Toddius ได้ ขอโทษ!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.