การตรวจสอบพอร์ตที่เปิดอยู่บน Windows เป็นสิ่งที่ผู้ใช้ที่รู้เรื่องเครือข่ายทุกคนควรจะรู้วิธีทำ พอร์ตที่เปิดอยู่หมายความว่าคอมพิวเตอร์ของคุณกำลังฟังการเชื่อมต่อบนหมายเลขพอร์ตนั้นอย่างแข็งขัน และการรู้ว่าพอร์ตใดเปิดอยู่จะช่วยให้คุณจับช่องโหว่ด้านความปลอดภัย แก้ไขปัญหาการเชื่อมต่อ และตรวจสอบว่าแอปพลิเคชันของคุณทำงานอย่างถูกต้อง Windows มีวิธีในตัวหลายวิธีให้คุณทำสิ่งนี้ได้ นอกจากนี้ยังมีเครื่องมือภายนอกที่สามารถทดสอบว่าพอร์ตของคุณมีลักษณะอย่างไรจากภายนอก
สารบัญ
พอร์ตที่เปิดอยู่คืออะไร และเหตุใดจึงสำคัญ
บริการเครือข่ายทุกรายการบนคอมพิวเตอร์ของคุณจะเชื่อมโยงกับหมายเลขพอร์ตระหว่าง 1 ถึง 65535 เมื่อบริการกำลังทำงานและรอการเชื่อมต่อเข้ามา พอร์ตนั้นจะ "เปิด" เมื่อไม่มีอะไรฟังที่นั่น พอร์ตจะ "ปิด" และความพยายามในการเชื่อมต่อเข้ามาจะถูกปฏิเสธหรือละเว้น
นี่คือเหตุผลว่าทำไมสิ่งนี้จึงสำคัญในทางปฏิบัติ:
- การตรวจสอบความปลอดภัย: พอร์ตที่เปิดอยู่โดยไม่คาดหวังอาจหมายความว่ากระบวนการที่ไม่ได้รับอนุญาต มัลแวร์ หรือบริการที่ตั้งค่าผิด กำลังเปิดเผยเครื่องของคุณ
- การแก้ไขปัญหา: หากเว็บเซิร์ฟเวอร์ เซิร์ฟเวอร์เกม หรือเดสก์ทอประยะไกลของคุณไม่สามารถเข้าถึงได้ คำถามแรกคือว่าพอร์ตนั้นเปิดอยู่จริงหรือไม่
- การตรวจสอบ Firewall: Windows Firewall ของคุณอาจบล็อกพอร์ตแม้ว่าบริการกำลังทำงาน หรืออนุญาตให้ใช้พอร์ตที่คุณคิดว่าปิดอยู่
ใช้คำสั่ง Netstat เพื่อดูพอร์ตที่เปิดอยู่
คำสั่ง
netstat
เป็นวิธีในตัวที่เร็วที่สุดในการแสดงรายการพอร์ตทุกพอร์ตที่เครื่อง Windows ของคุณกำลังฟังอยู่ เปิด Command Prompt (ค้นหา "cmd" ในเมนู Start คลิกขวา และเลือก "Run as administrator") และเรียกใช้:
netstat -ano
แฟลกจะแบ่งออกเช่นนี้:
-
-aแสดงการเชื่อมต่อทั้งหมดที่ใช้งานอยู่และพอร์ตที่ฟังอยู่ -
-nแสดงที่อยู่และหมายเลขพอร์ตเป็นตัวเลขแทนที่จะแก้ไขชื่อโฮสต์ (เร็วกว่ามาก) -
-oเพิ่ม Process ID (PID) เพื่อให้คุณสามารถระบุว่าโปรแกรมใดเป็นเจ้าของพอร์ตแต่ละพอร์ต
คอลัมน์ผลลัพธ์คือ: Proto , Local Address , Foreign Address , State และ PID ค้นหาแถวที่คอลัมน์ State บอกว่า LISTENING นั่นคือพอร์ตที่เปิดอยู่ของคุณ
เพื่อจำกัดให้เหลือเพียงพอร์ตที่ฟังอยู่:
netstat -ano | findstr LISTENING
เมื่อคุณมี PID ที่ต้องการตรวจสอบ ให้ค้นหาชื่อกระบวนการด้วย:
tasklist /fi "PID eq 1234"
แทนที่
1234
ด้วย PID จริงจากผลลัพธ์ netstat นี่บอกคุณว่าไฟล์ปฏิบัติการใดกำลังฟังบนพอร์ตนั้นอย่างแน่นอน
เพื่อตรวจสอบว่าพอร์ตเฉพาะกำลังใช้งานอยู่หรือไม่ ให้รวม netstat กับ findstr:
netstat -ano | findstr :443
การตรวจสอบพอร์ตด้วย PowerShell
PowerShell ให้คุณมีทางเลือกที่สะอาดและเขียนสคริปต์ได้มากขึ้นแทน netstat เปิด PowerShell เป็นผู้ดูแลระบบและเรียกใช้:
Get-NetTCPConnection -State Listen | Select-Object LocalAddress, LocalPort, OwningProcess | Sort-Object LocalPort
นี่ส่งคืนรายการพอร์ต TCP ที่เรียงลำดับทุกพอร์ตในสถานะ LISTEN รวมถึงที่อยู่ในเครื่องและ PID เพื่อแก้ไข PID เป็นชื่อกระบวนการในคำสั่งเดียวกัน:
Get-NetTCPConnection -State Listen |
Select-Object LocalPort,
@{Name="Process";Expression={(Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue).Name}} |
Sort-Object LocalPort
คุณยังสามารถทดสอบว่าโฮสต์ระยะไกลมีพอร์ตเฉพาะเปิดอยู่หรือไม่ได้โดยตรงจาก PowerShell โดยใช้
Test-NetConnection
:
Test-NetConnection -ComputerName example.com -Port 443
หาก
TcpTestSucceeded : True
ปรากฏในผลลัพธ์ พอร์ตเปิดอยู่และยอมรับการเชื่อมต่อจากเครื่องของคุณ สิ่งนี้มีประโยชน์สำหรับการตรวจสอบการเชื่อมต่อขาออกจากพีซี Windows ของคุณไปยังเซิร์ฟเวอร์ ไม่ใช่เพียงการตรวจสอบว่าเปิดอยู่ในเครื่องเท่านั้น
การตรวจสอบการตั้งค่า Windows Firewall สำหรับกฎพอร์ต
Windows Firewall ควบคุมว่าพอร์ตใดได้รับอนุญาตเข้าและออก บริการสามารถฟังบนพอร์ตในเครื่องได้ แต่หากไฟร์วอลล์บล็อกการรับส่งข้อมูลขาเข้าบนพอร์ตนั้น ไคลเอนต์ภายนอกจะไม่สามารถเข้าถึงได้ นี่คือวิธีการตรวจสอบกฎไฟร์วอลล์ของคุณ
ใช้ Windows Defender Firewall ที่มีความปลอดภัยขั้นสูง
-
กด
Win + R
พิมพ์
wf.mscแล้วกด Enter - คลิก Inbound Rules ในแผงด้านซ้ายเพื่อดูกฎที่ควบคุมการรับส่งข้อมูลเข้ามาในเครื่องของคุณ
- คลิก Outbound Rules เพื่อดูการรับส่งข้อมูลที่ออกจากเครื่องของคุณ
- เรียงลำดับตาม Enabled เพื่อดูกฎที่ใช้งานอยู่อย่างรวดเร็ว
- กฎแต่ละข้อแสดงโปรโตคอล (TCP/UDP) พอร์ตในเครื่อง พอร์ตระยะไกล และการดำเนิน (Allow/Block)
ใช้บรรทัดคำสั่ง
เพื่อแสดงรายการกฎไฟร์วอลล์ที่ใช้งานอยู่ทั้งหมดจากบรรทัดคำสั่ง:
netsh advfirewall firewall show rule name=all
เพื่อตรวจสอบว่าพอร์ตเฉพาะได้รับอนุญาตผ่านไฟร์วอลล์หรือไม่:
netsh advfirewall firewall show rule name=all | findstr "LocalPort"
เอกสารอย่างเป็นทางการของ Microsoft เกี่ยวกับ การกำหนดค่า Windows Firewall ครอบคลุมการสร้างและการจัดการกฎโดยละเอียดหากคุณต้องการเพิ่มหรือแก้ไขกฎ
ใช้ Port Scanner บน Windows
เครื่องมือในตัวมีประโยชน์สำหรับการตรวจสอบเครื่องของคุณเอง แต่บางครั้งคุณต้องสแกนโฮสต์อื่นบนเครือข่ายของคุณ หรือคุณต้องการภาพรวมด้านสายตาแทนผลลัพธ์บรรทัดคำสั่งดิบ Port scanner ที่เฉพาะเจาะจงเติมเต็มช่องว่างนั้น
Nmap เป็นมาตรฐานอุตสาหกรรมสำหรับการสแกนพอร์ต มันเป็นฟรี โอเพนซอร์ส และพร้อมใช้งานสำหรับ Windows จาก หน้าดาวน์โหลด Nmap อย่างเป็นทางการ โปรแกรมติดตั้ง Windows รวม Zenmap ซึ่งเป็นส่วนติดต่อกราฟิก การสแกนพื้นฐานของโฮสต์จะมีลักษณะเช่นนี้:
nmap -sV 192.168.1.1
แฟลก
-sV
พยายามตรวจสอบเวอร์ชันบริการที่ทำงานบนพอร์ตที่เปิดแต่ละพอร์ต สิ่งนี้มีประโยชน์สำหรับการตรวจสอบความปลอดภัยเครือข่ายบน Windows เพราะคุณสามารถดูได้ว่าไม่เพียงแต่พอร์ตใดเปิดอยู่ แต่ซอฟต์แวร์ใดอยู่เบื้องหลัง
ทดสอบพอร์ตที่เปิดอยู่ของคุณจากภายนอก
นี่คือความแตกต่างที่สำคัญที่คู่มือส่วนใหญ่ข้าม พอร์ตสามารถฟังได้ในเครื่องบน Windows ของคุณ แต่ยังคงปรากฏปิดต่อโลกภายนอก สิ่งนี้เกิดขึ้นเมื่อเราเตอร์ของคุณไม่ได้ส่งต่อพอร์ตนั้น หรือเมื่อ ISP ของคุณบล็อกมัน เพื่อทราบว่าอินเทอร์เน็ตเห็นอะไรจริงๆ คุณต้องทดสอบจากจุดมองเห็นภายนอก
นี่คือสิ่งที่เครื่องมือตรวจสอบพอร์ตออนไลน์ทำ มันเริ่มต้นการเชื่อมต่อ TCP ไปยังที่อยู่ IP ของคุณจากเซิร์ฟเวอร์ระยะไกล และรายงานว่าการเชื่อมต่อได้รับการยอมรับ (Open) ปฏิเสธ (Closed) หรือหมดเวลา (Timeout) ไม่จำเป็นต้องติดตั้งซอฟต์แวร์ และมันข้ามไฟร์วอลล์ในเครื่องของคุณทั้งหมดเพื่อแสดงมุมมองภายนอกจริง
ดูพอร์ตที่เปิดอยู่บนเครื่อง Windows ของคุณอย่างแน่นอน
เครื่องมือตรวจสอบพอร์ตออนไลน์ฟรีของเราทดสอบการเชื่อมต่อ TCP กับ IP หรือโดเมนใดๆ จากเซิร์ฟเวอร์ภายนอก เพื่อให้คุณได้มุมมองจริงจากภายนอกเมื่อตรวจสอบพอร์ตที่เปิดอยู่บน Windows ตรวจสอบพอร์ตเดียวหรือตรวจสอบเป็นชุดได้ถึง 10 พอร์ตในคราวเดียว พร้อมผลลัพธ์ในหน่วยมิลลิวินาที
ตรวจสอบพอร์ตที่เปิดอยู่ของคุณ →
อ้างอิงพอร์ตทั่วไปอย่างรวดเร็ว
การรู้ว่าบริการใดใช้พอร์ตใดช่วยประหยัดเวลาเมื่อคุณแก้ไขปัญหา นี่คือพอร์ตที่คุณจะพบบ่อยที่สุดบนระบบ Windows:
| พอร์ต | โปรโตคอล | บริการ | การใช้งานทั่วไปบน Windows |
|---|---|---|---|
| 80 | TCP | HTTP | เว็บเซิร์ฟเวอร์ (IIS, Apache) เซิร์ฟเวอร์ dev ในเครื่อง |
| 443 | TCP | HTTPS | เว็บเซิร์ฟเวอร์ที่ปลอดภัย Windows Update |
| 3389 | TCP | RDP | Remote Desktop Protocol การบริหารจัดการระยะไกล |
| 445 | TCP | SMB | การแชร์ไฟล์ การแชร์เครือข่าย Windows |
| 22 | TCP | SSH | OpenSSH (สร้างเข้ามาใน Windows 10/11) |
| 21 | TCP | FTP | การถ่ายโอนไฟล์ บริการ IIS FTP |
| 25 | TCP | SMTP | การส่งอีเมล การส่งเซิร์ฟเวอร์เมล |
| 3306 | TCP | MySQL | การเชื่อมต่อฐานข้อมูล MySQL/MariaDB |
| 5432 | TCP | PostgreSQL | การเชื่อมต่อฐานข้อมูล PostgreSQL |
| 135 | TCP | RPC | Windows Remote Procedure Call, DCOM |
ปิดพอร์ตที่คุณไม่ต้องการ
การตรวจสอบพอร์ต Windows ที่ดีไม่ใช่เพียงเรื่องการค้นหาว่าเปิดอยู่ มันเกี่ยวกับการตัดสินใจว่าควรเปิดอะไรและปิดทุกอย่างอื่นๆ นี่คือวิธีการปฏิบัติจริง:
- เรียกใช้ netstat -ano และแสดงรายการพอร์ต LISTENING ทั้งหมด แมป PID แต่ละรายการไปยังชื่อกระบวนการโดยใช้คำสั่ง tasklist ที่แสดงไว้ก่อนหน้านี้
-
ระบุบริการที่คุณไม่ต้องการ
ตัวอย่างเช่น หากคุณไม่ได้ใช้ IIS ก็ไม่มีเหตุผลว่าทำไมพอร์ต 80 หรือ 443 ควรเปิดในเครื่อง หยุดบริการผ่าน
services.msc -
ตรวจสอบกฎขาเข้า Windows Firewall
เปิด
wf.mscและปิดใช้งานกฎใดๆ ที่อนุญาตการรับส่งข้อมูลไปยังพอร์ตที่คุณระบุว่าไม่จำเป็น - ตรวจสอบเราเตอร์ของคุณ กฎการส่งต่อพอร์ตบนเราเตอร์ของคุณสามารถเปิดเผยพอร์ตแม้ว่า Windows Firewall จะบล็อกมันที่ระดับ OS ก็ตาม เข้าสู่แผงควบคุมผู้ดูแลเราเตอร์ของคุณและตรวจสอบพอร์ตที่ส่งต่อ
- ทดสอบอีกครั้งจากภายนอก หลังจากทำการเปลี่ยนแปลง ให้เรียกใช้การตรวจสอบพอร์ตภายนอกอีกครั้งเพื่อยืนยันว่าพอร์ตไม่สามารถเข้าถึงได้อีกต่อไป
คำเตือนด้านไซเบอร์ CISA เผยแพร่การแจ้งเตือนเป็นประจำเกี่ยวกับพอร์ตเฉพาะที่ถูกใช้ประโยชน์ในการทำงาน การตรวจสอบรายการนั้นเป็นระยะๆ เป็นนิสัยที่ดีหากคุณจัดการเซิร์ฟเวอร์ Windows
พอร์ตที่เปิดอยู่ในเครื่องหมายความว่าบริการบนเครื่อง Windows ของคุณกำลังฟังการเชื่อมต่อบนหมายเลขพอร์ตนั้นอย่างแข็งขัน พอร์ตที่เปิดอยู่จากภายนอกหมายความว่าคอมพิวเตอร์ภายนอกบนอินเทอร์เน็ตสามารถเข้าถึงได้จริง เราเตอร์ ISP หรือ Windows Firewall ของคุณสามารถบล็อกการเข้าถึงจากภายนอกแม้ว่าพอร์ตจะฟังในเครื่องก็ตาม ทดสอบจากเครื่องมือภายนอกเสมอเพื่อยืนยันสถานะในโลกแห่งความจริง
สิ่งนี้เกิดจากสาเหตุหนึ่งในสามอย่าง Windows Firewall มีกฎขาเข้าที่บล็อกพอร์ต เราเตอร์ของคุณไม่มีกฎการส่งต่อพอร์ตสำหรับพอร์ตนั้น หรือ ISP ของคุณบล็อกพอร์ตที่ระดับเครือข่าย ตรวจสอบแต่ละชั้นตามลำดับ พอร์ตที่ ISP บล็อกทั่วไป ได้แก่ 25 (SMTP) 80 และ 443 บนการเชื่อมต่อที่อยู่อาศัย
การเปิดเผย RDP โดยตรงต่ออินเทอร์เน็ตเป็นความเสี่ยงด้านความปลอดภัยที่สำคัญ บอท อัตโนมัติจะสแกนพอร์ต 3389 ที่เปิดอยู่อย่างต่อเนื่องและพยายามเข้าสู่ระบบด้วยการโจมตี brute-force หากคุณต้องการการเข้าถึงระยะไกล ให้ใช้ VPN เพื่อไปยังเครือข่ายของคุณก่อน จำกัดการเข้าถึง RDP ไปยังที่อยู่ IP เฉพาะใน Windows Firewall หรือใช้พอร์ตที่ไม่ใช่มาตรฐานรวมกับรหัสผ่านที่แข็งแรงและการตรวจสอบสิทธิ์ระดับเครือข่าย (NLA)
Netstat แสดงพอร์ต UDP เมื่อคุณใช้แฟลก
-a
ค้นหาแถวที่มีป้ายกำกับ
UDP
ในคอลัมน์ Proto อย่างไรก็ตาม UDP ไม่มี handshake การเชื่อมต่อเหมือน TCP ดังนั้นจึงยากกว่ามากที่จะทดสอบจากระยะไกล เครื่องมือตรวจสอบพอร์ตออนไลน์ส่วนใหญ่ รวมถึงเครื่องมือที่ใช้ TCP ทดสอบเฉพาะการเชื่อมต่อ TCP สำหรับการสแกน UDP Nmap ที่มีแฟลก
-sU
เป็นตัวเลือกที่ปฏิบัติได้ แม้ว่าจะต้องมีสิทธิ์ผู้ดูแลระบบก็ตาม
เปิด
wf.msc
คลิก "Inbound Rules" จากนั้นคลิก "New Rule" ทางด้านขวา เลือก "Port" เลือก TCP หรือ UDP ป้อนหมายเลขพอร์ต เลือก "Allow the connection" ใช้กับโปรไฟล์ที่เหมาะสม (Domain, Private, Public) และตั้งชื่อกฎ สำหรับแฟนบรรทัดคำสั่ง ให้ใช้:
netsh advfirewall firewall add rule name="MyPort" dir=in action=allow protocol=TCP localport=8080
Timeout หมายความว่าเครื่องมือตรวจสอบพอร์ตส่งคำขอการเชื่อมต่อ TCP แต่ไม่ได้รับการตอบกลับภายในระยะเวลารอ (โดยปกติสองสามวินาที) โดยปกติหมายความว่า firewall กำลังทิ้งแพ็กเก็ตอย่างเงียบๆ แทนที่จะปฏิเสธอย่างแข็งขัน ผลลัพธ์ "Closed" หมายความว่าโฮสต์ส่งกลับการรีเซ็ต TCP ซึ่งปฏิเสธการเชื่อมต่ออย่างแข็งขัน Timeout เป็นเรื่องปกติมากขึ้นกับการกำหนดค่า firewall ที่เข้มงวดซึ่งทิ้งแทนที่จะปฏิเสธการรับส่งข้อมูล