การตรวจสอบ Putty Kerberos / GSSAPI


9

ฉันกำหนดค่าเซิร์ฟเวอร์ลินุกซ์สองสามตัวให้รับรองความถูกต้องกับ Active Directory Kerberos โดยใช้ sssd บน RHEL6 ฉันยังเปิดใช้งานการตรวจสอบสิทธิ์ GSSAPI ด้วยความหวังว่าจะมีการลงชื่อเข้าใช้แบบไม่มีรหัสผ่าน

แต่ดูเหมือนว่าฉันจะไม่ได้รับ Putty (0.63) ในการตรวจสอบสิทธิ์โดยไม่มีรหัสผ่าน

GSSAPI ทำงานระหว่างระบบ Linux (ไคลเอนต์ openSSH) ที่กำหนดค่าสำหรับการตรวจสอบสิทธิ์โฆษณาโดยใช้การตั้งค่า. ssh / config เพื่อเปิดใช้งาน GSSAPI

นอกจากนี้ยังใช้งานได้จาก Cygwin (ไคลเอนต์ openSSH) โดยใช้การตั้งค่า. ssh / config เดียวกันรวมถึงการรันคำสั่ง kinit เพื่อรับตั๋ว

Samba ยังแชร์ในระบบ Linux ทั้งหมดรวมถึงโฮมไดเรกทอรีทำงานจาก Windows Explorer โดยไม่ต้องใช้รหัสผ่าน (ฉันไม่แน่ใจว่า GSSAPI เข้ามาเล่นที่นั่นหรือไม่)

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


ฉันเปิดการบันทึกแพ็คเก็ต SSH ฉันพบสิ่งที่น่าสนใจเช่นนี้ฉันยังไม่แน่ใจว่าจะทำอย่างไรกับข้อมูลนี้:

Event Log: Server version: SSH-2.0-OpenSSH_5.3
Event Log: Using SSH protocol version 2
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.63
Outgoing packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Incoming packet #0x0, type 20 / 0x14 (SSH2_MSG_KEXINIT)
Event Log: Doing Diffie-Hellman group exchange
Outgoing packet #0x1, type 30 / 0x1e (SSH2_MSG_KEX_DH_GEX_REQUEST)
Incoming packet #0x1, type 31 / 0x1f (SSH2_MSG_KEX_DH_GEX_GROUP)
Event Log: Doing Diffie-Hellman key exchange with hash SHA-256
Outgoing packet #0x2, type 32 / 0x20 (SSH2_MSG_KEX_DH_GEX_INIT)
Incoming packet #0x2, type 33 / 0x21 (SSH2_MSG_KEX_DH_GEX_REPLY)
Outgoing packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Outgoing raw data at 2014-11-25 00:21:08
Incoming packet #0x3, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised AES-256 SDCTR server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Outgoing packet #0x4, type 5 / 0x05 (SSH2_MSG_SERVICE_REQUEST)
Incoming packet #0x6, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.
Event Log: Using SSPI from SECUR32.DLL
Event Log: Attempting GSSAPI authentication
Outgoing packet #0x6, type 50 / 0x32 (SSH2_MSG_USERAUTH_REQUEST)
Incoming packet #0x7, type 60 / 0x3c (SSH2_MSG_USERAUTH_GSSAPI_RESPONSE)
Event Log: GSSAPI authentication initialised
Outgoing packet #0x7, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Incoming packet #0x8, type 61 / 0x3d (SSH2_MSG_USERAUTH_GSSAPI_TOKEN)
Event Log: GSSAPI authentication initialised
Event Log: GSSAPI authentication loop finished OK
Outgoing packet #0x8, type 66 / 0x42 (SSH2_MSG_USERAUTH_GSSAPI_MIC)
Incoming packet #0x9, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
...%gssapi-keyex
,gssapi-with-mic
,password.

1
การเปิดการดีบักใน ssh daemon night จะแสดงข้อมูลที่เป็นประโยชน์ คุณสามารถเริ่มต้นอินสแตนซ์ที่สองบนพอร์ตอื่นสำหรับการทดสอบ
Paul Haldane

คำตอบ:


7

