RD Gateway: เข้า Remote Desktop ผ่าน HTTPS แทนเปิดพอร์ต 3389

ตั้ง RD Gateway บน Windows Server ให้ทีมเข้า Remote Desktop ผ่าน HTTPS พอร์ต 443 ผูกใบรับรอง สร้างนโยบาย RD CAP และ RD RAP แล้วปิดพอร์ต 3389 จากอินเทอร์เน็ต

โดย ทีมงาน THAI DATA CLOUD อ่าน 15 นาที

แชร์FacebookXLINELinkedIn
RD Gateway — RD Gateway: เข้า Remote Desktop ผ่าน HTTPS แทนเปิดพอร์ต 3389
RD Gateway: เข้า Remote Desktop ผ่าน HTTPS แทนเปิดพอร์ต 3389

คำตอบสั้น ๆ: ตั้ง RD Gateway บน Windows Server ให้ทีมเข้า Remote Desktop ผ่าน HTTPS พอร์ต 443 ผูกใบรับรอง สร้างนโยบาย RD CAP และ RD RAP แล้วปิดพอร์ต 3389 จากอินเทอร์เน็ต

คู่มือนี้อธิบาย RD Gateway ทีละขั้นตอน พร้อมคำสั่งที่ใช้ได้จริงและปัญหาที่พบบ่อย

RD Gateway (Remote Desktop Gateway) คือบทบาทหนึ่งของ Remote Desktop Services บน Windows Server ที่ห่อการเชื่อมต่อ Remote Desktop ไว้ใน HTTPS พอร์ต 443 ผู้ใช้ต้องยืนยันตัวตนกับ RD Gateway ก่อน จากนั้น RD Gateway จึงส่งต่อการเชื่อมต่อไปยังเครื่องปลายทางผ่านพอร์ต 3389 ภายในเครือข่าย ผลคือไม่ต้องเปิดพอร์ต 3389 ของเครื่องใดออกสู่อินเทอร์เน็ตอีก

คู่มือนี้เหมาะกับผู้ดูแลที่มี Windows Server บนคลาวด์หนึ่งเครื่องหรือหลายเครื่อง และทีมที่ต้องเข้าเครื่องจากบ้านหรือนอกออฟฟิศซึ่ง IP เปลี่ยนตลอด เมื่อทำครบ คุณจะได้ RD Gateway ที่ใช้ใบรับรองที่เครื่องลูกข่ายเชื่อถือ มีนโยบายกำหนดว่าใครเข้าได้และเข้าเครื่องไหนได้ ทดสอบการเชื่อมต่อจาก Windows และ macOS แล้ว และปิดพอร์ต 3389 จากภายนอกเรียบร้อย

สิ่งที่ต้องเตรียม

  • Windows Server 2019, 2022 หรือ 2025 ที่จะติดตั้ง RD Gateway และบัญชีในกลุ่ม Administrators ใช้เครื่องใน Active Directory หรือเครื่องเดี่ยวแบบ Workgroup ก็ได้
  • ชื่อโดเมนย่อยสำหรับ Gateway เช่น rdg.example.com ที่ตั้ง A record ชี้ไปยัง IP สาธารณะของเครื่องแล้ว
  • ใบรับรอง TLS ที่ออกให้ชื่อนั้นตรงตัว จาก CA ที่เครื่องลูกข่ายเชื่อถือ จะซื้อหรือขอฟรีจาก Let's Encrypt ก็ได้ วิธีขอแบบฟรีดูได้ในคู่มือ win-acme
  • สิทธิ์แก้ Security Group ของเครื่อง และเปิด Console ของแพลตฟอร์มได้ เผื่อตั้งค่าผิดแล้วเข้าเครื่องไม่ได้
  • ตรวจเงื่อนไขไลเซนส์ เอกสารไลเซนส์ของ Microsoft ระบุให้ใช้ RDS CAL กับการใช้งานฟังก์ชันของ Remote Desktop Services ซึ่ง RD Gateway เป็นส่วนหนึ่ง ก่อนใช้งานจริงให้ยืนยันกับผู้ให้บริการหรือผู้จำหน่ายไลเซนส์ของคุณ
แผนภาพการเชื่อมต่อ Remote Desktop ผ่าน RD Gateway ด้วย HTTPS พอร์ต 443 แล้วส่งต่อด้วย RDP 3389 ไปยังเซิร์ฟเวอร์ภายใน
อินเทอร์เน็ตเห็นแค่พอร์ต 443 ส่วนพอร์ต 3389 ใช้เฉพาะระหว่าง RD Gateway กับเครื่องปลายทาง

