Просмотр открытых портов в windows 10

Синтаксис Nmap

Команда запуска Nmap очень проста для этого достаточно передать ей в параметрах целевой IP адрес или сеть, а также указать опции при необходимости:

$ nmap опции адрес

Теперь давайте рассмотрим основные опции, которые понадобятся нам в этой статье.

  • -sL — просто создать список работающих хостов, но не сканировать порты nmap;
  • -sP — только проверять доступен ли хост с помощью ping;
  • -PN — считать все хосты доступными, даже если они не отвечают на ping;
  • -sS/sT/sA/sW/sM — TCP сканирование;
  • -sU — UDP сканирование nmap;
  • -sN/sF/sX — TCP NULL и FIN сканирование;
  • -sC — запускать скрипт по умолчанию;
  • -sI — ленивое Indle сканирование;
  • -p — указать диапазон портов для проверки;
  • -sV — детальное исследование портов для определения версий служб;
  • -O — определять операционную систему;
  • -T — скорость сканирования, чем больше, тем быстрее;
  • -D — маскировать сканирование с помощью фиктивных IP;
  • -S — изменить свой IP адрес на указанный;
  • -e — использовать определенный интерфейс;
  • —spoof-mac — установить свой MAC адрес;
  • -A — определение операционной системы с помощью скриптов.

Теперь, когда мы рассмотрели все основные опции, давайте поговорим о том, как выполняется сканирование портов nmap.

Что такое сканер портов?

Сканер портов относится к программному приложению, которое сканирует сервер на наличие открытых портов. Он позволяет аудиторам и сетевым администраторам проверять сетевую безопасность, в то время как злоумышленники и хакеры используют ее для определения открытых портов для использования или запуска вредоносных служб на компьютере или сервере.

Сканирование портов представляет собой способ определения, какие порты в сети открыты. Поскольку порты на компьютере — это место, где информация отправляется и принимается, сканирование портов аналогично стуку в дверь, чтобы увидеть, находится ли кто-то дома. Выполнение сканирования портов в локальной сети или на сервере позволяет определить, какие порты открыты и находятся в режиме прослушивания (listening) (получения информации), а также выявить наличие таких устройств безопасности, как межсетевые экраны, которые находятся между отправителем и целью. Этот метод известен как дактилоскопия (fingerprinting). Это также полезно для тестирования сетевой безопасности и надежности брандмауэра системы. Благодаря этой функциональности, это также популярный инструмент разведки для злоумышленников, ищущих слабую точку доступа для проникновения в компьютер или сервер.

