EQVPS

วิธีตั้งค่า Windows Firewall บน VPS: เปิดพอร์ต อนุญาต IP เดียว และดูว่าอะไรถูกบล็อก

เปิดพอร์ตบน Windows Server 2022 จำกัดให้เฉพาะ IP ของคุณ เปิด ping บันทึกการเชื่อมต่อที่ถูกบล็อก และสำรองกฎ ทั้งหมดด้วยคำสั่ง PowerShell ไม่กี่บรรทัด เราทดสอบทุกกฎจากเครื่องที่สองเพื่อยืนยันว่ามันเปิดหรือปิดพอร์ตได้จริง

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

คำถามที่พบบ่อย

Windows Firewall เปิดอยู่โดยค่าเริ่มต้นบน Windows VPS ไหม?

เปิด บนอิมเมจ Windows Server 2022 ของเรา ทั้งสามโปรไฟล์เปิดใช้งาน อะแดปเตอร์เครือข่ายอยู่ในโปรไฟล์ Public และการเชื่อมต่อขาเข้าจะถูกบล็อกหากไม่มีกฎอนุญาต ส่วนขาออกอนุญาต

ทำไมเซิร์ฟเวอร์ Windows ของฉันไม่ตอบ ping?

Windows บล็อก ping โดยค่าเริ่มต้น กฎ File and Printer Sharing (Echo Request - ICMPv4-In) มีอยู่แต่ถูกปิด เปิดด้วยคำสั่ง PowerShell เดียว แล้วเซิร์ฟเวอร์จะตอบทันที

ฉันเปิดพอร์ตใน Windows Firewall แล้ว แต่จากอินเทอร์เน็ตยังปิดอยู่ เพราะอะไร?

บนแพ็กเกจ NAT มีเพียงพอร์ตส่วนตัวของคุณที่ไปถึงเซิร์ฟเวอร์ และพอร์ตนั้นไปที่ Remote Desktop ไม่ว่าไฟร์วอลล์จะตั้งอย่างไร พอร์ตอื่นก็เข้าถึงจากอินเทอร์เน็ตไม่ได้ ถ้าจะรันเว็บไซต์หรือบริการอื่นบน Windows ให้ใช้แพ็กเกจที่มี IPv4 ของตัวเอง

ถ้าฉันล็อกตัวเองออกจาก RDP ด้วยกฎไฟร์วอลล์ล่ะ?

เปิดคอนโซลในแดชบอร์ดของคุณ คอนโซลทำงานโดยไม่ใช้ RDP คุณจึงล็อกอินจากตรงนั้นแล้วแก้หรือลบกฎได้ ก่อนจำกัด RDP ให้เหลือ IP เดียว ให้แน่ใจว่าที่อยู่ของคุณไม่เปลี่ยน

จะดูได้อย่างไรว่าไฟร์วอลล์บล็อกอะไร?

เปิดการบันทึกการเชื่อมต่อที่ถูกทิ้งสำหรับโปรไฟล์ Public จากนั้น Windows จะเขียนทุกความพยายามที่ถูกบล็อกลงใน pfirewall.log ในการทดสอบของเรา รายการปรากฏหลังผ่านไปราวหนึ่งนาที เพราะ Windows เขียนล็อกเป็นชุด

ความคิดเห็น

ยังไม่มีความคิดเห็น เป็นคนแรกสิ

แสดงความคิดเห็น

ความคิดเห็นจะถูกตรวจสอบก่อนแสดง