Як перевірити, чи відкритий порт для віддаленої системи (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.