จัดการ Firewall ด้วย PowerShell บน Windows Server 2025 แบบ Admin มืออาชีพ

Windows Firewall เป็นหนึ่งในระบบรักษาความปลอดภัยที่สำคัญที่สุดบน Windows Server 2025 เพราะเป็นด่านแรกที่ช่วยป้องกันการเชื่อมต่อที่ไม่พึงประสงค์ การโจมตีจากภายนอก และการเข้าถึงบริการที่ไม่ได้รับอนุญาต

แม้ว่าจะสามารถจัดการผ่าน Windows Defender Firewall Console ได้ แต่สำหรับองค์กรที่มี Server จำนวนมาก การใช้ PowerShell จะช่วยให้บริหาร Firewall ได้รวดเร็วกว่า ทำ Automation ได้ และลดความผิดพลาดจากการตั้งค่าด้วยมือ


① Windows Firewall คืออะไร

Windows Firewall คือระบบควบคุมการรับส่งข้อมูลเครือข่าย

สามารถกำหนดได้ว่า

  • อนุญาต Port ใด
  • บล็อก Port ใด
  • อนุญาต Program ใด
  • บล็อก Program ใด
  • อนุญาต IP ใด
  • บล็อก IP ใด

ทำให้ Server มีความปลอดภัยมากขึ้น


② ทำไมต้องใช้ PowerShell จัดการ Firewall

ข้อดีหลักคือ

  • จัดการได้รวดเร็ว
  • รองรับ Automation
  • สร้าง Rule จำนวนมากได้
  • ใช้งานร่วมกับ Script ได้
  • จัดการหลาย Server พร้อมกันได้

PowerShell จึงได้รับความนิยมมากในระบบ Enterprise


③ ตรวจสอบสถานะ Firewall

ใช้คำสั่ง

Get-NetFirewallProfile

ผลลัพธ์จะแสดง

  • Domain Profile
  • Private Profile
  • Public Profile

พร้อมสถานะเปิดหรือปิด


④ เปิด Firewall

เปิดทุก Profile

Set-NetFirewallProfile `
-Profile Domain,Private,Public `
-Enabled True

ควรเปิดใช้งานเสมอในระบบ Production


⑤ ปิด Firewall

ตัวอย่าง

Set-NetFirewallProfile `
-Profile Domain,Private,Public `
-Enabled False

ไม่แนะนำให้ปิดในระบบจริง ยกเว้นเพื่อทดสอบชั่วคราว


⑥ ตรวจสอบ Firewall Rule ทั้งหมด

Get-NetFirewallRule

หาก Server มี Rule จำนวนมาก สามารถกรองข้อมูลเพิ่มเติมได้


⑦ ค้นหา Firewall Rule

ตัวอย่าง

Get-NetFirewallRule |
Where-Object DisplayName -like "*RDP*"

ใช้ค้นหา Rule ที่เกี่ยวข้องกับ Remote Desktop


⑧ ตรวจสอบ Rule ที่เปิดใช้งาน

Get-NetFirewallRule |
Where-Object Enabled -eq True

ช่วยให้ตรวจสอบ Rule ที่กำลังทำงานอยู่


⑨ เปิด Port 3389 (Remote Desktop)

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Allow RDP" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 3389 `
-Action Allow

เป็น Rule ที่ใช้บ่อยที่สุดใน Windows Server


⑩ เปิด Port 80 (Web Server)

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Allow HTTP" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 80 `
-Action Allow

ใช้กับ IIS และ Web Application


⑪ เปิด Port 443 (HTTPS)

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Allow HTTPS" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 443 `
-Action Allow

จำเป็นสำหรับเว็บไซต์ที่ใช้ SSL/TLS


⑫ เปิด Port หลาย Port พร้อมกัน

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Web Ports" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 80,443 `
-Action Allow

ช่วยลดจำนวน Rule ที่ต้องสร้าง


⑬ บล็อก Port

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Block FTP" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 21 `
-Action Block

ใช้ป้องกัน Service ที่ไม่ต้องการ


⑭ อนุญาตเฉพาะ IP ที่กำหนด

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Allow Admin PC" `
-Direction Inbound `
-RemoteAddress 192.168.1.50 `
-Protocol TCP `
-LocalPort 3389 `
-Action Allow

เพิ่มความปลอดภัยให้ Remote Desktop อย่างมาก


⑮ บล็อก IP Address

ตัวอย่าง

New-NetFirewallRule `
-DisplayName "Block Suspicious IP" `
-Direction Inbound `
-RemoteAddress 203.0.113.10 `
-Action Block

ใช้ป้องกันการโจมตีจาก IP ที่ไม่ต้องการ


⑯ ปิดใช้งาน Firewall Rule

ตัวอย่าง