Порты различаются по своим назначениям. Они пронумерованы от 0 до 65535, но определенные диапазоны используются чаще. Порты с 0 по 1023 идентифицируются (https://ru.wikipedia.org/wiki/Список_портов_TCP_и_UDP), как «общеизвестные порты» или стандартные порты и были назначены для определенных служб, агентством по присвоению номеров в Интернете (IANA). Некоторые из наиболее известных портов и назначенных им служб включают в себя:

  • Порт 20 (UDP) — протокол передачи файлов (FTP) для передачи данных
  • Порт 22 (tcp) — протокол Secure Shell (SSH) для безопасного входа, FTP и переадресации портов
  • Порт 23 (tcp) — протокол Telnet для не зашифрованных текстовых коммутаций
  • Порт 53 (UDP) — Система доменных имен (DNS) переводит имена всех компьютеров в Интернете в IP-адреса
  • Порт 80 (tcp) — Всемирная паутина HTTP

Зачем нужна команда nmap?

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

Также команда nmap – это самый доступный инструмент в руках злоумышленников для организации подготовки хакерской атаки на сеть. Ведь с помощью этой команды очень легко получить информацию, на основе которой можно судить о слабых и уязвимых местах в атакуемой системе.

Scanning Open UDP/TCP Ports with PortQry

The first version of PortQry for Windows Server 2003 doesn’t work correctly in newer OS versions (Windows Server 2008 and newer), so the second version of the utility, PortQryV2, has been released. It is the version that you should use today (you can download PortQryV2 here).

On Windows 10, you can install PortQry using the Chocolatey package manager with the command:

Download and extract the PortQryV2.exe archive. Run the command prompt and go to the directory with the utility, for example:

For example, to check the availability of a DNS server from a client, you need to check if 53 TCP and UDP ports are open on it. The syntax of the port check command is as follows:

  • -n is the name or IP address of the server, which availability you are checking;
  • -e is the port number to be checked (from 1 to 65535);
  • -r is the range of ports to be checked (for example, 1:80);
  • -p is the protocol used for checking. It may be TCP, UDP, or BOTH (TCP is used by default).

Note. Unlike the Test-NetConnection PowerShell cmdlet that can be used to check the availability only of TCP ports, the PortQry utility supports both TCP and UDP protocols.

In our example, the command looks like this:

Portqry will return one of three available port states:

  • Listening – means that the port is opened (accepts connections), a response has been received from it;
  • Not Listening – shows there isn’t any process (service) on the target system that accepts connections on the specified port. The PortQry received an ICMP response “Destination Unreachable – Port Unreachable” when checking the UDP port, or TCP packet with the Reset flag;
  • Filtered – means that PortQry hasn’t received any response from the specified port or the response has been filtered. I. e., this port is not listening on the target system, or the access to it is restricted by a firewall or some system settings. By default, TCP ports are polled 3 times, and UDP is one.

In our example, the DNS server is available from the client both over TCP and UDP ports.

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

Using -o attribute, you can specify the sequence of ports to check their availability:

The next command scans the ranges of the well-known TCP/IP port numbers and returns the list of ports that accept the connections (works as TCP Port Scanner):

You can save the open ports scan result to a text file:

The portqry utility has an interactive mode:

Now, at the PortQry Interactive Mode prompt, you can specify the name of the remote computer and port number:

To check the port on the specified server, press q and Enter.

Using the -wport and -wpid arguments, you can monitor the status of the specified port (wport), or all ports associated with the specified process (wpid) on the local host.

For example, the following command will monitor the response of the specified local port within 10 minutes (for example, RDP port 3389), and if its status changes, it will notify the administrator about this (a detailed log will be available in the LogFile.txt). To stop port monitoring, press Ctrl-C:

You can get information about opened  ports and active TCP/UDP connections on the local computer:

Почему важно знать, какие порты открыты на компьютере?

Открытый порт на вашем компьютере (если не настроен файервол для запрета входящих соединений) означает, что к вашему компьютеру можно подключиться из вне.

Если ваш компьютер заражён вредоносным программным обеспечением, таким как троян, бэкдор (вирусы, которые позволяют злоумышленнику удалённо подключаться к вашему компьютеру и управлять им), то обычно такой бэкдор открывает порт и прослушивает сеть, в ожидании входящего соединения. Хотя могут быть варианты, например, многие бэкдоры подключаются к компьютеру злоумышленника и ожидают команд — в этом случае правильнее говорить не об открытом порте, а об установленном соединении

Это распространённый способ поведения вредоносного ПО, поскольку в данном случае не требуется, чтобы у жертвы был белый IP (что для домашних компьютеров является редкостью). Поэтому важно проверять открытые порты и установленные сетевые соединения. Конечно, установленное соединение означает наличие открытого порта, но с технической точки зрения это всё-таки разные вещи.

Ещё один пример, когда нужно определить, какая именно служба прослушивает порт: вы пытаетесь установить сетевую службу (веб-сервер Apache или СУБД MySQL), а они не запускаются, так как какая-то другая служба уже заняла их порт, который они используют по умолчанию. В этом случае нужно найти эту службу и отключить её или настроить на работу с другим портом.

Но, как и во многих IT задачах (да и вообще во многих профессиональных сферах), получить данные это только самое начало. Главное — это правильно их истолковать и понять.

Поэтому в этой статье мы рассмотрим, как узнать, какие порты открыты, как проверить, какая служба прослушивает определённый порт, а также научимся правильно понимать вывод команды NETSTAT и аналогичных.

lsof

Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые, для этого нужно использовать опцию -i, а чтобы отображались именно порты, а не названия сетевых служб следует использовать опцию -P:

Ещё один пример, смотрим какие процессы работают с портом 80:

4. Nmap

Программа Nmap — мощный сетевой сканер, разработанный для сканирования и тестирования на проникновение удаленных узлов, но ничего не мешает направить его на локальный компьютер. Утилита позволяет не только посмотреть открытые порты, но и примерно определить какие сервисы их слушают и какие уязвимости у них есть. Программу надо установить:

Затем можно использовать:

Для простого сканирования можно запускать утилиту без опций. Детальнее о её опциях можно узнать в статье про сканирование сети в Nmap. Эта утилита ещё будет полезна если вы хотите посмотреть какие порты на компьютере доступны из интернета.

Если это публичный сервер, то результат скорее всего не будет отличатся от локального сканирования, но на домашнем компьютере все немного по другому. Первый вариант — используется роутер и в сеть будут видны только порты роутера, еще одним порогом защиты может стать NAT-сервер провайдера. Технология NAT позволяет нескольким пользователям использовать один внешний IP адрес. И так для просмотра открытых внешних портов сначала узнаем внешний ip адрес, для надежности воспользуемся онлайн сервисом:

Дальше запускаем сканирование:

В результате мы видим, что открыт порт 80 веб-сервера и 22 — порт службы ssh, я их не открывал, эти порты открыты роутером, 80 — для веб-интерфейса, а 22 для может использоваться для обновления прошивки. А еще можно вообще не получить результатов, это будет означать что все порты закрыты, или на сервере установлена система защиты от вторжений IDS. Такая проверка портов может оказаться полезной для того, чтобы понять находится ли ваш компьютер в безопасности и нет ли там лишних открытых портов, доступных всем.

5. Zenmap

Программа Zenmap — это графический интерфейс для nmap. Она не делает ничего нового кроме того, что может делать nmap, просто предоставляет ко всему этому удобный интерфейс. Для её установки выполните:

Запустить программу можно из главного меню или командой:

Затем введите адрес localhost в поле Цель и нажмите кнопку Сканирование:

После завершения сканирования утилита вывела список открытых портов Linux.

Расширенный статус сетевых служб в PortQry

В утилите PortQry имеется встроенная поддержка некоторых сетевых служб. Это LDAP, Remote Procedure Calls (RPC), почтовые протоколы (SMTP, POP3 и IMAP4), SNMP, FTP/ TFTP, NetBIOS Name Service, L2TP и другие. Кроме проверки доступности этих стандартных портов этих служб, утилита выполняет специфические для конкретного протокола запросы для получения статуса сервиса.

Например, с помощью следующего запроса мы не только проверим доступность службы RPC endpoint mapper (TCP/135), но и получим список имен зарегистрированных в системе конечных точек RPC (в том числе их имя, UUID, адрес к которому они привязаны и приложение, с которым они связаны).

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.1.10.6 
UUID: 897e215f-93f3-4376-9c9c-fd2277495c27 Frs2 Service
ncacn_ip_tcp:10.1.10.6 
UUID: 6b5bd21e-528c-422c-af8c-a4079be4fe48 Remote Fw APIs
ncacn_ip_tcp:10.1.10.6 
UUID: 12345678-1234-abcd-ef22-0123456789ab IPSec Policy agent endpoint
ncacn_ip_tcp:10.1.10.6 
UUID: 367abb81-9844-35f1-ad32-91f038001003
ncacn_ip_tcp:10.1.10.6 
UUID: 50abc2a3-574d-40b3-1d66-ee4fd5fba076
ncacn_ip_tcp:10.1.10.6 
……..
UUID: 3c4428c5-f0ab-448b-bda1-6ce01eb0a6d5 DHCP Client LRPC Endpoint
ncacn_ip_tcp:10.1.10.6 
Total endpoints found: 61
==== End of RPC Endpoint Mapper query response ====
portqry.exe -n 10.1.10.6  -e 135 -p TCP exits with return code 0x00000000.

Или вы можете проверить доступность и ответ от службы SQL Server Browser на сервере Microsoft SQL Server:

UDP port 1434 (ms-sql-m service): LISTENING or FILTERED
Sending SQL Server query to UDP port 1434...
Server's response:
ServerName MSK-SQL01
InstanceName MSSQLSERVER
IsClustered No
Version 15.0.2000.5

tcp 53200
ServerName MSK-SQL01
InstanceName BANKDB
IsClustered No
Version 15.0.2000.5
tcp 1433
==== End of SQL Server query response ====
UDP port 1434 is LISTENING

Как вы видите, утилита portqry показала не только доступность UDP порта, но и версию SQL сервера и имена запущенных на сервере SQL экземпляров и их TCP порты (один инстанс BANKDB живет на порту по умолчанию tcp 1433, второй MSSQLSERVER использует фиксированный порт из RPC диапазона 53200 — см. статью о настройке портов в SQL Server).

Можно опросить SNMP порт на устройстве, указав название community:

При проверке 25 порта на SMTP сервере можно получить баннер приветствия сервера:

Пишем сканер на сокетах

Этот ска­нер — самый прос­той и оче­вид­ный. Что­бы узнать, какие пор­ты откры­ты, мож­но прос­то поп­робовать под­клю­чить­ся к ним пооче­ред­но и пос­мотреть, что будет.

Все при­меры кода при­вожу на Python 3.10, а работать я пред­почитаю в PyCharm, хотя и не навязы­ваю тебе свой выбор.

Соз­даем прог­рамму и импорти­руем основные модули:

www

Под­робнее узнать о работе с модулем socket мож­но в офи­циаль­ной докумен­тации.

За­пом­ним вре­мя запус­ка прог­раммы — в даль­нейшем это при­годит­ся, что­бы узнать вре­мя ска­ниро­вания.

Хра­нить пары из пор­тов и наз­ваний сер­висов будем пря­мо в коде. При желании можешь про­апгрей­дить этот метод, нап­ример до фай­лов JSON.

Пре­обра­зуем передан­ный аргу­мент в IP-адрес. Для это­го скор­мим пер­вый аргу­мент коман­дной стро­ки нашего ска­нера фун­кции  — бонусом получим раз­решение DNS, если переда­но домен­ное имя, а не IP-адрес.

Те­перь в цик­ле обой­дем все пор­ты из спис­ка и про­верим воз­можность под­клю­чения к ним. Если порт зак­рыт, будет вызывать­ся исклю­чение, которое мы перех­ватим, и прог­рамма не вылетит.

В кон­це работы сох­раня­ем вре­мя окон­чания и выводим на экран дли­тель­ность ска­ниро­вания.

Те­перь, что­бы про­тес­тировать работу нашего ска­нера, откро­ем тер­минал, перей­дем в пап­ку со ска­нером и выпол­ним коман­ду

info

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

Са­мо собой, вмес­то IP в при­мере мож­но ука­зать любой хост.

Да­вай пос­мотрим, как это выг­лядит со сто­роны сер­вера. Для это­го вос­поль­зуем­ся ста­рич­ком Netcat. Ска­чай его и запус­ти сле­дующим обра­зом:

warning

Netcat может понадо­бить­ся внес­ти в белый спи­сок анти­виру­са или сог­ласовать уста­нов­ку с кор­поратив­ной служ­бой безопас­ности. Netcat час­то исполь­зуют хакеры, что­бы под­нять шел­лы в ском­про­мети­рован­ных сис­темах, так что ругань анти­виру­са впол­не оправдан­на.

В сосед­нем тер­минале запус­каем наш ска­нер изу­чать наш собс­твен­ный IP-адрес. Пос­мотреть его мож­но в выводе коман­ды . В резуль­тате в окне с Netcat про­изой­дет сле­дующее.

Ре­акция Netcat на ска­ниро­вание

На скрин­шоте вид­но, что было уста­нов­лено пол­ноцен­ное соеди­нение, и, конеч­но, в реаль­нос­ти любая прог­рамма тоже это уви­дит, то есть незамет­но прос­каниро­вать кого‑то таким обра­зом не получит­ся.

Так­же давай теперь прос­каниру­ем сер­вер (имен­но его IP был в пер­вом при­мере). Резуль­таты будут выг­лядеть при­мер­но так:

Ска­нер нашел два откры­тых пор­та — 22 и 80. Но если прос­каниро­вать этот же хост при помощи Nmap, уви­дим, что откры­тых пор­тов нам­ного боль­ше.

По­чему так? Nmap про­ходит по зна­читель­но боль­шему спис­ку пор­тов, чем наш ска­нер, и, соот­ветс­твен­но, видит боль­ше. Если мы добавим эти пор­ты в наш ска­нер, он тоже их най­дет.

По­нят­но, что такой ска­нер вряд ли при­меним в реаль­ных усло­виях, кро­ме сов­сем уж экзо­тичес­ких: нап­ример, ког­да ска­ниро­вать надо с машины, на которую невоз­можно дос­тавить пол­ноцен­ный ска­нер, но на которой уже есть Python.

Да­вай луч­ше поп­робу­ем сде­лать ска­нер, который не ста­нет так палить­ся и работать будет куда быс­трее.

About the Nmap Port Scanner Software

Nmap is a network port scanner that tests network connectivity between different hosts and services. Firewalls, Router ACL’s and other factors can impact a network based connection.

Initially Nmap was a simple but powerful tool that enabled the scanning of networks or individual hosts to determine if there were services running and if a firewall was present. Modern versions of Nmap have extended capability to include a built in scripting language (NSE) that can perform a multitude of additional checks against any services found to be open. This ever growing list of scripts has pushed Nmap into the realms of a fast light weight vulnerability scanner.

Download Nmap today from insecure.org, it is available in versions for Windows (XP, 2003, 2008) and Linux / FreeBSD. Zenmap is a graphical front end for those not comfortable on the command line. When installing Nmap I encourage you to download from the source as it is constantly being improved and built upon. Linux distributions will not always have the latest version in the package repository.

Синтаксис команды nmap и особенности её работы

Команда nmap довольно проста в использовании и каким-то сложным синтаксисом не отличается:

nmap   {цель сканирования}

Чего нельзя сказать о количестве, функциональности её ключей и неисчерпаемых возможностях их применения. Официальная документация, доступная на страницах man-руководства (команда man nmap), кроме того, что очень подробная (трудно встретить ещё подробнее), так ещё и имеет качественный перевод (локализации, в том числе и на русском языке) в большинстве Linux-дистрибутивов.

Не всегда утилита nmap предустановлена в системе, поэтому для её использования требуется установка соответствующего пакета, который обычно имеет имя nmap:

$ sudo apt-get install nmap

Или в Centos/Redhat

$  yum install nmap -y

Пример:

$ nmap -sT localhost

Столбец STATE показывает состояние порта: он может быть открыт (open), когда связан с использующими его службами (соединениями), закрыт (closed), когда порт не используется ни одним сервером. Также доступны состояния: unfiltered, когда nmap не смогла определить состояние порта. А также filtered – когда порт защищён (или заблокирован) брандмауэром.

Для задания хоста можно также использовать цифровую запись в виде IP-адреса. Отчёт из данного примера сформирован для самого обычного компьютера, для которого не была сконфигурирована какая-то защита. Как можно видеть, для прослушивания 80 и 443 портов для работы протоколов HTTP и HTTPS соответственно, запущен веб-сервер. Сервер баз данных (БД) MySQL также работает по стандартному порту.

Что такое порт компьютера

Порты, доступность которых определяет сканер, открываются по запросу, когда определенная программа собирается взаимодействовать с удаленными серверами. В результате подключение к нему становится возможным. Каждый порт имеет собственный зарезервированный номер – проверить можно только его. Это предусмотрено TCP или айпи протоколом. Так, если обозреватель подключается к порту, номер которого совпадает с нужным сайтом, в ответ браузер принимает зашифрованные данные – этот код отображается в виде веб-ресурса.

Проверка портов по IP на доступность допускается в случае, если компьютеру или мобильному устройству присвоен индивидуальный адрес. Уточнить эту информацию можно у своего провайдера.

Yougetsignal

Yougetsignal – это инструмент проверки открытых портов, который позволяет вам проверять любой внешний IP-адрес на наличие открытых портов.

Это полезный инструмент для проверки ограничений, установленных в брандмауэре.

С помощью этого инструмента вы можете проверить все порты TCP и UDP.

Заключение

Ниже перечислены некоторые бесплатные инструменты, доступные в Интернете для проверки открытых портов на сервере и других DNS-запросов.

Мы классифицировали некоторые из лучших сканеров портов и инструментов проверки портов, чтобы помочь найти открытые порты и другие связанные с портами операции при выполнении теста на проникновение в сеть.

  • 8 лучших инструментов сканеров IP для управления сетью
  • ? GoScan: интерактивный сетевой сканер

Немного о сетевых портах

Они представляют собой числовые комбинации, отображающиеся в виде 16 битного значения в диапазоне 1-65535. Записываются показатели в заголовках протоколов (пакетов в совокупности с IP) транспортного уровня, согласно принципам построения сетевой модели OSI. Посредством открытых портов (виртуальных путей) устанавливается связь хостов и устройств (приложений). Они выделяются системой и служат промежуточным звеном между ПО или сервисами с внутренними или внешними программами/host.

Классификация и особенности типов портов

Виды port определяются числовыми диапазонами, выделенными под них. Идентифицируемые номера системные ресурсы бывают трех типов:

  1. Наиболее распространенными считаются от 1 до 1023. Этими комбинациями активно пользуются почтовые ресурсы (POP версии 3), IMAP, веб-сервисы HTML и другие.
  2. Port от 1024 до 49151 относятся к категории зарезервированных. Они забронированы конкретными протоколами ПО.
  3. Port от 49152 до 65536 называют частными или динамическими. Т.е. они открытые для использования кем угодно.

Используя сканер онлайн можно, в том числе, проверить порт на принадлежность к определенному типу. В выгрузке результатов указываются открытые port и отображаются их номера.

Полезная информация

Не стоит путать порты с разъемами устройств. Формально, это понятия синонимы. Однако в первом случае, устанавливается виртуальная связь, а во втором, — физическая.

Интересный факт! По умолчанию порты с 20 по 21 — это соединение FTP. 110-ый выделен для почтовых протоколов POP3.

Сокетом (файловым дескриптором) называют сочетание IP и порта. С помощью этой связки ПО осуществляет передачу данных.

Технология Port Forwarding

Проброс портов (в дословном переводе переадресация или отображение) предназначен для обращения к ПК во внутренней локальной сети из Интернета посредством маршрутизатора по механизму NAT/ NAPT (в TCP/IP, преобразовывая IP транзитных пакетов). С помощью перенаправления трафика, технология открывает доступ с внешнего адреса к «целевому» устройству.

Обратите внимание! По умолчанию порты router закрыты в целях защиты от сетевых атак. При необходимости подключения определенных служб (в том числе многопользовательских игр) их открывают вручную

Как работает Nmap?

В компьютерных сетях все подключенные устройства имеют свой ip адрес. Каждый компьютер поддерживает протокол ping, с помощью которого можно определить подключен ли он к сети. Мы просто отправляем ping запрос компьютеру, и если он отзывается, то считаем, что он подключен. Nmap использует немного иной подход. Компьютеры также определенным образом реагируют на те или иные сетевые пакеты, утилита просто отправляет нужные пакеты и смотрит какие хосты прислали ответ.

Но об этом вы, наверное, уже знаете. Более интересно то как Nmap узнает какие сервисы запущены на машине. Суть работы всех сетевых программ основана на портах. Чтобы получить сообщение из сети, программа должна открыть порт на вашем компьютере и ждать входящих соединений. А для отправки сообщения по сети нужно подключиться к уже другой программой (адресатом) порту. Затем программе необходимо будет открыть порт, на котором она будет ждать ответа.

Утилита nmap в процессе сканирования сети перебирает доступный диапазон портов и пытается подключиться к каждому из них. Если подключение удалось, в большинстве случаев, передав несколько пакетов программа может даже узнать версию программного обеспечения, которые ожидает подключений к этому порту. Теперь, после того, как мы рассмотрели основы, рассмотрим как пользоваться nmap для сканирования портов и сети.

Как проверить открытые порты в Linux с соответствующим сервисом-процессом?

Существуют различные способы, с помощью которых можно определить открытые порты прослушивания на Linux.

1. Проверка открытых портов в Linux с помощью команды NETSTAT

В основной форме команда NetStat выводит на экран или печатает информацию о сетевых подключениях и таблицу маршрутизации и т.д. Однако та же команда вместе с параметром ниже может быть использована для проверки открытых портов в Linux.

Команда:

netstat -tulpn | grep LISTEN

Вывод:

# netstat -tulpn | grep LISTEN
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      904/sshd
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      866/master
tcp6       0      0 :::80                   :::*                    LISTEN      1086/httpd
tcp6       0      0 :::22                   :::*                    LISTEN      904/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      866/master
#

Вот команда выше отображает все выходные TCP, а также порты UDP. В случае, если вы хотите отфильтровать его дальше, допустим, вы хотите узнать, процесс или услугу, используемую по порту 80, следуют использовать команду ниже.

# netstat -tulpn | grep LISTEN|grep 80
tcp6       0      0 :::80                   :::*                    LISTEN      1086/httpd
#

В приведенной выше командной порт используется HTTPd службы с PID 1086.

2. Проверка открытых портов в Linux с помощью утилиты lsof

Утилита lsof в основном отображает список открытых файлов. Однако с некоторыми настройками параметров мы можем в состоянии также проверить открытые порты в Linux. По умолчанию она не установлена в системе, пожалуйста, следуйте ниже набором команд для установки в соответствии с дистрибутивом Linux.

Для RHEL и CentOS OS
#yum install lsof
 
Для Debian и Ubuntu OS
#apt install lsof

Команда:

#lsof -i -P -n

Вывод:

# lsof -i -P -n
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
chronyd   513   chrony    1u  IPv4  14330      0t0  UDP 127.0.0.1:323
chronyd   513   chrony    2u  IPv6  14331      0t0  UDP :323
dhclient  548     root    6u  IPv4  15326      0t0  UDP *:68
dhclient  548     root   20u  IPv4  15315      0t0  UDP *:41668
dhclient  548     root   21u  IPv6  15316      0t0  UDP *:23435
master    866     root   13u  IPv4  16678      0t0  TCP 127.0.0.1:25 (LISTEN)
master    866     root   14u  IPv6  16679      0t0  TCP :25 (LISTEN)
sshd      904     root    3u  IPv4  17424      0t0  TCP *:22 (LISTEN)
sshd      904     root    4u  IPv6  17426      0t0  TCP *:22 (LISTEN)
sshd      951     root    3u  IPv4  17884      0t0  TCP 172.31.22.4:22->103.211.42.2:59572 (ESTABLISHED)
sshd      954 ec2-user    3u  IPv4  17884      0t0  TCP 172.31.22.4:22->103.211.42.2:59572 (ESTABLISHED)
httpd    1086     root    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)
httpd    1088   apache    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)
httpd    1089   apache    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)
httpd    1090   apache    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)
httpd    1091   apache    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)
httpd    1092   apache    4u  IPv6  19036      0t0  TCP *:80 (LISTEN)