บนเครื่อง Windows ที่เป็นส่วนหนึ่งของโดเมน Active Directory ผู้ใช้จะได้รับตั๋ว Kerberos ที่อนุญาตให้ใช้ตั๋วเมื่อพวกเขาเข้าสู่ระบบ Windows และ PuTTY สามารถใช้สิ่งนั้นสำหรับการตรวจสอบความถูกต้องได้หากเปิดใช้งานการรับรองความถูกต้อง GSSAPI ใน PuTTY Configuration Connection | SSH | Auth | GSSAPI (และวิธีการตรวจสอบสิทธิ์อื่น ๆ ที่ลองใช้ก่อน GSSAPI เช่นรหัสสาธารณะผ่าน Pageant จะไม่ได้รับการตั้งค่าหรือปิดใช้งานในการเชื่อมต่อ | SSH | Auth)

[หากคุณต้องการการมอบหมายตั๋ว (เช่นในการเมานต์ระบบไฟล์ kerberized บนเซิร์ฟเวอร์หลังจากเข้าสู่ระบบ) ตรวจสอบให้แน่ใจว่าเปิดใช้งานการมอบหมาย GSSAPI ใน PuTTY และเซิร์ฟเวอร์ที่คุณเข้าสู่ระบบถูกทำเครื่องหมายใน Active Directory ในแท็บการมอบหมาย " เชื่อถือคอมพิวเตอร์เครื่องนี้เพื่อมอบสิทธิ์ให้กับบริการใด ๆ (Kerberos เท่านั้น) " ซึ่งไม่ใช่ค่าเริ่มต้น การตั้งค่าความน่าเชื่อถือหลังนั้นใน AD นั้นจำเป็นอย่างยิ่งสำหรับการมอบหมายให้ทำงานจากไคลเอนต์ Windows เช่น PuTTY ไม่จำเป็นสำหรับไคลเอนต์ "ssh -K" ของ Linux]

บนเครื่อง Windows ที่จัดการด้วยตนเอง (ส่วนบุคคล) ที่ไม่ได้เป็นส่วนหนึ่งของโดเมน Active Directory คุณยังสามารถใช้การตรวจสอบสิทธิ์ Kerberos / GSSAPI (และการมอบหมายตั๋ว) ผ่าน PuTTY แต่คุณต้องรับตั๋วด้วยตนเอง น่าเสียดายที่ Windows 7 ไม่ได้ติดตั้งมาพร้อมกับโปรแกรมเทียบเท่า kinit (สำหรับคุณในการขอตั๋วด้วยตนเอง) และ PuTTY จะไม่ถามรหัสผ่าน Kerberos ของคุณหากคุณไม่มีตั๋ว ดังนั้นคุณต้องติดตั้งMIT Kerberos สำหรับ Windowsแพ็คเกจซึ่งประกอบด้วยเครื่องมือบรรทัดคำสั่ง kinit / klist / kdestroy ปกติรวมถึงเครื่องมือ GUI ที่เรียบร้อย "MIT Kerberos Ticket Manager" ใช้สิ่งเหล่านี้เพื่อรับตั๋วของคุณจากนั้น PuTTY จะใช้ไลบรารี MIT GSSAPI โดยอัตโนมัติแทนที่จะเป็น Microsoft SSPI และมันควรจะใช้ได้ หาก "MIT Kerberos Ticket Manager" ทำงานอยู่ระบบจะแจ้งให้คุณใส่รหัสผ่าน Kerberos ของคุณโดยอัตโนมัติเมื่อ PuTTY ต้องการตั๋วดังนั้นจึงควรเชื่อมโยงจากโฟลเดอร์ Startup


1
ฉันได้เรียนรู้มาว่า Windows มีkinitคำสั่งของ MIT Kerberos ที่เทียบเท่าcmdkeyกัน
Markus Kuhn

1
เกี่ยวกับการเปิดใช้งานการมอบหมายตั๋วถ้าคุณเป็นหนึ่งในผู้ที่เข้าใจว่าActive Directoryเป็นจริงเพียงแค่Microsoft LDAPv3ภายใต้ประทุน: ให้แน่ใจว่ารายการ LDAP เงินต้นบริการที่คุณต้องการเพื่อให้สามารถที่จะมอบหมายบัตร Kerberos ที่จะมีอยู่ในของuserAccountControlบิต TRUSTED_FOR_DELEGATION = 0x80000 = 524288 ชุด
Markus Kuhn

