Як перевірити, чи відкритий порт для віддаленої системи (ubuntu) [закритий]


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 machine викликає повідомлення про зловживання.
Ньюбі

10

Використовуйте NMAP. Приклад:

nmap example.com

Ви можете використовувати IP-адресу замість доменного імені. Ось повна документація: http://nmap.org/book/man.html


1
Єдиний перелік портів, на яких служби працюють на визначеній машині.
user53864

Тоді ви неправильно використовуєте.
Крістоффер Хаммарстрем

@ user53864, це правильно. Більш конкретно, в ньому будуть перераховані всі порти OPEN, а також описано, які служби ними користуються. Якщо ви шукаєте конкретний порт, спробуйте просто "nmap example.com 22", як сказав natxo asenjo, який сканує порт 22 (SSH), щоб побачити, чи він відкритий.
Джошуа

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

Сподіваюся, це допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.