การใช้พร็อกซี KDC (Kerberos) ใน AD สำหรับการเข้าถึงระยะไกล

/th/images/group-policy-option-specify-kdc-proxy-servers-for.png

บริการพร็อกซี Kerberos Key Distribution Center (KDC) ทำหน้าที่เป็นบริดจ์ที่ปลอดภัย ซึ่งช่วยให้ไคลเอนต์ระยะไกลใช้การรับรองความถูกต้อง Kerberos เมื่อไม่สามารถเข้าถึงตัวควบคุมโดเมน Active Directory ได้โดยตรง พร็อกซี KDC ใช้สำหรับสถานการณ์การตรวจสอบสิทธิ์ Kerberos ที่เกี่ยวข้องกับผู้ใช้ภายนอก (เช่น ผู้ที่เชื่อมต่อจากอินเทอร์เน็ต) หรือผู้ใช้เวิร์กกรุ๊ป บริการพร็อกซี KDC เดิมได้รับการออกแบบมาสำหรับ DirectAccess, Remote Desktop Gateway, Azure Virtual Desktop (AVD) และ SMB ผ่านการเข้าถึงไฟล์ QUIC อย่างไรก็ตาม ด้วยการเลิกใช้งานโปรโตคอลการตรวจสอบสิทธิ์ NTLM v1 และ v2 ที่วางแผนไว้ของ Microsoft อาจจำเป็นต้องใช้พร็อกซี KDC สำหรับบริการการเข้าถึงระยะไกลเพิ่มเติม

ต้องเปิดพอร์ตต่อไปนี้เพื่อทำการรับรองความถูกต้องของ Kerberos ระหว่างไคลเอนต์และบริการ KDC บนตัวควบคุมโดเมน Active Directory (AD)

  • UDP/TCP 88 – การตรวจสอบสิทธิ์ Kerberos การรับ Ticket Granting Tickets (TGT)

  • UDP/TCP 464 – การเปลี่ยนรหัสผ่านของผู้ใช้ผ่าน Kerberos

การเปิดพอร์ตเหล่านี้ไปยังตัวควบคุมโดเมนสำหรับผู้ใช้ภายนอกไม่ปลอดภัย ดังนั้นบริการพร็อกซี KDC จึงสามารถสร้างที่จุดเชื่อมต่อผู้ใช้แทนได้ พร็อกซี KDC ทำงานบนเซิร์ฟเวอร์ที่เข้าร่วมโดเมน รับฟังคำขอ Kerberos บนพอร์ต HTTPS (TCP/443) จากไคลเอ็นต์ภายนอก และส่งสัญญาณไปยัง DC อย่างปลอดภัย

พิจารณาสถานการณ์สมมติง่ายๆ ต่อไปนี้: เซิร์ฟเวอร์เกตเวย์เดสก์ท็อประยะไกลถูกปรับใช้ภายในขอบเขตภายใน และผู้ใช้ภายนอกเชื่อมต่ออยู่ ผู้ใช้ภายนอกบนเครื่องที่ไม่ใช่โดเมนไม่สามารถเชื่อมต่อได้เนื่องจากการรับรองความถูกต้องของ NTLM ถูกปิดใช้งานบนโฮสต์ RD Gateway ซึ่งทำงานในโหมด Kerberos เท่านั้น ซึ่งส่งผลให้เกิดข้อผิดพลาด RDP:


An authentication error has occurred.The function requested is not supportedRemote computer: xxxxThis could be due to CredSSP encryption oracle remediation.

/th/images/rdp-connection-error-when-ntlm-disabled-the-funct.png

ในสถานการณ์นี้ เนื่องจากไคลเอ็นต์ไม่สามารถรับรองความถูกต้องบน DC ผ่าน Kerberos ได้ จึงมีความพยายามที่จะถอยกลับไปเป็น NTLM ซึ่งถูกปิดใช้งานบนโฮสต์ ซึ่งจะส่งผลให้ผู้ใช้ไม่สามารถเข้าสู่ระบบจากระยะไกลได้

หากต้องการเปิดใช้งานไคลเอ็นต์ภายนอกเพื่อตรวจสอบสิทธิ์บนโฮสต์ RDP นี้ผ่าน Kerberos KDC Proxy Service (KPSSVC) จะถูกปรับใช้บนโฮสต์ RDGW