ขั้นตอนที่ 1: ติดตั้งบทบาท RD Gateway

เปิด PowerShell แบบ Run as administrator แล้วติดตั้งบทบาท ตัวติดตั้งจะเพิ่ม Network Policy Server (NPS) และส่วนประกอบของ IIS ที่ RD Gateway ต้องใช้ให้อัตโนมัติ

Install-WindowsFeature RDS-Gateway -IncludeManagementTools
Get-WindowsFeature RDS-Gateway, NPAS, Web-Server | Format-Table Name, InstallState

ทั้งสามรายการต้องเป็น Installed ถ้าคอลัมน์ Restart Needed ของคำสั่งแรกเป็น Yes ให้รีบูตก่อนทำขั้นต่อไป ถ้าติดตั้งผ่านหน้าจอ ให้ไปที่ Server Manager > Manage > Add Roles and Features เลือก Role-based or feature-based installation แล้วติ๊ก Remote Desktop Services และ role service Remote Desktop Gateway

RD Gateway ใช้พอร์ต 443 บนเครื่อง ถ้าเครื่องนี้มีเว็บไซต์บน IIS ที่ใช้พอร์ต 443 อยู่แล้ว การรวมไว้เครื่องเดียวกันทำได้แต่จัดการยาก ทางที่ดูแลง่ายกว่าคือใช้เครื่องที่ไม่ได้ให้บริการเว็บอื่น หรือเครื่องเล็กที่ทำหน้าที่ RD Gateway อย่างเดียวแล้วส่งต่อไปยังเครื่องอื่นในเครือข่ายภายใน

ขั้นตอนที่ 2: นำเข้าใบรับรองสำหรับ RD Gateway

ใบรับรองต้องอยู่ใน store Local Computer > Personal และต้องมี private key ถ้าได้มาเป็นไฟล์ .pfx ให้นำเข้าด้วยคำสั่งนี้ แล้วจด Thumbprint ไว้ใช้ในขั้นถัดไป

$pfxPass = Read-Host "PFX password" -AsSecureString
Import-PfxCertificate -FilePath C:\certs\rdg.example.com.pfx -CertStoreLocation Cert:\LocalMachine\My -Password $pfxPass
Get-ChildItem Cert:\LocalMachine\My | Where-Object Subject -like "*rdg.example.com*" | Format-List Subject, NotAfter, Thumbprint

ตรวจสามเรื่องก่อนไปต่อ ชื่อใน Subject หรือ Subject Alternative Name ต้องตรงกับชื่อที่ผู้ใช้จะพิมพ์ในช่อง Gateway ทุกตัวอักษร NotAfter ต้องยังไม่หมดอายุ และใบรับรองต้องออกโดย CA สาธารณะ ใบรับรองแบบ self-signed ใช้ทดสอบได้ แต่ต้องติดตั้งลงทุกเครื่องลูกข่าย ซึ่งไม่เหมาะกับการใช้งานจริง

ขั้นตอนที่ 3: ผูกใบรับรองกับ RD Gateway

เปิด Server Manager > Tools > Remote Desktop Services > Remote Desktop Gateway Manager คลิกขวาที่ชื่อเครื่อง เลือก Properties ไปที่แท็บ SSL Certificate เลือกตัวเลือกที่ให้ใช้ใบรับรองที่มีอยู่แล้วใน store Certificates (Local Computer)/Personal แล้วคลิก Import Certificate... เลือกใบรับรองของ rdg.example.com กด Import และ OK ส่วน Server Status ด้านบนของ RD Gateway Manager จะแสดงว่าผูกใบรับรองสำเร็จหรือไม่

ถ้าต้องการทำด้วย PowerShell เช่น ใส่ในสคริปต์ที่รันหลังต่ออายุใบรับรอง ใช้ provider ของ RemoteDesktopServices แล้วรีสตาร์ตบริการ RD Gateway การรีสตาร์ตจะตัดผู้ที่เชื่อมต่อผ่าน Gateway อยู่ จึงควรทำนอกเวลางาน

Import-Module RemoteDesktopServices
Set-Item -Path RDS:\GatewayServer\SSLCertificate\Thumbprint -Value "A1B2C3D4E5F60718293A4B5C6D7E8F9012345678"
Restart-Service TSGateway

ใบรับรองจาก Let's Encrypt มีอายุสั้น ถ้าต่ออายุแล้วไม่ได้ผูกใบใหม่กับ RD Gateway ผู้ใช้จะเริ่มเจอคำเตือนเรื่องใบรับรองในวันที่ใบเก่าหมดอายุ ให้ตั้งสคริปต์ผูกใบรับรองไว้ในขั้นตอน installation ของ win-acme หรือจดวันหมดอายุไว้ในปฏิทินของทีม

