วิธีการตรวจสอบว่าพอร์ตเปิดอยู่สำหรับระบบรีโมต (อูบุนตู) [ปิด]


53

เป็นไปได้หรือไม่ที่จะตรวจสอบว่าหากพอร์ตนั้นเปิดอยู่สำหรับระบบรีโมตบนเซิร์ฟเวอร์ ubuntu หรือไม่?

ฉันควรตรวจสอบว่าพอร์ต (เช่น: ssh) บนเครื่องของฉันเปิดอยู่สำหรับเครื่องระยะไกลหรือไม่

คำตอบ:


72

ใช้ telnet เก่าที่ดี:

[user@lappie ~]$ telnet host 22
Trying ip.adr.tld ...
Connected to host  (ip.addr.tld).
Escape character is '^]'.
SSH-2.0-OpenSSH_5.1p1 Debian-5

นี่คือความพยายามที่ประสบความสำเร็จ คนที่ไม่ประสบความสำเร็จควรมีลักษณะเช่นนี้

[user@lappie ~]$ telnet host 23
Trying ip.adr.tld ...
telnet: connect to address ip.adr.tld: Connection refused
telnet: Unable to connect to remote host: Connection refused

หรือกับ nmap

[user@lappie ~]$ nmap host

Starting Nmap 5.21 ( http://nmap.org ) at 2010-10-07 11:25 CEST
Nmap scan report for host (ip.adr.tld)
Host is up (0.0052s latency).
rDNS record for ip.adr.tld : host.domain.tld
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
111/tcp  open  rpcbind
3000/tcp open  ppp
5666/tcp open  nrpe

Nmap done: 1 IP address (1 host up) scanned in 0.18 seconds

ความช่วยเหลือที่ดี! ฉันรู้สึกว่ามันแสดงรายการพอร์ตที่ไม่มีบริการที่ทำงานอยู่บนโฮสต์ที่ระบุเท่านั้น ฉันตรวจสอบมันหยุดบริการและเรียกใช้คำสั่ง nmap อีกครั้ง ดังนั้นจึงไม่ได้ระบุพอร์ตที่ฉันหยุด มันแสดงให้เห็นถึงพอร์ตที่เปิดอยู่สำหรับเครื่องระยะไกลหรือไม่?
user53864

1
@ user53864: คุณควรรันการทดสอบนี้บนเครื่องระยะไกลอย่างเห็นได้ชัด
natxo asenjo

2
สิ่งนี้จะทำงานสำหรับบริการ TCP เท่านั้น

การใช้nmapเครื่อง aws จะเรียกรายงานการละเมิด
Newbee

10

ใช้ NMAP ตัวอย่าง:

nmap example.com

คุณสามารถใช้ที่อยู่ IP แทนชื่อโดเมน นี่คือเอกสารฉบับเต็ม: http://nmap.org/book/man.html


1
มันแสดงรายการพอร์ตที่บริการกำลังทำงานอยู่บนเครื่องที่ระบุเท่านั้น
user53864

ถ้าอย่างนั้นคุณใช้มันผิด
Christoffer Hammarström

@ user53864 นั่นถูกต้อง โดยเฉพาะอย่างยิ่งมันจะแสดงรายการพอร์ต OPEN ทั้งหมดและยังอธิบายถึงบริการที่ใช้งานอยู่ หากคุณกำลังมองหาพอร์ตเฉพาะให้ลอง "nmap example.com 22" ตามที่ natxo asenjo กล่าวซึ่งจะสแกนพอร์ต 22 (SSH) เพื่อดูว่าเปิดอยู่หรือไม่
Joshua

9

ง่ายเหมือน:

nc -zw3 domain.tld 22 && echo "opened" || echo "closed"

-w3 หมดเวลา


1
nc -vzw3 domain.tld 22 สั้นกว่าและอาจเป็นข้อมูลอีกเล็กน้อย ...
g2mk

5

สำหรับสคริปต์ฉันใช้สิ่งต่อไปนี้:

nmap example.com -p 22 -sV --version-all -oG - | grep -iq '22/open'

ค่าส่งคืนจะบอกคุณว่าพอร์ตนั้นเปิดอยู่หรือไม่!


5

จากคำตอบ StackOverflowนี้:

ดูเหมือนว่าคุณกำลังมองหาสแกนเนอร์พอร์ตเช่น nmap หรือ netcat ซึ่งทั้งสองอย่างนี้พร้อมใช้งานสำหรับ Windows, Linux และ Mac OS X

ตัวอย่างเช่นตรวจสอบ telnet บน ip ที่รู้จัก:

  nmap -A 192.168.0.5/32 -p 23

ตัวอย่างเช่นค้นหาพอร์ตที่เปิดจาก 20 ถึง 30 บน host.example.com:

  nc -z host.example.com 20-30


2

Telnet จะทำงานกับบริการ TCP เท่านั้นดังนั้นหากคุณพยายามดูว่าเซิร์ฟเวอร์ DHCP (UDP / 68) ของคุณทำงานบนเครื่องระยะไกลหรือไม่ ในทำนองเดียวกันค่าเริ่มต้น nmap เพื่อสแกนพอร์ต TCP เท่านั้น

สำหรับพอร์ต UDP ให้ใช้:

nmap -sU example.com -p 68


1

ฉันใช้คำสั่งต่อไปนี้มันให้สิ่งที่ฉันต้องการ nmap -A IPAddressOfRemoteSystem -p portNumber เช่น: nmap -A 192.168.1.87 -p 8080 (หรือ) เราสามารถตรวจสอบพอร์ตท้องถิ่นได้เช่นกัน

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

netstat -ntlp | grep LISTEN

หลังจากนั้น

nmap -A localhost -p portNumber

และปิดพอร์ตใดพอร์ตหนึ่งตัวอย่างเช่นหาก mysql ทำงานบน 3306 คุณสามารถหยุดได้

sudo service mysql stop

จากนั้น

nmap -A localhost -p 3306

หวังว่าสิ่งนี้จะเป็นประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.