В случае, если вы хотите получить более подробную информацию о порте 80 можно использовать следующую команду:

# lsof -i :80
COMMAND  PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   1056   root    4u  IPv6  19036      0t0  TCP *:http (LISTEN)
httpd   1057 apache    4u  IPv6  19036      0t0  TCP *:http (LISTEN)
httpd   1058 apache    4u  IPv6  19036      0t0  TCP *:http (LISTEN)
httpd   1059 apache    4u  IPv6  19036      0t0  TCP *:http (LISTEN)
httpd   1060 apache    4u  IPv6  19036      0t0  TCP *:http (LISTEN)
httpd   1061 apache    4u  IPv6  19036      0t0  TCP *:http (LISTEN)

Здесь, в этом выводе вы можете четко отметить, что порт 80 используется службой HTTP, имеющей PID 1056.

3. Проверка открытых портов в Linux с помощью nmap

Nmap является инструментом сканирования порта, используемый в Linux. Он не установлен на системах Linux по умолчанию. Вам необходимо установить его с помощью следующей команды.

yum install nmap

После того, как он установиться, используется команда для проверки открытых портов в Linux.

Команда:

# nmap -sT -O localhost

Вывод:

# nmap -sT -O localhost
 
Starting Nmap 6.40 ( http://nmap.org ) at 2017-09-15 13:59 UTC
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
RTTVAR has grown to over 2.3 seconds, decreasing to 2.0
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00023s latency).
Other addresses for localhost (not scanned): 127.0.0.1
Not shown: 997 closed ports
PORT   STATE SERVICE
22/tcp open  ssh
25/tcp open  smtp
80/tcp open  http
Device type: general purpose
Running: Linux 3.X
OS CPE: cpe:/o:linux:linux_kernel:3
OS details: Linux 3.7 - 3.9
Network Distance: 0 hops
 