ขั้นตอนที่ 4: สร้างนโยบาย RD CAP กำหนดว่าใครเข้าได้

RD Gateway จะไม่ยอมให้ใครผ่านเลยจนกว่าจะมีทั้ง RD CAP (Connection Authorization Policy) และ RD RAP (Resource Authorization Policy) เริ่มจากสร้างกลุ่มผู้ใช้ที่อนุญาต บนเครื่อง Workgroup ใช้กลุ่มในเครื่อง ถ้าอยู่ในโดเมนให้สร้างกลุ่มใน Active Directory เช่น CORP\RDG-Users แทน

New-LocalGroup -Name "RDG-Users" -Description "Users allowed through RD Gateway"
Add-LocalGroupMember -Group "RDG-Users" -Member "somchai"

ใน RD Gateway Manager ขยายชื่อเครื่อง > Policies คลิกขวาที่ Connection Authorization Policies > Create New Policy > Wizard เลือก Create an RD CAP and an RD RAP (recommended) แล้วตั้งค่าดังนี้

  1. ตั้งชื่อนโยบาย เช่น CAP-RDG-Users
  2. ที่ Supported Windows authentication methods เลือก Password แล้วคลิก Add Group... เพิ่มกลุ่ม RDG-Users
  3. ที่หน้า Device Redirection เลือกว่าจะให้ใช้ไดรฟ์ คลิปบอร์ด และเครื่องพิมพ์ของเครื่องลูกข่ายได้หรือไม่ ถ้าข้อมูลบนเซิร์ฟเวอร์ห้ามออกนอกระบบ ให้เลือก Disable device redirection for the following client device types แล้วติ๊ก Drives และ Clipboard
  4. ที่หน้า Session Timeout เปิด idle timeout เช่น 60 นาที เพื่อตัด session ที่ถูกทิ้งไว้
หน้าจอจำลองแท็บ Requirements ของนโยบาย RD CAP ใน RD Gateway Manager ที่กำหนดกลุ่ม RDG-Users ให้เข้าผ่าน RD Gateway ได้
เฉพาะสมาชิกกลุ่มที่ใส่ในช่อง User group membership เท่านั้นที่ผ่าน RD Gateway ได้ (ภาพจำลอง)

การปิด Device Redirection ที่ RD Gateway บังคับใช้ผ่านโปรแกรมฝั่งลูกข่าย ถ้าต้องการบังคับแน่นอน ให้ปิดที่ Group Policy ของเครื่องปลายทางด้วย

ขั้นตอนที่ 5: สร้างนโยบาย RD RAP กำหนดว่าเข้าเครื่องไหนได้

Wizard จะพาต่อไปยังส่วนของ RD RAP ตั้งชื่อ เช่น RAP-Servers เลือกกลุ่มผู้ใช้กลุ่มเดียวกัน แล้วที่หน้า Network Resource เลือก Select an existing RD Gateway-managed group or create a new one สร้างกลุ่มเครื่องและใส่ชื่อเครื่องที่อนุญาตทุกรูปแบบที่ผู้ใช้อาจพิมพ์ เช่น web-01, web-01.corp.example.com และ 10.0.0.11

จุดนี้คือสาเหตุอันดับหนึ่งที่ RD Gateway ปฏิเสธการเชื่อมต่อ เพราะ RAP เทียบชื่อเครื่องตามที่ผู้ใช้พิมพ์ในช่อง Computer ตรงตัว ถ้าผู้ใช้พิมพ์ IP แต่ในกลุ่มมีแต่ชื่อเครื่อง การเชื่อมต่อจะถูกปฏิเสธ ตัวเลือก Allow users to connect to any network resource (computer) ช่วยตัดปัญหานี้ได้ แต่ผู้ใช้ที่ผ่าน CAP จะเข้าเครื่องใดก็ได้ที่ Gateway มองเห็น จึงควรใช้กับเครือข่ายที่มีแต่เครื่องของทีมเท่านั้น

ที่หน้า Allowed Ports เลือก Allow connections only to port 3389 ถ้าเครื่องปลายทางเปลี่ยนพอร์ต RDP ไว้ ให้เลือก Allow connections to these ports แล้วใส่พอร์ตนั้น จากนั้นกด Finish

