Домой / Opera / Прослушиваемые порты windows. Как узнать, какой процесс прослушивает порт в Windows? Неподдерживаемые системой семейства адресов

Прослушиваемые порты windows. Как узнать, какой процесс прослушивает порт в Windows? Неподдерживаемые системой семейства адресов

Всем привет ранее я начал рассказ про сетевые утилиты системного администратора в статье "Утилита pathping или как диагностировать проблему на маршруте до сайта. Сетевые утилиты 3 часть ", движемся дальше и разбираем еще одну утилиту netstat или, как определить какие порты слушает ваш компьютер. Данная программка, будет не заменимым инструментом в багаже софта, любого системного инженера, поможет ему провести быструю диагностику ситуации и обнаружить ряд всевозможных проблем с сервисами и их доступностью.

Команды netstat

Netstat - Отображение активных подключений TCP , портов, прослушиваемых компьютером, статистики Ethernet, таблицы маршрутизации IP, статистики IPv4 (для протоколов IP, ICMP, TCP и UDP) и IPv6 (для протоколов IPv6, ICMPv6, TCP через IPv6 и UDP через IPv6)

Представим ситуацию вы установили например MSM LSI утилиту для просмотра параметров RAID контроллера, запускаете утилиту, но ничего она не находит, потому что закрыт порт а какой вы не в курсе, и не всегда в инете можно быстро найти информацию об этом, для этого вы и может запустить netstat и посмотреть какой порт слушает ваш сервер с MSM процессом.

Открываем командную строку Windows и вводим netstat ?. У вас выскочит справка утилиты.

C:\Users\sem>netstat ?

Отображение статистики протокола и текущих сетевых подключений TCP/IP.

NETSTAT [-a] [-b] [-e] [-f] [-n] [-o] [-p протокол] [-r] [-s] [-x] [-t]
[интервал]

  • -a Отображение всех подключений и портов прослушивания.
  • -b Отображение исполняемого файла, участвующего в создании
  • каждого подключения или порта прослушивания. Иногда известные исполняемые файлы содержат множество независимых компонентов. Тогда отображается последовательность компонентов, участвующих в создании подключения или порта прослушивания. В этом случае имя исполняемого файла находится снизу в скобках , сверху находится вызванный им компонент, и так до тех пор, пока не достигнут TCP/IP. Заметьте, что такой подход может занять много времени и требует достаточных разрешений.
  • -e Отображение статистики Ethernet. Может применяться вместе с параметром -s.
  • -f Отображение полного имени домена () для внешних адресов.
  • -n Отображение адресов и номеров портов в числовом формате.
  • -o Отображение ИД процесса каждого подключения.
  • -p протокол Отображение подключений для протокола, задаваемых этим параметром. Допустимые значения: TCP, UDP, TCPv6 или UDPv6. Если используется вместе с параметром -s для отображения статистики по протоколам, допустимы следующие значения: IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP или UDPv6.
  • -r Отображение содержимого таблицы маршрутов.
  • -s Отображение статистики по протоколам. По умолчанию статистика отображается для протоколов IP, IPv6, ICMP, ICMPv6, TCP, TCPv6, UDP и UDPv6. Параметр -p позволяет указать подмножество выводимых данных.
  • -t Отображение состояния разгрузки для текущего подключения.
  • -x Отображение подключений, прослушивателей и общих конечных точек NetworkDirect.
  • -y Отображение шаблона подключений TCP для всех подключений. Не может использоваться вместе с другими параметрами. interval Повторное отображение выбранной статистики с паузой между отображениями, заданной интервалом в секундах. Чтобы прекратить повторное отображение статистики, нажмите клавиши CTRL+C. Если этот параметр опущен, netstat напечатает текущую информацию о конфигурации один раз.

Давайте посмотрим интересные ключи утилиты netstat. Первое что вводим

и у нас на экране появится статистика сетевых пакетов ethernet.

Если добавим ключ -s то получим статистику по протоколам.

Очень полезно посмотреть все что слушает ваш хост для этого пишем