โฮสต์บริการพร็อกซี KDC ต้องมีใบรับรองที่ติดตั้งไว้สำหรับการเข้ารหัสการรับส่งข้อมูลและการรับรองความถูกต้องของเซิร์ฟเวอร์ การใช้งานคีย์เพิ่มเติม (EKU) ของใบรับรองจะต้องมีการตรวจสอบสิทธิ์เซิร์ฟเวอร์ การตรวจสอบสิทธิ์ไคลเอ็นต์ และการตรวจสอบสิทธิ์ Kerberos ชื่อทางเลือกเรื่อง ( SAN ) ของใบรับรองจะต้องมีชื่อโดเมนแบบเต็ม (FQDN) ของพร็อกซี KDC ที่ไคลเอนต์จะใช้ในการเชื่อมต่อ ใบรับรองดังกล่าวสามารถออกโดย CA ภายในหรือเชิงพาณิชย์ได้ (สำหรับการปรับใช้การทดสอบและการไม่ใช้งานจริง สามารถใช้ใบรับรองที่ลงนามด้วยตนเองได้)

ต้องเพิ่มใบรับรองไปยังที่เก็บใบรับรองของเซิร์ฟเวอร์ คัดลอกรหัสประจำตัวของใบรับรองของคุณ:

รับ-ChildItem-Path ใบรับรอง:\LocalMachine\My | โดยที่วัตถุ { $\_.หัวเรื่องเหมือน "*CN=rds01.woshub.com*"} | เลือก-วัตถุ-ExpandProperty รหัสประจำตัว

/th/images/powershell-copy-cert-localmachine-my-certificat.png

หากใช้ใบรับรองที่ลงนามด้วยตนเองหรือใบรับรองจาก CA ภายใน ให้ติดตั้งคีย์สาธารณะของใบรับรองบนอุปกรณ์ Windows ของไคลเอ็นต์เพื่อให้เชื่อถือได้

ตอนนี้เรามาดูการกำหนดค่าบริการพร็อกซี KDC กันดีกว่า

สร้างปลายทาง URL การเชื่อมต่อ:

NETSH http เพิ่ม urlacl url=https://+:443/KdcProxy user = "ผู้มีอำนาจ NT\บริการเครือข่าย"


URL reservation successfully added

/th/images/netsh-http-add-urlacl-url443-kdcproxy.png

สร้าง GUID ที่ไม่ซ้ำใคร:

$appguid=Guid::NewGuid().ToString("B")

ตั้งค่ารหัสประจำตัวใบรับรอง:

$kdccert="F00AB752B63F3B840A44BF6A20F6EF0E25DEF4D4"

ผูกใบรับรองกับจุดสิ้นสุดการเชื่อมต่อ:

netsh http เพิ่ม sslcert ipport=0.0.0.0:443 certhash=$kdccert appid=$appguid


SSL Certificate successfully added

/th/images/netsh-http-add-sslcert-bind-ssl-cert-kdc-proxy.png

เนื่องจากฉันไม่ต้องการใช้สมาร์ทการ์ดหรือการตรวจสอบสิทธิ์ Windows Hello ฉันจะปิดใช้งานข้อกำหนดการตรวจสอบสิทธิ์ใบรับรองไคลเอ็นต์ HTTPS สำหรับการดำเนินการ KDC Proxy ซึ่งจะทำให้สามารถใช้วิธีอื่น เช่น รหัสผ่านหรือ Kerberos บน HTTPS ได้โดยไม่ต้องใช้สมาร์ทการ์ด

REG เพิ่ม "HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings"/v HttpsClientAuth/t REG\_DWORD/d 0x0/f

เปิดใช้งานการตรวจสอบรหัสผ่าน:

REG เพิ่ม "HKLM\SYSTEM\CurrentControlSet\Services\KPSSVC\Settings"/v DisallowUnprotectedPasswordAuth/t REG\_DWORD/d 0x0/f

เปิดใช้งานบริการพร็อกซี KDC (KPSSVC):

ตั้งค่าบริการ kpssvc-StartupType อัตโนมัติ

เริ่มบริการ kpssvc