ตารางเปรียบเทียบนโยบาย RD CAP และ RD RAP ของ RD Gateway ว่าแต่ละนโยบายควบคุมอะไรและตั้งค่าอะไรบ้าง
ต้องผ่านทั้งสองนโยบาย คนที่ผ่าน CAP แต่ไม่ตรง RAP ก็ยังเข้าเครื่องไม่ได้

ขั้นตอนที่ 6: เปิดพอร์ต 443 และตั้งค่าเครื่องลูกข่าย

ที่ Security Group ของเครื่อง RD Gateway เพิ่มกฎ Inbound แบบ Allow, TCP, HTTPS(443) ถ้าทีมทำงานจากไม่กี่ที่ ให้จำกัด Source เป็น IP เหล่านั้น ถ้าต้องเปิดให้ทุก IP การยืนยันตัวตนจะเกิดที่ RD Gateway ก่อนถึงเครื่องปลายทาง ซึ่งยังปลอดภัยกว่าเปิด 3389 ตรง แต่ควรใช้รหัสผ่านที่แข็งแรงและตั้ง Account Lockout ร่วมด้วย ถ้าต้องการให้ RD Gateway ใช้ UDP เพื่อประสิทธิภาพที่ดีขึ้น ให้เปิด UDP 3391 เพิ่ม ทดสอบจากภายนอกด้วยคำสั่งนี้

Test-NetConnection rdg.example.com -Port 443

บนเครื่อง Windows เปิด Remote Desktop Connection (mstsc) คลิก Show Options แท็บ General ใส่ชื่อเครื่องปลายทางในช่อง Computer ให้ตรงกับที่ใส่ใน RAP จากนั้นไปที่แท็บ Advanced > Connect from anywhere > Settings... เลือก Use these RD Gateway server settings ใส่ rdg.example.com ในช่อง Server name เลือก Logon method เป็น Ask for password (NTLM) แล้วติ๊ก Use my RD Gateway credentials for the remote computer เพื่อไม่ต้องพิมพ์รหัสผ่านสองรอบ

เมื่อเชื่อมต่อได้ ให้กด Save As เก็บเป็นไฟล์ .rdp แจกให้ทีม ค่าที่เกี่ยวกับ Gateway ในไฟล์จะมีลักษณะนี้

full address:s:web-01
gatewayhostname:s:rdg.example.com
gatewayusagemethod:i:1
gatewaycredentialssource:i:0
gatewayprofileusagemethod:i:1
promptcredentialonce:i:1

ผู้ใช้ macOS ใช้ Windows App ตั้งค่า Gateway ตอนเพิ่ม PC ได้ ดูการตั้งค่าพื้นฐานในคู่มือ Remote Desktop จาก macOS แล้วเพิ่ม Gateway เป็น rdg.example.com ด้วยบัญชีเดียวกับที่อยู่ในกลุ่ม RDG-Users

ขั้นตอนที่ 7: ปิดพอร์ต 3389 จากอินเทอร์เน็ต

เมื่อทุกคนในทีมเชื่อมต่อผ่าน RD Gateway ได้แล้ว ให้ลบกฎ Inbound ของ RDP(3389) ออกจาก Security Group ของทุกเครื่อง วิธีแก้กฎดูได้ในคู่มือ Security Group บน TDC Enterprise จากนั้นจำกัดกฎ Remote Desktop ใน Windows Firewall ของเครื่องปลายทางให้รับเฉพาะเครือข่ายภายใน

Set-NetFirewallRule -DisplayGroup "Remote Desktop" -RemoteAddress LocalSubnet
Get-NetFirewallRule -DisplayGroup "Remote Desktop" | Get-NetFirewallAddressFilter | Format-Table RemoteAddress

LocalSubnet ครอบคลุมเฉพาะ subnet เดียวกับเครื่อง ถ้า RD Gateway อยู่คนละ subnet ให้ใส่ IP ภายในของ RD Gateway แทน เช่น -RemoteAddress 10.0.0.5

ทดสอบจากเครื่องภายนอกว่าพอร์ต 3389 ปิดแล้วจริง ผลที่ถูกต้องคือ TcpTestSucceeded : False ขณะที่การเชื่อมต่อผ่าน Gateway ยังใช้งานได้

Test-NetConnection 203.0.113.10 -Port 3389

เก็บ Console ของแพลตฟอร์มไว้เป็นทางเข้าสำรองเสมอ ถ้าใบรับรองหมดอายุหรือบริการ RD Gateway หยุด คุณยังเข้าไปแก้ได้โดยไม่ต้องเปิด 3389 กลับ