FYI สำหรับทุกคนที่พิจารณากำหนดค่า "เชื่อถือคอมพิวเตอร์เครื่องนี้สำหรับการเป็นตัวแทนให้กับบริการใด ๆ (Kerberos เท่านั้น)" เช่นการมอบหมาย Kerberos ที่ไม่มีข้อ จำกัด สิ่งนี้มีนัยสำคัญด้านความปลอดภัยที่ร้ายแรงที่คุณควรพิจารณา ฉันขอแนะนำให้อ่านadsecurity.org/?p=1667ก่อน
แบรด

3

ตรวจสอบอีกครั้งก่อนว่าเอาต์พุต klist ของคุณบนกล่อง Windows ที่รัน PuTTY แสดง TGT ที่ถูกต้อง จากนั้นในการกำหนดค่าสำหรับเซสชัน PuTTY ของคุณตรวจสอบให้แน่ใจว่าได้เปิดใช้งานการตรวจสอบสิทธิ์ GSSAPIConnection - SSH - Auth - GSSAPIแล้ว Connection - Dataสุดท้ายให้แน่ใจว่ามีการกำหนดค่าที่จะเข้าสู่ระบบด้วยชื่อผู้ใช้ของคุณโดยอัตโนมัติใน คุณสามารถระบุอย่างชัดเจนชื่อผู้ใช้หรือเลือกปุ่มตัวเลือกสำหรับชื่อผู้ใช้ระบบ

ในอดีตนั้นคือทั้งหมดที่ฉันต้องทำเพื่อให้การเข้าสู่ระบบ SSH แบบไม่ต้องใช้รหัสผ่านผ่าน Kerberos


1
klist tgt ดูเหมือนว่าเหมาะสมกับฉัน บอกว่ามันส่งต่อเช่นกัน klist แสดง 5 ปุ่มสำหรับสิ่งต่าง ๆ เช่น Exchange ฉันยังมีตั๋วสำหรับเซิร์ฟเวอร์ Linux ที่ฉันต้องการใช้ ฉันผ่านการกำหนดค่าโป๊ว 100 ครั้ง เอกสาร / คู่มือออนไลน์ทั้งหมดพูดแบบเดียวกันดังนั้นฉันจึงมั่นใจว่าชิ้นส่วนนั้นถูกต้อง
xdaxdb

3

ปัญหาเกิดขึ้นในการตั้งค่า Windows Kerberos ฉันคิดว่า Active Directory ของเราติดตั้งแล้วฉันไม่รู้จริงๆว่าฉันไม่ใช่ผู้ดูแลระบบ Windows

แต่ฉันแก้ไขปัญหาด้วยการตั้งค่า Kerberos ด้วยตนเองโดยใช้ ksetup ใน Windows 7 CLI

หลังจากรีบูตเครื่องไปยังเวิร์กสเตชันระยะไกลฉันไม่สามารถลงชื่อเข้าใช้พีซีของฉันได้ นั่นเป็นเพราะในการกำหนดค่าดั้งเดิมส่วน TLD ของโดเมน realm ของฉันขาดอยู่เสมอ (domain \ user) แต่หลังจากที่ฉันกำหนดค่าด้วยตนเองฉันต้องเปลี่ยนโดเมนล็อกอินของฉันเพื่อให้สะท้อนถึงชื่อโดเมน realm แบบเต็ม (domain.TLD \ user) และ ฉันสามารถเข้าสู่ระบบ Windows PC ของฉันได้แม้ว่าจะใช้เวลาในการตรวจสอบสิทธิ์นานขึ้น

ก่อนที่จะมีการเปลี่ยนแปลงผลลัพธ์ของ ksetup จะแสดงเฉพาะขอบเขตเริ่มต้นของฉันและเป็นตัวพิมพ์เล็ก

ฉันใช้ "nslookup -type = SRV _kerberos._tcp.domain.TLD" เพื่อรับเซิร์ฟเวอร์ kdc ทั้งหมดสำหรับอาณาจักรของฉัน

ฉันไม่ได้ตั้งค่าสถานะใด ๆ

ฉันตั้งค่าชื่อผู้ใช้ของฉัน "ksetup / mapuser user@domain.TLD ผู้ใช้"

แหล่งข้อมูลที่ฉันใช้: https://wiki.ncsa.illinois.edu/display/ITS/Windows+7+Kerberos+Login+using+External+Kerberos+KDC

https://www.cgl.ucsf.edu/Security/CGLAUTH/CGLAUTH.html

หากใครมีคำแนะนำใด ๆ ที่ฉันสามารถมอบให้กับผู้ดูแลระบบ Windows เกี่ยวกับวิธีที่พวกเขาสามารถแก้ไขได้

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