อนุญาตการรับส่งข้อมูลขาเข้าบนพอร์ต TCP 443 บนเซิร์ฟเวอร์เพื่อให้ไคลเอ็นต์สามารถเชื่อมต่อกับ KDC Proxy สร้างกฎการอนุญาต Windows Firewall โดยใช้ PowerShell:

ใหม่ NetFirewallRule-DisplayName "KDCProxy TCP\_In" - ทิศทางขาเข้าโปรโตคอล TCP-LocalPort 443

ตอนนี้ เรามาทำการเปลี่ยนแปลงบางอย่างในฝั่งไคลเอ็นต์เพื่อให้พวกเขาใช้พร็อกซี KDC สำหรับการเชื่อมต่อ

การตั้งค่าพร็อกซี KDC บนไคลเอนต์สามารถกำหนดค่าได้ผ่านตัวเลือก ระบุพร็อกซีเซิร์ฟเวอร์ KDC สำหรับไคลเอนต์ Kerberos นโยบายกลุ่มในส่วน การกำหนดค่าคอมพิวเตอร์ -> นโยบาย -> เทมเพลตการดูแลระบบ -> ระบบ -> ส่วน Kerberos

เปิดใช้งานนโยบาย คลิกปุ่มแสดง และเพิ่มสตริงการเชื่อมต่อสำหรับพร็อกซี KDC ของคุณ สตริงควรอยู่ในรูปแบบต่อไปนี้:

  • ชื่อค่า: ชื่อโดเมน AD ของคุณ woshub.com

  • ค่า: สตริงการเชื่อมต่อพร็อกซี KDC สำหรับโดเมนนี้ (สามารถระบุหลายเซิร์ฟเวอร์ได้):

/th/images/group-policy-option-specify-kdc-proxy-servers-for.png

หรือคุณสามารถกำหนดการตั้งค่าพร็อกซี KDC ได้โดยตรงบนไคลเอนต์ผ่านทางรีจิสทรี

` reg เพิ่ม “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos”/v KdcProxyServer_Enabled/t REG_DWORD/d 1/f

reg เพิ่ม “HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System\Kerberos\KdcProxy\ProxyServers”/v woshub.com/t REG_SZ/d “"/f `

เพื่อที่จะใช้การตั้งค่า GPO ต้องรีสตาร์ทคอมพิวเตอร์ไคลเอนต์

ตอนนี้ ให้ลองเข้าสู่ระบบเกตเวย์ RDP จากไคลเอ็นต์ ไคลเอนต์ควรใช้พร็อกซี KDC เพื่อตรวจสอบสิทธิ์กับตัวควบคุมโดเมนและรับตั๋ว Kerberos หากต้องการตรวจสอบว่ามีการออกตั๋ว Kerberos ผ่าน kdcproxy ให้รันคำสั่งด้านล่าง:

klist รับ krbtgt

/th/images/klist-get-krbtgt-view-kerberos-tickets.png

บันทึกการตรวจสอบสิทธิ์พร็อกซี Kerberos สามารถพบได้ในส่วนต่อไปนี้ของ Event Viewer: Event Viewer-> App and Services-> Microsoft-> KDCProxy-> Operational

ใน Windows รุ่นต่อๆ ไป Microsoft วางแผนที่จะปรับใช้พร็อกซี KDC โดยอัตโนมัติและลดความซับซ้อนผ่านทางเว็บอินเทอร์เฟซของ Windows Admin Center (WAC)

*️⃣ ลิงค์ที่มา:

เกตเวย์เดสก์ท็อประยะไกล, การเข้าถึงไฟล์ SMB ผ่าน QUIC, การเลิกใช้โปรโตคอลการตรวจสอบสิทธิ์ NTLM v1 และ v2, การเปลี่ยนรหัสผ่านของผู้ใช้, การตรวจสอบสิทธิ์ NTLM ถูกปิดใช้งาน, เกิดข้อผิดพลาดในการตรวจสอบสิทธิ์, ใบรับรองที่ลงนามด้วยตนเอง, ติดตั้งคีย์สาธารณะของใบรับรองบนอุปกรณ์ Windows ของไคลเอ็นต์, ไฟร์วอลล์ Windows อนุญาตกฎโดยใช้ PowerShell, ใช้การตั้งค่า GPO