OS detection performed. Please report any incorrect results at http://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 1.66 seconds
#

В выводе выше мы можем в состоянии очень легко проверить открытые порты.

В случае, если Вы хотите изучить больше о сетевых команд в Linux следуйте этой статье.

IP адрес 0.0.0.0

Кстати, IP адрес 0.0.0.0 довольно интересный, так как используется в разных случаях.

Например, некоторые службы в качестве адреса привязки (bind) позволяют установить 0.0.0.0. Это означает, что служба будет прослушивать порт на всех сетевых интерфейсах данного компьютера, то есть на всех IP адресах. В некоторых службах (например, веб-сервер Apache), просто не нужно указывать никакой определённый IP адрес (в том числе 0.0.0.0) и по умолчанию они будут прослушивать входящие соединения на всех сетевых интерфейсах.

Важно понимать, что 0.0.0.0 и 127.0.0.1 это совершенно разные вещи. Хотя если в Linux пинговать 0.0.0.0, то пинги будут отправляться именно к 127.0.0.1

В Windows попытка пинга 0.0.0.0 вызовет сообщение о сбое передачи данных, то есть о недоступности адреса. Адрес 0.0.0.0 означает «любой IP данного компьютера» и включает в себя в том числе 127.0.0.1.

Адрес 0.0.0.0 обычно означает, что IP адрес ещё не настроен или не присвоен. Такой адрес указывает хост, который обращается к DHCP для получения IP адреса.

Если 0.0.0.0 указан в качестве адреса получателя, то он должен расцениваться как широковещательный адрес 255.255.255.255.

Адрес 0.0.0.0 с маской 0.0.0.0, то есть 0.0.0.0/0 используется для обозначения маршрута по умолчанию (default route).

Этот адрес не является валидным адресом для назначения сетевому интерфейсу, точно также как и вся подсеть 0.0.0.0/8 (то есть любой адрес, начинающийся с 0.).

Если в Linux обратиться к этому адресу, например, набрать в веб браузере адрес http://0.0.0.0, то откроется страница локального веб сервера (если он установлен и запущен). В Windows такой адрес вызовет ошибку о неверном адресе.

Также адрес 0.0.0.0 может использоваться для явного указания, что целевой хост недоступен.

Эта информация приведена просто для справки и для расширения кругозора, а теперь продолжаем с нашими открытыми портами.

Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Работатека
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: