Тесты открытых портов (Server / System / Test-Port)

Теги

Порт — целое неотрицательное число, записываемое в заголовках протоколов транспортного уровня сетевой модели OSI (TCP, UDP, SCTP, DCCP). 

Test-Port, общие заметки. Обычно на хосте под управлением ОС в пространстве пользователя исполняется несколько процессов, в каждом из которых выполняется какая-либо программа. В случае если несколько программ используют компьютерную сеть, то ОС периодически получает по сети IP-пакет, предназначенный для одной из программ. 

Если на хосте какой‑либо процесс постоянно использует один номер порта (например, процесс программы, реализующей web-сервер, может использовать порт 80 для приёма и передачи данных), говорят, что порт является «открытым». Термины «открытый порт» и «закрытый порт» (заблокированный) также используются, когда речь идёт о фильтрации сетевого трафика. Если процесс получил номер порта у ОС («открыл порт») и «держит его открытым» для приёма и передачи данных, говорят, что процесс «прослушивает» порт. Обычно прослушиванием порта занимается процесс программы, реализующей сервер для какого-либо протокола. Процесс программы, реализующей клиент для того же протокола, часто позволяет ОС указать номер порта для подключения к серверу. 

Рассмотрим методы проверки, открыт или закрыт ли сетевой порт на удаленной системе Linux, используя три описанных ниже способа.

  • nc: Netcat - это простая Unix-утилита, которая считывает и записывает данные через сетевые соединения, используя протокол TCP или UDP.
  • nmap: Nmap ("Network Mapper") - инструмент с открытым исходным кодом для исследования сети и аудита безопасности.
  • telnet: Команда telnet используется для интерактивной связи с другим узлом, использующим протокол TELNET.

Все эти команды описанные ниже, позволяют вам сканировать по одному серверу за раз.

Netcat - это простой и мощный инструмент, который считывает и записывает данные через сетевые соединения, используя протокол TCP или UDP. Он позволяет пользователю сканировать один порт или диапазон портов.  Syntax nc (netcat):

$ nc [-options] [host_name or ip] [port_number]

В этом примере мы проверим, открыт ли порт 22 на удаленной системе Linux или нет. Если все пройдет успешно, то вы получите следующий результат:

# nc -zvw3 192.168.1.8 22

Connection to 192.168.1.8 22 port [tcp/ssh] succeeded!

Подробности:

  • nc: сама команда.
  • z: режим нулевого ввода/вывода (используется для сканирования).
  • v: подробная отладка.
  • w3: секунды таймаута.
  • 192.168.1.8: Система назначения, IP адрес.
  • 22: Номер порта который необходимо проверить.

Если порт закрыт, то вы получите следующий вывод:

# nc -zvw3 192.168.1.95 22

nc: connect to 192.168.1.95 port 22 (tcp) failed: Connection refused

nmap (Network Mapper) - это мощный инструмент сканирования сети с открытым исходным кодом, который предназначен для быстрого сканирования больших сетей, но также может быть использован для сканирования одного узла.

Syntax nmap:

$ nmap [-options] [HostName or IP] [-p] [PortNumber]

Если если порт открыт, то вы получите следующий результат:

# nmap 192.168.1.8 -p 22

Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 03:37 IST

Nmap scan report for 192.168.1.8

Host is up (0.00031s latency).

PORT   STATE SERVICE

22/tcp open  ssh

Если порт закрыт, то вы получите следующий вывод:

# nmap 192.168.1.8 -p 80

Starting Nmap 7.70 ( https://nmap.org ) at 2019-03-16 04:30 IST

Nmap scan report for 192.168.1.8

Host is up (0.00036s latency).

PORT   STATE  SERVICE

80/tcp closed http

Команда telnet используется для интерактивной связи с другим узлом по протоколу TELNET. Она не обеспечивает встроенную защиту, поэтому трафик между клиентом TELNET и TELNET-сервером не шифруется.

Syntax telnet:

$ telnet [HostName or IP] [PortNumber]

Если порт открыт, то вы получите следующий результат:

$ telnet 192.168.1.9 22

Trying 192.168.1.9...

Connected to 192.168.1.9.

Escape character is '^]'.

SSH-2.0-OpenSSH_5.3

^]

Connection closed by foreign host.

Если порт закрыт, то вы получите следующий вывод:

$ telnet 192.168.1.9 80

Trying 192.168.1.9...

telnet: Unable to connect to remote host: Connection refused

Быстрый и простой метод отладки портов, несколько команд, чтобы узнать, открыт ли определенный порт на удаленной системе Linux.


В заголовках протоколов TCP и UDP для хранения номеров портов выделены поля размером 16 бит.