Windows Server มาพร้อมไฟร์วอลล์ที่เปิดอยู่ และนั่นคือค่าเริ่มต้นที่ถูกต้อง ทุกอย่างที่พยายามเชื่อมต่อจากภายนอกจะถูกปฏิเสธ เว้นแต่มีกฎให้ผ่าน คุณจะต้องปรับเมื่อรันสิ่งของคุณเอง เช่น เว็บแอปบนพอร์ต 8080 หรือบริการที่ให้เฉพาะสำนักงานของคุณเข้าถึง คู่มือนี้ทำทุกอย่างด้วย PowerShell บน Windows Server 2022 เราลองทุกกฎบนอิมเมจของเราและทดสอบจากเครื่องที่สอง คุณจึงมั่นใจได้ว่ามันเปิดหรือปิดพอร์ตได้จริง
เปิด PowerShell ในฐานะผู้ดูแลระบบ ถ้ายังไม่ได้ทำ ให้ ป้องกัน RDP ก่อน คู่มือนั้นอธิบายการจำกัด Remote Desktop โดยตรง
1. ดูว่าอะไรเปิดอยู่
Get-NetFirewallProfile | Format-Table Name, Enabled, DefaultInboundAction, DefaultOutboundAction
Get-NetConnectionProfile | Format-Table InterfaceAlias, NetworkCategory
บนเซิร์ฟเวอร์ใหม่ของเรา ทั้งสามโปรไฟล์ (Domain, Private, Public) เปิดอยู่ และอะแดปเตอร์เครือข่ายอยู่ใน Public DefaultInboundAction แสดง NotConfigured ซึ่งหมายถึงพฤติกรรมเริ่มต้นของ Windows คือบล็อกขาเข้า อนุญาตขาออก ดังนั้นกฎที่มีผลคือกฎของโปรไฟล์ Public
ดูว่าขาเข้าอนุญาตอะไรบ้าง:
Get-NetFirewallRule -Direction Inbound -Enabled True -Action Allow |
Group-Object DisplayGroup | Sort-Object Count -Descending |
Select-Object Count, Name -First 8
เรานับได้ 54 กฎขาเข้าที่เปิดอยู่ ส่วนใหญ่เป็นของ Windows เอง (Core Networking, Cast to Device, mDNS) บวกกฎของ Remote Desktop อีกสามข้อ ping ไม่อยู่ในนั้น
2. เปิดพอร์ต
สมมติว่าแอปของคุณรอรับที่พอร์ต TCP 8080:
New-NetFirewallRule -DisplayName 'Web app 8080' -Direction Inbound `
-Protocol TCP -LocalPort 8080 -Action Allow
กฎมีผลทันทีที่สร้าง จากเครื่องที่สองของเรา พอร์ต 8080 เปลี่ยนจากถูกบล็อกเป็นเปิด ขณะที่พอร์ต 8081 ซึ่งมีโปรแกรมรอรับเช่นกัน ยังถูกบล็อก กฎที่ไม่ระบุ -Profile มีผลกับทุกโปรไฟล์ รวมถึง Public
สำหรับช่วงหรือรายการ ใช้ -LocalPort 8000-8010 หรือ -LocalPort 80,443 สำหรับ UDP ให้เปลี่ยน -Protocol
3. อนุญาตเฉพาะบางที่อยู่
บริการส่วนใหญ่ไม่จำเป็นต้องรับการเชื่อมต่อจากทั้งอินเทอร์เน็ต จำกัดกฎให้เฉพาะที่อยู่ที่ควรเชื่อมต่อ:
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10
Set-NetFirewallRule -DisplayName 'Web app 8080' -RemoteAddress 203.0.113.10, 198.51.100.0/24
เราทดสอบทั้งสองกรณี เมื่อใส่ที่อยู่อื่นใน -RemoteAddress เครื่องทดสอบของเราเชื่อมต่อไม่ได้อีก เมื่อเพิ่มที่อยู่ของมันเอง ก็เชื่อมต่อได้ ใช้พารามิเตอร์เดียวกันกับกฎ Remote Desktop เพื่อให้ RDP ใช้ได้เฉพาะจากสำนักงาน ถ้า IP ที่บ้านของคุณเปลี่ยนบ่อย ให้คิดให้ดีก่อนทำแบบนี้กับ RDP
4. เปิด ping
โดยเริ่มต้น Windows ไม่ตอบ ping กฎมีอยู่แต่ถูกปิด:
Enable-NetFirewallRule -DisplayName 'File and Printer Sharing (Echo Request - ICMPv4-In)'
หลังจากนี้เซิร์ฟเวอร์ของเราตอบ ping ทันที เครื่องมือมอนิเตอร์ที่ตรวจสถานะด้วย ping ต้องใช้สิ่งนี้ หากจะปิดอีกครั้ง ให้ใช้ Disable-NetFirewallRule กับชื่อเดิม
5. บันทึกสิ่งที่ถูกบล็อก
เมื่อมีบางอย่างเชื่อมต่อไม่ได้และไม่รู้สาเหตุ ให้ไฟร์วอลล์จดสิ่งที่มันทิ้งไว้:
Set-NetFirewallProfile -Profile Public -LogBlocked True -LogMaxSizeKilobytes 4096
Get-Content C:\Windows\System32\LogFiles\Firewall\pfirewall.log -Tail 20
ทุกความพยายามที่ถูกบล็อกจะกลายเป็นบรรทัดแบบนี้:
2026-10-25 02:07:25 DROP TCP 198.51.100.7 203.0.113.25 43386 445 60 S 2112839481 0 64240 - - - RECEIVE 4
อ่านได้ว่า วันที่และเวลา การกระทำ โปรโตคอล ที่อยู่ต้นทาง ที่อยู่เซิร์ฟเวอร์ของคุณ พอร์ตต้นทาง พอร์ตปลายทาง ใจเย็นนิดหนึ่ง Windows เขียนล็อกเป็นชุด และรายการทดสอบของเราปรากฏราวหนึ่งนาทีหลังความพยายาม ขีดจำกัด 4 MB ช่วยไม่ให้ไฟล์โตไม่สิ้นสุด
6. สำรองและจัดระเบียบ
ก่อนการเปลี่ยนแปลงใหญ่ ให้บันทึกกฎทั้งหมดลงไฟล์:
netsh advfirewall export C:\fw-backup.wfw
ไฟล์ส่งออกของเรามีขนาด 148 KB netsh advfirewall import C:\fw-backup.wfw จะคืนชุดกฎเดิมทุกประการและแทนที่ของปัจจุบัน ลบกฎที่ไม่ต้องใช้แล้วด้วยชื่อ:
Remove-NetFirewallRule -DisplayName 'Web app 8080'
ถ้าคุณล็อกตัวเองออก
ถ้ากฎตัดการเชื่อมต่อ Remote Desktop ของคุณเอง ให้เปิดคอนโซลในแดชบอร์ด คอนโซลไม่ผ่าน RDP คุณจึงล็อกอินแล้วรัน Remove-NetFirewallRule หรือ Set-NetFirewallRule เพื่อย้อนกลับได้
NAT หรือ IP ของตัวเอง
บนแพ็กเกจ NAT อินเทอร์เน็ตเข้าถึงเซิร์ฟเวอร์ผ่านพอร์ตส่วนตัวพอร์ตเดียว ซึ่งไปที่ Remote Desktop พอร์ตอื่นยังเข้าถึงจากภายนอกไม่ได้ ไม่ว่าคุณจะอนุญาตอะไรใน Windows Firewall หากจะให้บริการเว็บไซต์หรือรับการเชื่อมต่อบนพอร์ตอื่น คุณต้องมี IPv4 ของตัวเอง Windows Small-IP (4 vCPU, 4 GB, 50 GB, $28/เดือน) ให้ IP ที่เปิดทุกพอร์ต และเมื่อนั้น Windows Firewall คือผู้ตัดสิน Windows-Small แบบ NAT ราคา $11/เดือน แพ็กเกจ Windows ทั้งสี่อยู่ในหน้า Windows VPS ชำระเงินด้วย USDT, USDC หรือ ETH บนเครือข่าย Base, Ethereum หรือ Polygon
ความคิดเห็น
ยังไม่มีความคิดเห็น เป็นคนแรกสิ