Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

Windows มีเครื่องมือมากมายสำหรับวินิจฉัยปัญหาในเครือข่าย TCP/IP (ping, telnet, pathping ฯลฯ) แต่ไม่ใช่ทุกอย่างที่ช่วยให้คุณตรวจสอบสถานะหรือสแกนพอร์ตเครือข่ายที่เปิดอยู่บนเซิร์ฟเวอร์ระยะไกลได้อย่างสะดวก ยูทิลิตี้ Portqry.exe เป็นเครื่องมือที่สะดวกสำหรับตรวจสอบการตอบสนองของพอร์ต TCP/UDP บนโฮสต์ระยะไกลเพื่อวินิจฉัยปัญหาที่เกี่ยวข้องกับการทำงานของบริการเครือข่ายต่างๆ และไฟร์วอลล์ในเครือข่าย TCP/IP บ่อยที่สุด Portqry utility ถูกใช้เป็นการแทนที่ที่มีฟังก์ชันมากกว่าสำหรับคำสั่ง telnet และไม่เหมือน telnet มันยังช่วยให้คุณตรวจสอบพอร์ต UDP ที่เปิดอยู่ได้

การสแกนพอร์ต UDP/TCP ที่เปิดอยู่ด้วย PortQry

เวอร์ชันแรกของ PortQry สำหรับ Windows Server 2003 ไม่ทำงานได้อย่างถูกต้องใน OS เวอร์ชันใหม่กว่า (Windows Server 2008 และใหม่กว่า) ดังนั้นเวอร์ชันที่สองของยูทิลิตี้ PortQryV2 จึงถูกปล่อยออกมา นี่คือเวอร์ชันที่คุณควรใช้ในวันนี้ (คุณสามารถดาวน์โหลด PortQryV2 ได้ที่นี่)

บน Windows 10 คุณสามารถติดตั้ง PortQry โดยใช้ Chocolatey package manager ด้วยคำสั่ง:

choco install portqry

ดาวน์โหลดและแยกไฟล์ PortQryV2.exe รัน command prompt และไปที่ไดเรกทอรีที่มียูทิลิตี้ ตัวอย่างเช่น:

cd c:\tools\PortQryV2

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

ตัวอย่างเช่น เพื่อตรวจสอบความพร้อมใช้งานของเซิร์ฟเวอร์ DNS จากไคลเอนต์ คุณต้องตรวจสอบว่าพอร์ต 53 TCP และ UDP เปิดอยู่บนมัน ไวยากรณ์ของคำสั่งตรวจสอบพอร์ตมีดังนี้:

PortQry -n server [-p protocol] [-e || -r || -o endpoint(s)]

  • -n คือชื่อหรือที่อยู่ IP ของเซิร์ฟเวอร์ที่คุณกำลังตรวจสอบความพร้อมใช้งาน;
  • -e คือหมายเลขพอร์ตที่จะตรวจสอบ (จาก 1 ถึง 65535);
  • -r คือช่วงพอร์ตที่จะตรวจสอบ (ตัวอย่างเช่น 1:80);
  • -p คือโปรโตคอลที่ใช้สำหรับการตรวจสอบ อาจเป็น TCP, UDP หรือ BOTH (TCP ถูกใช้โดยค่าเริ่มต้น)

Note ไม่เหมือน PowerShell cmdlet Test-NetConnection ที่สามารถใช้ตรวจสอบความพร้อมใช้งานของพอร์ต TCP เท่านั้น ยูทิลิตี้ PortQry รองรับโปรโตคอล TCP และ UDP ทั้งสอง

ในตัวอย่างของเรา คำสั่งมีลักษณะดังนี้:

PortQry.exe –n 10.0.25.6 -p both -e 53

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

Portqry จะคืนค่าสถานะพอร์ตที่มีอยู่สามอย่าง:

  • Listening – หมายความว่าพอร์ตเปิดอยู่ (ยอมรับการเชื่อมต่อ) ได้รับการตอบสนองจากมัน;
  • Not Listening – แสดงว่าไม่มีกระบวนการ (บริการ) บนระบบเป้าหมายที่ยอมรับการเชื่อมต่อบนพอร์ตที่ระบุ PortQry ได้รับการตอบสนอง ICMP "Destination Unreachable – Port Unreachable" เมื่อตรวจสอบพอร์ต UDP หรือ TCP packet พร้อม flag Reset;
  • Filtered – หมายความว่า PortQry ไม่ได้รับการตอบสนองใดๆ จากพอร์ตที่ระบุ หรือการตอบสนองถูกกรอง กล่าวคือ พอร์ตนี้ไม่ได้ listening บนระบบเป้าหมาย หรือการเข้าถึงถูกจำกัดโดยไฟร์วอลล์หรือการตั้งค่าระบบบางอย่าง โดยค่าเริ่มต้น พอร์ต TCP จะถูกโพลล์ 3 ครั้ง และ UDP 1 ครั้ง