Вывод команды содержит Тип протокола либо TCP либо UDP, локальный адрес с портом который слушается и внешний адрес с портом и состояние действия.

Для полного понимания информации, предоставляемой этой командой, необходимо понять принципы установки соединения в протоколе TCP/IP. Вот основные этапы процесса установки соединения TCP/IP:

1. При попытке установить соединение клиент отправляет сообщение SYN серверу.

2. Сервер отвечает собственным сообщением SYN и подтверждением (ACK).

3. После этого клиент отправляет сообщение ACK обратно на сервер, завершая процесс установки соединения.

Процесс разрыва соединения состоит из следующих этапов:

1. Клиент сообщает "Я закончил", отправляя сообщение FIN серверу. На этом этапе клиент только принимает данные от сервера, но сам ничего не отправляет.

2. После этого сервер отправляет сообщение ACK и отправляет собственное сообщение FIN клиенту.

3. После этого клиент отправляет сообщение ACK серверу, подтверждая запрос сервера FIN.

4. При получении сообщения ACK от клиента сервер закрывает соединение.

Понимание этапов процесса установки и разрыва соединения позволяет более прозрачно интерпретировать состояния соединений в выводе команды netstat. Соединения в списке могут находиться в следующих состояниях.

  • CLOSE_WAIT - указывает на пассивную фазу закрытия соединения, которая начинается после получения сервером сообщения FIN от клиента.
  • CLOSED - соединение прервано и закрыто сервером.
  • ESTABLISHED - клиент установил соединение с сервером, получив от сервера сообщение SYN.
  • FIN_WAIT_1 - клиент инициировал закрытие соединения (отправил сообщение FIN).
  • FIN_WAIT_2 - клиент получил сообщения ACK и FIN от сервера.
  • LAST_ACK - сервер отправил сообщение FIN клиенту.
  • LISTEN - сервер готов принимать входящие соединения.
  • SYN_RECEIVED - сервер получил сообщение SYN от клиента и отправил ему ответ.
  • TIMED_WAIT - клиент отправил сообщение FIN серверу и ожидает ответа на это сообщение.
  • YN_SEND - указанное соединение активно и открыто.

Утилита netstat или как определить какие порты слушает ваш компьютер. Сетевые утилиты 4 часть-06

Мы будем развертывать новое приложение на сервере, и приложение будет прослушивать порт 8443. Мы попросили команду Network открыть для порта 8443 на этом сервере перед развертыванием приложения. В настоящее время приложение не прослушивает данный порт на сервере.

В любом случае я могу убедиться, что брандмауэр открыт для порта 8443

ОС: Solaris 10 10/09 s10s_u8wos_08a SPARC

5 Solutions collect form web for “Как проверить, открыт ли брандмауэр для порта, но не прослушивается порт”

Если вы хотите узнать, можете ли вы сформировать TCP-соединение с удаленной машины, установите OpenCSW на этом и целевом компьютере и установите netcat на обоих. Это синтаксис использования netcat для проверки соединений TCP:

nc -vz targetServer portNum

Например, чтобы проверить SSH на «homeServer1»:

nc -vz homeserver1 22

Это позволяет вам тестировать подключение на уровне TCP от удаленной системы. Netcat также может быть настроен для прослушивания на порту, а не для работы в качестве клиента. Чтобы прослушать его на TCP / 8443:

На сервере, на котором будет nc -l homeserver1 8443 приложение: nc -l homeserver1 8443

На машине, которая находится за пределами брандмауэра: nc -vz homeserver.fqdn 8443

Это пример успешного выполнения:

$ nc -vz ditirlns01.ncat.edu 8443 Connection to ditirlns01.ncat.edu 8443 port succeeded!

Неудачное выполнение:

$ nc -vz ditirlns01.ncat.edu 8443 nc: connect to ditirlns01.ncat.edu port 8443 (tcp) failed: Connection refused

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

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

1) Брандмауэр отклоняет запрос