รายการตรวจก่อนปิดพอร์ต 3389 หลังตั้ง RD Gateway ทั้งใบรับรอง นโยบาย การทดสอบจากภายนอก และ Console สำรอง
ทดสอบผ่าน RD Gateway ให้ผ่านจากภายนอกก่อน แล้วค่อยลบกฎ 3389

ตรวจสอบการใช้งาน RD Gateway

ใน RD Gateway Manager คลิก Monitoring จะเห็นรายชื่อผู้ใช้ที่เชื่อมต่ออยู่ เครื่องปลายทาง และเวลาที่เริ่มเชื่อมต่อ ตัดการเชื่อมต่อของผู้ใช้ได้จากหน้านี้ ประวัติการผ่านนโยบายและการถูกปฏิเสธดูได้ที่ Event Viewer > Applications and Services Logs > Microsoft > Windows > TerminalServices-Gateway > Operational ถ้าเห็นการถูกปฏิเสธจากชื่อผู้ใช้ที่ไม่รู้จักจำนวนมาก แปลว่ามีคนพยายามเดารหัสผ่านผ่าน Gateway ให้พิจารณาจำกัด IP ที่ Security Group

ปัญหาที่พบบ่อยเกี่ยวกับ RD Gateway

ใช้ RD Gateway โดยไม่มี Active Directory ได้หรือไม่?

ได้ เครื่อง Workgroup ใช้กลุ่มในเครื่องใน RD CAP และ RD RAP ได้ ผู้ใช้ต้องมีบัญชีในเครื่อง RD Gateway และบัญชีบนเครื่องปลายทาง ถ้า Gateway กับเครื่องปลายทางเป็นเครื่องเดียวกัน ใช้บัญชีเดียวได้เลย ถ้าเป็นคนละเครื่อง ให้ปิดตัวเลือก Use my RD Gateway credentials for the remote computer แล้วใส่รหัสของเครื่องปลายทางแยก

ขึ้นข้อความ Your user account is not listed in the RD Gateway's permission list ต้องแก้อะไร?

ข้อความนี้แสดงเมื่อผู้ใช้ไม่ผ่าน CAP หรือชื่อเครื่องที่พิมพ์ไม่ตรงกับ RAP ตรวจว่าบัญชีอยู่ในกลุ่มที่ระบุในทั้งสองนโยบาย และชื่อในช่อง Computer ตรงกับรายการในกลุ่มเครื่องของ RAP ทั้งรูปแบบชื่อสั้น FQDN หรือ IP ถ้าเพิ่งเพิ่มผู้ใช้เข้ากลุ่มโดเมน ให้ผู้ใช้ล็อกเอาต์และเชื่อมต่อใหม่

เครื่องลูกข่ายเตือนว่าตรวจสอบใบรับรองของ RD Gateway ไม่ได้ เกิดจากอะไร?

สาเหตุมีสามแบบ ชื่อที่ใส่ในช่อง Gateway ไม่ตรงกับชื่อในใบรับรอง ใบรับรองหมดอายุ หรือใช้ใบรับรอง self-signed ที่เครื่องลูกข่ายไม่เชื่อถือ ให้ตรวจ NotAfter และชื่อใบรับรองตามขั้นตอนที่ 2 แล้วผูกใบที่ถูกต้องใหม่ตามขั้นตอนที่ 3

ตั้ง RD Gateway แล้วยังต่อเครื่องปลายทางไม่ได้ ควรตรวจอะไรต่อ?

ถ้าผ่าน Gateway แล้วแต่ไปไม่ถึงเครื่อง ปัญหามักอยู่ที่เครื่องปลายทาง เช่น ปิด Remote Desktop ไว้ ไฟร์วอลล์ไม่รับจากเครือข่ายภายใน หรือบัญชีไม่อยู่ใน Remote Desktop Users ไล่ตรวจตามคู่มือแก้ RDP ต่อไม่ติด โดยทดสอบพอร์ต 3389 จากเครื่อง RD Gateway ไปยังเครื่องปลายทาง

ถ้าต้องการให้ช่วยออกแบบทางเข้าระยะไกลสำหรับหลายเซิร์ฟเวอร์ หรือตั้ง RD Gateway ให้ทีมที่ทำงานนอกสถานที่ ติดต่อทีมงาน THAI DATA CLOUD ได้ อ่านรายละเอียดบริการเพิ่มเติมที่ Cloud Windows Server และเงื่อนไขไลเซนส์จากเอกสาร RDS client access licenses ของ Microsoft

อ่านเพิ่มเติมเกี่ยวกับ RD Gateway

แชร์FacebookXLINELinkedIn

มีคำถามเรื่องบริการ? ติดต่อทีมงาน