ในตัวอย่างของเรา เซิร์ฟเวอร์ DNS พร้อมใช้งานจากไคลเอนต์ทั้งผ่านพอร์ต TCP และ UDP

TCP port 53 (domain service): LISTENING UDP port 53 (domain service): LISTENING

โดยใช้แอตทริบิวต์ -o คุณสามารถระบุลำดับพอร์ตเพื่อตรวจสอบความพร้อมใช้งานของพวกเขา:

portqry -n 10.0.25.6 -p tcp -o 21,110,143

คำสั่งถัดไปสแกนช่วงหมายเลขพอร์ต TCP/IP ที่รู้จักดีและส่งคืนรายการพอร์ตที่ยอมรับการเชื่อมต่อ (ทำงานเป็น TCP Port Scanner):

portqry -n 10.0.25.6 -r 1:1024 | find ": LISTENING"

คุณสามารถบันทึกผลการสแกนพอร์ตที่เปิดอยู่ลงในไฟล์ข้อความ:

portqry -n 10.0.25.6 -p tcp -r 20:500 -l scan_port_log.txt

ยูทิลิตี้ portqry มีโหมดโต้ตอบ:

portqry –i

ตอนนี้ ที่พรอมป์ PortQry Interactive Mode คุณสามารถระบุชื่อคอมพิวเตอร์ระยะไกลและหมายเลขพอร์ต:

node srv-lic
set port=80

เพื่อตรวจสอบพอร์ตบนเซิร์ฟเวอร์ที่ระบุ กด q และ Enter

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

โดยใช้ аргументы -wport และ -wpid คุณสามารถตรวจสอบสถานะของพอร์ตที่ระบุ (wport) หรือพอร์ตทั้งหมดที่เชื่อมโยงกับกระบวนการที่ระบุ (wpid) บนโฮสต์ท้องถิ่น

ตัวอย่างเช่น คำสั่งต่อไปนี้จะตรวจสอบการตอบสนองของพอร์ตท้องถิ่นที่ระบุภายใน 10 นาที (ตัวอย่างเช่น พอร์ต RDP 3389) และหากสถานะเปลี่ยนแปลง จะแจ้งเตือนผู้ดูแลระบบเกี่ยวกับเรื่องนี้ (log รายละเอียดจะพร้อมใช้งานใน LogFile.txt) หยุดการตรวจสอบพอร์ต กด Ctrl-C:

portqry -wport 3389 -wt 600 –l LogFile.txt -y -v

คุณสามารถรับข้อมูลเกี่ยวกับพอร์ตที่เปิดอยู่และการเชื่อมต่อ TCP/UDP ที่ใช้งานอยู่บนคอมพิวเตอร์ท้องถิ่น:

portqry.exe -local

สถานะพอร์ตที่เปิดของบริการเครือข่ายขั้นสูงใน PortQry

PortQry มีการรองรับสำหรับบริการเครือข่ายบางอย่างในตัว นี่คือ LDAP, Remote Procedure Calls (RPC), โปรโตคอลอีเมล SMTP/POP3/IMAP4, SNMP, FTP/ TFTP, NetBIOS Name Service, L2TP ฯลฯ นอกจากการตรวจสอบความพร้อมใช้งานของพอร์ต เครื่องมือนี้ยังดำเนินการร้องขอเฉพาะโปรโตคอลเพื่อรับสถานะของบริการ

ตัวอย่างเช่น โดยใช้คำสั่งต่อไปนี้ คุณสามารถตรวจสอบความพร้อมใช้งานของ RPC endpoint mapper service (TCP/135) และรับรายการชื่อของ RPC endpoints ที่ลงทะเบียนบนคอมพิวเตอร์ (รวมถึงชื่อ UUID ที่อยู่ที่พวกเขาผูกไว้และแอปพลิเคชันที่เกี่ยวข้อง)

portqry -n 10.0.25.6 -p tcp -e 135

TCP port 135 (epmap service): LISTENING Using ephemeral source port Querying Endpoint Mapper Database… Server’s response: UUID: d95afe72-a6d5-4259-822e-2c84da1ddb0d ncacn_ip_tcp:10.0.25.6 [49152] UUID: 8975497f-93f3-4376-9c9c-fd2277495c27 Frs2 Service ncacn_ip_tcp:10.0.25.6 [5722] UUID: 6b5bd21e-528c-422c-af8c-a4079be4a448 Remote Fw APIs ncacn_ip_tcp:10.0.25.6 [63006] UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint ncacn_ip_tcp:10.0.25.6 [63006] UUID: 367abb81-9844-35f1-ad32-912345001003 ncacn_ip_tcp:10.0.25.6 [63002] UUID: 50cda2a3-574d-40b3-1d66-ee4aaa33a076 ncacn_ip_tcp:10.0.25.6 [56020] …….. UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint ncacn_ip_tcp:10.0.25.6 [49153] Total endpoints found: 61 ==== End of RPC Endpoint Mapper query response ==== portqry.exe -n 10.0.25.6 -e 135 -p TCP exits with return code 0x00000000.

