ฉันกำลังเขียนระบบที่ดำเนินการเข้าสู่ระบบของผู้ใช้และให้การเข้าถึงแบบครั้งเดียวสู่การใช้ SMB ที่ใช้ร่วมกันภายในเครือข่าย
การเข้าสู่ระบบของผู้ใช้เสร็จสิ้นกับ Kerberos 5 เพื่อยืนยันตัวตนของผู้ใช้และรับตั๋ว TGT เมื่อเข้าถึงการแชร์ SMB ตั๋ว TGT จะถูกใช้เพื่อรับตั๋ว TGS สำหรับเซิร์ฟเวอร์ที่โฮสต์ถูกแชร์และการตั้งค่าเซสชันจะดำเนินการกับ TGS นั้น (โดยการบรรลุ SSO)
ทำงานได้ดีจนกว่าผู้ใช้จะพยายามเข้าถึงการแชร์ SMB บน DC ในกรณีนั้น DC จะคืนค่า STATUS_ACCESS_DENIED ให้กับคำขอเชื่อมต่อแบบต้นไม้ดังที่แสดงในลิงค์ด้านล่าง
ผู้ใช้เป็นสมาชิกของกลุ่ม Domain Admins ดังนั้นควรเข้าถึง IPC $ ได้
สิ่งที่น่าสนใจคือถ้าแทนที่จะทำการเซ็ตอัพเซสชันด้วย TGS ฉันจะใช้ NTLMSSP (ใช้ข้อมูลประจำตัวของผู้ใช้เดียวกัน) DC อนุญาตให้เชื่อมต่อกับการแชร์ได้
ทำไมสิทธิ์ต่าง ๆ ที่กำหนดให้กับเซสชัน SMB ขึ้นอยู่กับการรับรองความถูกต้องที่ดำเนินการ (NTLMSSP กับ Kerberos 5)
สิ่งนี้มีกลิ่นเหมือนการกำหนดค่า GPO / GPP แต่ความรู้ของฉันมี จำกัด
จำเป็นต้องมีขั้นตอนเพิ่มเติมในการตั้งค่าเซสชันกับ DC เมื่อใช้ Kerberos 5 หรือไม่ หรือว่าปลอดภัยที่จะสมมติว่าฉันทำอย่างถูกต้องหากเซิร์ฟเวอร์ส่งคืน STATUS_SUCCESS
หมายเหตุสองประการ:
- ไคลเอนต์ SMB พยายามเชื่อมต่อกับการแชร์ IPC $ เพื่อดำเนินการ IOCTL บางอย่างก่อนที่จะเชื่อมต่อกับการแชร์ที่ต้องการ
- ฉันตรวจสอบแล้วว่าวันที่และเวลาในระบบของฉันซิงโครไนซ์กับ DC
- ระบบนี้พัฒนาบน Linux, ฉันใช้ libkrb5 ของ heimdal และไคลเอนต์ SMB ที่เป็นกรรมสิทธิ์ (ฉันมีความสามารถในการแก้ไขไลบรารีทั้งสอง)
อัปเดต: แม้เมื่อข้ามการเชื่อมต่อกับการแชร์ IPC $ และฉันเชื่อมต่อกับการแชร์ที่ต้องการโดยตรงพฤติกรรมก็เหมือนกัน DC จะส่งคืน STATUS_ACCESS_DENIED ไปยังคำขอเชื่อมต่อแบบต้นไม้