Disable-NetFirewallRule `
-DisplayName "Allow RDP"

Rule จะยังอยู่ แต่ไม่ทำงาน


⑰ เปิดใช้งาน Firewall Rule อีกครั้ง

Enable-NetFirewallRule `
-DisplayName "Allow RDP"

ช่วยให้เปิดใช้งานได้ทันทีโดยไม่ต้องสร้างใหม่


⑱ ลบ Firewall Rule

ตัวอย่าง

Remove-NetFirewallRule `
-DisplayName "Allow RDP"

ควรตรวจสอบให้แน่ใจก่อนลบ


⑲ Export Firewall Policy

ตัวอย่าง

netsh advfirewall export D:\Backup\Firewall.wfw

ใช้สำรองค่าทั้งหมดของ Firewall


⑳ Import Firewall Policy

ตัวอย่าง

netsh advfirewall import D:\Backup\Firewall.wfw

เหมาะสำหรับ Restore หรือ Migration Server


㉑ ตรวจสอบ Firewall Log

ดูตำแหน่ง Log

Get-NetFirewallProfile |
Select-Object Name,LogFileName

ช่วยวิเคราะห์ปัญหาการเชื่อมต่อได้ดี


㉒ ตรวจสอบ Port ที่เปิดใช้งาน

ตัวอย่าง

Get-NetTCPConnection

หรือ

netstat -ano

ใช้ตรวจสอบ Port ที่กำลัง Listen อยู่ในระบบ


㉓ PowerShell กับ Firewall Automation

ตัวอย่าง

สร้าง Rule หลายเครื่องพร้อมกัน

Invoke-Command `
-ComputerName SERVER01,SERVER02,SERVER03 `
-ScriptBlock {
New-NetFirewallRule `
-DisplayName "Allow HTTPS" `
-Direction Inbound `
-Protocol TCP `
-LocalPort 443 `
-Action Allow
}

เหมาะกับองค์กรที่มี Server จำนวนมาก


㉔ Best Practice สำหรับ Firewall

ควรทำดังนี้

  • เปิด Firewall ทุก Profile
  • เปิดเฉพาะ Port ที่จำเป็น
  • จำกัด IP สำหรับ RDP
  • ตรวจสอบ Rule ที่ไม่ได้ใช้
  • Backup Firewall ก่อนแก้ไข
  • เปิด Firewall Logging
  • Audit Rule เป็นประจำ

Firewall ที่ดีต้องเปิดให้น้อยที่สุดเท่าที่จำเป็น


㉕ ข้อผิดพลาดที่พบบ่อย

ปัญหาที่พบประจำ

  • เปิด Port มากเกินไป
  • ใช้ Any IP
  • ลืมเปิด HTTPS
  • ลืม Backup ก่อนแก้ไข
  • สร้าง Rule ซ้ำ
  • ไม่ตรวจสอบ Firewall Log

ปัญหาเหล่านี้มักเป็นต้นเหตุของช่องโหว่ด้าน Security


㉖ GUI หรือ PowerShell ดีกว่า

หัวข้อFirewall ConsolePowerShell
เริ่มต้นง่ายดีมากปานกลาง
สร้าง Rule เดียวดีดี
สร้างหลาย Ruleช้าเร็วมาก
Automationต่ำสูง
Remote Managementจำกัดดีมาก
Enterprise Scaleปานกลางยอดเยี่ยม

องค์กรขนาดใหญ่จึงนิยมใช้ PowerShell เป็นหลัก


㉗ สรุป

การจัดการ Windows Firewall ด้วย PowerShell บน Windows Server 2025 ช่วยให้ผู้ดูแลระบบควบคุมความปลอดภัยของ Server ได้อย่างมีประสิทธิภาพ ไม่ว่าจะเป็นการเปิด Port, ปิด Port, จำกัด IP, สำรองค่า Firewall หรือทำ Automation ในระดับองค์กร

ทีมงาน comsiam แนะนำให้ Administrator ใช้ PowerShell เป็นเครื่องมือหลักในการบริหาร Firewall เพราะช่วยลดเวลาทำงานและเพิ่มความแม่นยำในการตั้งค่า โดยเฉพาะในองค์กรที่มี Server จำนวนมาก และ comsiam มองว่า Firewall ที่ถูกออกแบบและดูแลอย่างเหมาะสม คือหนึ่งในแนวป้องกันที่สำคัญที่สุดของ Infrastructure สมัยใหม่

คำถามชวนคิด

หากคุณต้องเปิด HTTPS ให้กับ Web Server จำนวน 100 เครื่อง คุณจะเข้าไปตั้งค่า Firewall ทีละเครื่อง หรือใช้ PowerShell สั่งงานทั้งหมดภายในไม่กี่วินาที?