Вы получите сообщение ICMP, и инструмент, делающий запрос, должен немедленно сообщить вам об этом («недоступный, запрещенный администратором» и т. Д.). Под «инструментом» я подразумеваю клиент, который вы используете для отправки запроса (я использовал telnet).

«Нет маршрута к хосту» может указывать на это, но это может также указывать на более тонкие проблемы маршрутизации.

2) Брандмауэр отбрасывает пакет

Ответ отсутствует, поэтому инструмент ждет, пока он не выйдет из строя или вам не станет скучно.

3) Брандмауэр разрешает пакет (или нет брандмауэра), но ничто не слушает порт.

Появляется сообщение TCP RST / ACK. Я предполагаю, что протокол TCP требует этого. Другими словами, если ничто не слушает порт, сама ОС отправляет этот ответ. Это может быть трудно отличить от # 1 только на основе того, что сообщает инструмент, потому что в обоих случаях он может сказать то же самое (однако, скорее всего, это отличает это как «отказ от соединения» по сравнению с №1, «недоступность сети»,). Сценарий № 1 (сообщение об отклонении ICMP) и # 3 (сообщение TCP RST / ACK), наблюдаемое в пакете сниффера на клиентской машине, отчетливо отличается.

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

Другими словами: предполагая, что ваша сеть в целом работает правильно, если вы получаете # 1 или # 2, это означает, что брандмауэр активно предотвращает доступ к порту. # 3 произойдет, если ваш сервер не запущен, но порт доступен, и, конечно, (неявное) # 4 – успешное соединение.

Вы можете использовать команду netstat чтобы увидеть, открыт ли порт и прослушивается.

пример

$ netstat -anp | less Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:41716 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN - tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN - tcp 0 0 0.0.0.0:17500 0.0.0.0:* LISTEN 3034/dropbox tcp 0 0 0.0.0.0:17501 0.0.0.0:* LISTEN 3033/dropbox tcp 0 0 127.0.0.1:2143 0.0.0.0:* LISTEN 3191/ssh tcp 0 0 127.0.0.1:2025 0.0.0.0:* LISTEN 3191/ssh

На выходе отображаются процессы (столбец справа налево) , которые прослушивают порты TCP. Номера портов – это номера, которые следуют за двоеточиями после IP-адресов (например, 0.0.0.0:111 – это порт 111).

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

Так что в случае порта 22, это демон ssh, запущенный в моей системе, это LISTENING для соединений. Как только кто-то пытается подключиться к ssh , он выдает копию самого себя и выталкивает это соединение на другой порт, сохраняя TCP-порт 22 открытым для дополнительных подключений по мере их поступления.

Конфигурация и состояние конфигурации брандмауэра зависят от брандмауэра / ОС.

Что вы можете сделать, это попробовать его с сервера2.

Существует много различных приложений, показывающих, какое приложение "слушает" тот или иной порт в настоящее время. Вы можете воспользоваться приложениями SysInternals Process Explorer, Sysinternals TCPView, Nirsoft CurrPorts, все они весьма замечательны, но в нужный момент их может просто не оказаться под рукой. Их отсутствие можно восполнить встроенными средствами операционной системы.

В состав Windows входит консольная утилита netstat . Запустив её с параметром /? , вы увидите, что предназначена она для отображения статистики и активных соединений протокола TCP/IP, а также полный перечень её опций:

Из этого перечня нас интересуют в первую очередь эти:

  • -a – отображать все соединения и используемые порты.
  • -o – отображать числовой идентификатор процесса, отвечающего за конкретное соединение (Process ID, или попросту PID).

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

Порядок действий

Если вам претит tasklist , вы можете воспользоваться системным "Диспетчером задач ". Запустите его, нажав CTRL+SHIFT+ESC, перейдите на вкладку "Процессы". В меню "Вид" выберите пункт "Выбрать столбцы", и отметьте столбец PID:

Нужный процесс можно найти по значению этого столбца:

Я лично предпочитаю tasklist по той причине, что в диспетчере задач нет поиска.