หรือคุณสามารถตรวจสอบความพร้อมใช้งานและการตอบสนองจาก SQL Server Browser service ที่ทำงานบน Microsoft SQL Server:

PortQry.exe -n rome-sql01 -e 1434 -p UDP

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED Sending SQL Server query to UDP port 1434... Server's response: ServerName ROME-SQL01 InstanceName MSSQLSERVER IsClustered No Version 15.0.2000.5 tcp 53200 ServerName ROME-SQL01 InstanceName DBINVENT IsClustered No Version 15.0.2000.5 tcp 1433 ==== End of SQL Server query response ==== UDP port 1434 is LISTENING 

如你所見 PortQry tool แสดงไม่เพียงความพร้อมใช้งานของพอร์ต 1434/UDP แต่ยังแสดงเวอร์ชันของ SQL server และชื่ออินสแตนซ์ที่ทำงานบน SQL server และพอร์ต TCP ของพวกเขา อินสแตนซ์ DBINVENT แรก listening บนพอร์ตเริ่มต้น TCP/1433 และอินสแตนซ์ MSSQLSERVER ที่สองใช้พอร์ต TCP/53200 คงที่จากช่วง RPC

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

คุณสามารถโพลล์พอร์ต SNMP บนอุปกรณ์ได้โดยการระบุชื่อ community:

portqry -n rome-sql1 -cn !snmp_trap! -e 161 -p udp

เมื่อตรวจสอบพอร์ต TCP/25 บนเซิร์ฟเวอร์ SMTP คุณสามารถรับ SMTP banner ของบริการได้:

portqry -n mx.woshub.com -p tcp -e 25

PortQuery GUI Version

ตั้งแต่แรก PortQry เป็นเครื่องมือคอนโซล (CLI) เพียงอย่างเดียว เพื่อทำให้สะดวกกว่าสำหรับผู้ใช้ที่ไม่ชอบใช้ command prompt Microsoft ได้พัฒนา graphic interface เรียบง่ายสำหรับ portqry – PortQueryUI คุณสามารถดาวน์โหลด PortQueryUI จากเว็บไซต์ดาวน์โหลด Microsoft อย่างเป็นทางการ: PortQueryUI.

จริงๆ แล้ว PortQueryUI เป็น graphic add-on สำหรับ portqry เพื่อสร้างคำสั่งและคืนค่าผลลัพธ์ในหน้าต่างกราฟิก

นอกจากนี้ PortQueryUI ยังมีชุดคำขอที่กำหนดไว้ล่วงหน้าหลายชุดสำหรับตรวจสอบความพร้อมใช้งานของบริการ Microsoft ยอดนิยม:

  • Domain and trusts (ตรวจสอบบริการ ADDS บนโดเมนคอนโทรลเลอร์ Active Directory)
  • Exchange Server
  • SQL Server
  • Networking
  • IP Sec
  • Web Server
  • Net Meeting

ผมคิดว่า PortQueryUI ไม่ต้องการความคิดเห็นพิเศษ มันควรจะชัดเจนหากคุณดูภาพหน้าจอด้านล่าง ป้อน DNS name หรือ IP address ของเซิร์ฟเวอร์ระยะไกล เลือกหนึ่งในบริการที่กำหนดไว้ล่วงหน้า (Query predefined service) หรือระบุหมายเลขพอร์ตสำหรับการตรวจสอบพอร์ตด้วยตนเอง (Manually input query ports) และคลิกปุ่ม Query

การใช้ PortQry ตรวจสอบพอร์ต TCP/UDP ที่เปิดอยู่ (Port Scanner)

รหัสคืนที่เป็นไปได้ใน PortQueryUI (ไฮไลท์ในภาพหน้าจอ):

  • 0 (0x00000000) – การเชื่อมต่อสำเร็จและพอร์ตพร้อมใช้งาน;
  • 1 (0x00000001) – พอร์ตที่ระบุไม่พร้อมใช้งานหรือถูกกรอง;
  • 2 (0x00000002 – รหัสคืนปกติเมื่อตรวจสอบความพร้อมใช้งานของการเชื่อมต่อ UDP เนื่องจากไม่มีการคืน ACK response