Если порт открыт это означает, что какая либо программа (например сервис) использует его для связи с другой программой через интернет или в локальной системе. Чтобы посмотреть какие порты открыты в вашей системе Linux можно использовать команду netstat. В выводе будут показаны все сервисы и прослушиваемые ими порты и ip адреса.

sudo netstat -ntulp

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 2392/smbd
tcp 0 0 0.0.0.0:9518 0.0.0.0:* LISTEN 2894/skype
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 2896/vlc
tcp 0 0 127.0.0.1:3493 0.0.0.0:* LISTEN 2467/upsd
...

  • -l или --listening - посмотреть только прослушиваемые порты
  • -p или --program - показать имя программы и ее PID
  • -t или --tcpпоказать tcp порты
  • -u или --udp показать udp порты
  • -n или --numeric показывать ip адреса в числовом виде

Способ 2 lsof

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

dhcpcd 2136 root 6u IPv4 4986 0t0 UDP *:bootpc

hamachid 2323 root 8u IPv4 5587 0t0 TCP 192.168.1.2:35445->212.118.234.65:https (ESTABLISHED)
smbd 2392 root 27u IPv6 5624 0t0 TCP *:microsoft-ds (LISTEN)
sshd 2421 root 3u IPv4 6196 0t0 TCP *:ssh (LISTEN)
upsd 2467 nut 4u IPv4 6235 0t0 TCP comm-app.local:nut (LISTEN)

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

sudo lsof -i | grep 80

ntpd 2213 root 23u IPv6 5422 0t0 UDP :ntp
ntpd 2213 root 27u IPv6 5598 0t0 UDP :ntp
skype 2894 serigy 87u IPv4 7080 0t0 TCP *:9518 (LISTEN)
chrome 3114 sergiy 122u IPv4 31904 0t0 TCP 192.168.1.2:47804->srv118-131-240-87.vk.com:https (ESTABLISHED)

Способ 3. nmap

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

Starting Nmap 6.47 (http://nmap.org) at 2015-08-02 17:27 EEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00036s latency).
Other addresses for localhost (not scanned): 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1 127.0.0.1
rDNS record for 127.0.0.1: comm-app.local
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
139/tcp open netbios-ssn
445/tcp open microsoft-ds
3493/tcp open nut
8080/tcp open http-proxy

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

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

nmap 178.93.149.50

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

    Откройте окно командной строки (в качестве администратора). В поле "Начало\Поиск" введите "cmd", затем щелкните правой кнопкой мыши "cmd.exe" и выберите "Запуск от имени администратора"

    Введите следующий текст и нажмите Enter.

    netstat -abno

    -a Отображает все подключения и прослушивающие порты.

    -b Отображает исполняемый файл, участвующий в создании каждого соединения или порт прослушивания. В некоторых случаях известный хост исполняемых файлов несколько независимых компонентов, и в этих случаях последовательность компонентов, участвующих в создании соединения или порт прослушивания. В этом случае исполняемый файл имя находится в внизу, сверху - компонент, который он назвал, и т.д. до тех пор, пока не будет достигнут TCP/IP. Обратите внимание, что этот параметр может занять много времени и не удастся, если у вас недостаточно разрешения.

    -n Отображает адреса и номера портов в числовой форме.

    -o Отображает идентификатор процесса владения, связанный с каждым соединением.

    Найдите порт, который вы слушаете в разделе "Локальный адрес"

    Посмотрите на имя процесса непосредственно под этим.

ПРИМЕЧАНИЕ. Чтобы найти процесс в диспетчере задач

    Обратите внимание на идентификатор процесса (идентификатор процесса) рядом с порт, который вы ищете.

    Откройте диспетчер задач Windows.

    Перейдите на вкладку Процессы.

    Посмотрите на PID, который вы отметили, когда вы сделали netstat на шаге 1.

    • Если вы не видите столбец PID, нажмите "Просмотр/Выбор столбцов". Выберите PID.

      Убедитесь, что выбрано "Показывать процессы от всех пользователей".