Перейти к содержимому

Входящие соединения принимаются на порт 4899 что это значит

  • автор:

Поиск TCP/UDP Портов

TCP-порт 4899 использует протокол управления передачей данных (TCP), который является одним из основных протоколов в сетях TCP/IP. TCP является протоколом с установлением соединения и требует квитирования для установки сквозной связи. Только после установления соединения пользовательские данные могут пересылаться в обоих направлениях.
Внимание! TCP гарантирует доставку пакетов данных через порт 4899 в том же порядке, в котором они были отправлены. Гарантированная связь через TCP-порт 4899 является основным отличием TCP от UDP.

Предоставляемые через UDP-порт 4899 UDP услуги не отличаются надежностью, так как датаграммы могут быть получены в сдублированном виде, с нарушенной очередностью или даже могут пропасть без какого-либо предупреждения. UDP на порт 4899 проверка и исправление ошибок не являются обязательными или должны выполняться в прикладной программе, что позволяет избежать накладных расходов на такую обработку на уровне сетевого интерфейса.
UDP (User Datagram Protocol) является минимальным ориентированным на работу с сообщениями протоколом транспортного уровня (протокол описан в IETF RFC 768). Примеры прикладных программ, часто использующих UDP: передача голоса по IP-протоколу (VoIP), передача мультимедийных потоков и многопользовательские игры в режиме реального времени. Множество веб-приложений используют UDP, к примеру, система доменных имен (DNS), информационный протокол маршрутизации (RIP), протокол динамической конфигурации хостов (DHCP), простой протокол управления сетью (SNMP).
TCP против UDP – TCP: надежный, упорядоченный, тяжеловесный, потоковый; UDP – ненадежный, неупорядоченный, легковесный, датаграммы.

Входящие соединения принимаются на порт 4899 что это значит

Здравствуйте, уважаемые коллеги!

С вами Павел Медников, и мы продолжаем рассматривать всевозможные вопросы, связанные с администрированием компьютерных сетей. Все предыдущие статьи, а также другие мои материалы можно найти на сайте www . mednikov . ru /blog

Тема сегодняшней статьи – основные принципы настройки брандмауэров (их также называют словом firewall и термином «межсетевой экран»). Оговорюсь сразу, мы не будем рассматривать конкретные продукты конкретных производителей, а ограничимся общими принципами, зная которые можно справиться практически с любым продуктом – достаточно будет ознакомиться с его спецификой. Сегодня вас опять ждет много теории, так что запаситесь терпением!

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

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

Существуют более продвинутые решения. Например, продукты PIX и ASA компании Cisco , способны анализировать трафик по указанным администратором протоколам на предмет передачи через них нежелательных или потенциально опасных данных. Так, например, существует возможность «глушить» отдельные команды, передаваемые по протоколу SMTP с тем, чтобы предотвращать рассылку спама, вырезать определенные java -скрипты из передаваемых по сети HTML -документов, чтобы не допустить распространения сетевых вирусов через уязвимости, имеющиеся в Интернет-браузерах, и др.

Я намеренно не буду заострять внимание на таких продуктах как брандмауэр Windows , Outpost Firewall , Zone Alarm , Kaspersky Anti — Hacker и др., имеющих помимо пакетного фильтра еще и функции предотвращения тех или иных потенциально опасных действий, выполняемых программами, запущенными на компьютере. Это продукты немного иного рода, имеющие расширенную функциональность, хотя, строго говоря, я не рекомендую использовать их в корпоративных сетях, потому что они ориентированы больше на применение индивидуальным пользователем. В крупной сети эти продукты доставят скорее проблемы, чем принесут пользу.

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

При установке сессии одна сторона всегда запрашивает соединение, а вторая постоянно находится в режиме ожидания и отвечает, как только ей приходит запрос. Сторона, ожидающая подключения считается сервером – она обслуживает входящие соединения и предоставляет запрошенные ресурсы, отсюда и название. Сторона, инициирующая подключение, считается клиентом, т.к. она запрашивает соединение и ресурсы у сервера. На каком бы мощном оборудовании не была организована компьютерная система, но если она делает первый шаг при установлении соединения, то считается клиентом, даже если запрос направляется дохленькой «персоналке». «Персоналка» будет в рамках данной сессии сервером, т.к. она предоставляет запрошенные у нее ресурсы.

Для описания сессии связи в IP -сетях используют понятие IP -адреса и порта. Что такое IP -адрес – это уже понятно, а что же такое порт?

Предлагаю рассматривать порты как виртуальные «двери» в систему. Всего хосту для организации сессии связи доступно 65535 портов. Пакеты данных, перемещающиеся между хостами в рамках текущей сессии, всегда используют для входа и выхода одни и те же «двери» (т.е. порты) о номерах которых хосты «договорились» в начале сессии. Это позволяет упорядочить сетевой обмен и отличать одну сессию связи от другой.

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

Сессия может осуществляться по протоколу tcp или udp . Протокол tcp используется всему службами, требующими гарантированной доставки данных: http , https , ftp , smtp , pop 3, imap и другими службами, критичными к целостности данных. Он требует от получателя «докладывать» о том, что он получил данные в целости и сохранности. Поэтому обмен данными по tcp довольно медленный, а скорость обмена сильно зависит от качества канала связи. В противовес ему, протокол udp не требует подтверждения доставки, что делает сетевой обмен более быстрым. Udp используется там, где важна максимальная производительность и не критичны потери данных: передача голоса, звука, видео, трансляция логов и др.

Порты с номерами 0-1023 называются привилегированными и используются для размещения стандартных сетевых служб. Например, большинство web -серверов ждет подключение к службе http на порту 80, служба https работает на порту 443, smtp использует 25 порт, pop 3 – порт 110 итд. Если на сервере запущена служба, которая принимает подключения, например, на порту 80, то мы говорим, что порт 80 у сервера открыт («дверь» открыта, и у нее стоит некто, готовый обслужить вас). Если подключение на этом порту не принимается, то порт считается закрытым (за «дверью» вообще ничего нет, либо охранник смотрит в глазок и отказывается открывать вам, если вы не похожи на человека, которого ждет хозяин).

Порты с номерами 1024-65535 используются для размещения нестандартных сервисов, а также организации исходящих соединений. При установке сессии связи клиент выбирает случайным образом любой из своих свободных портов из диапазона 1024-65535, и направляет с этого порта запрос серверу. Если в процессе работы потребуется установить еще одно соединение, оно будет инициировано с другого свободного порта, вне зависимости от того, к какому порту сервера нужно подключиться. Правило простое: новая сессия – новый клиентский порт. Сервер же может одновременно принимать на один порт множество подключений, а не запутаться, какой пакет данных принадлежит какой, сессии ему помогает ip -адрес клиента и номер клиентского порта.

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

Для начала выберем стратегию фильтрации IP- пакетов. Их может быть две «разрешено все, что не запрещено» и «запрещено все, что не разрешено». Первая стратегия более либеральна к пользователям и проста в настройке, а вторая более безопасна. Лично я предпочитаю второй вариант и буду отталкиваться от него.

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

  • протокол – tcp , udp или icmp ;
  • порт отправителя пакета и/или порт получателя пакета;
  • ip -адрес отправителя и/или ip -адрес получателя пакета;
  • состояние сессии – новая или существующая

На самом деле, существуют и другие критерии, но для эффективной настройки большинства брандмауэров достаточно перечисленного.

С пакетами, проходящими через интерфейс, можно производить следующие действия:

  • Пропускать ( ALLOW / ACCEPT) – пакеты проходят беспрепятственно
  • Отбрасывать ( REJECT / DECLINE ) – пакеты не принимаются, а отправителю отправляется icmp -уведомление о том, что доставка пакета невозможна. Такое поведение дает злоумышленнику косвенный сигнал о том, что по адресу, на который он отправляет пакеты все же есть какой-то хост, следовательно его можно попробовать на прочность. Однако иногда отправителя необходимо оповещать о невозможности доставки пакетов, и эта опция может быть полезной.
  • Игнорировать ( DROP / IGNORE ) – пакеты не принимаются, и отправителю не отправляется никакого уведомления.

Также пакеты можно определенным образом метить, менять содержимое заголовков IP -пакетов и др. Например, при помощи изменения заголовков можно публиковать отдельные серверные службы, расположенные за брандмауэром, не подвергая опасности остальное (действие DNAT в IPTABLES ), или направлять пакеты на другой порт. В IPTABLES (интерфейс брандмауэра Linux -систем) существует, например, опция MIRROR , позволяющая перенаправить пришедший пакет обратно отправителю, таким образом хост «отзеркаливает» входящий трафик и злоумышленник принимается «ломать» свой собственный хост.

Начнем с входящего трафика – т.е. с IP -пакетов, которые поступают на наш хост извне. Сперва запретим все входящие пакеты. Многие софтверные решения изначально предоставляют возможность использовать только вторую, параноидальную стратегию настройки брандмауэра, поэтому запрещающее правило – единственное, что существует по умолчанию, притом его нельзя удалить.

Запрет всего входящего трафика «отрежет» наш хост от сети, поэтому для нормальной работы нужно будет немного ослабить защиту. Это можно сделать двояко. Вариант первый – пропускать все пакеты, относящиеся к установленным сессиям. Для этого нужно настроить брандмауэр на запрет хождения всех пакетов с установленным флагом SYN в заголовке и отсутствующим флагом ACK .

Флаг SYN в заголовке IP -пакета присутствует только в первом пакете, приходящем от клиента в момент установления соединения, и в первом ответном пакете от сервера (вместе с флагом ACK ). SYN сигнализирует о том, что удаленный хост предлагает открыть сессию связи. Флаг ACK присутствует в пакетах, относящихся к уже открытым сессиям, поэтому, если мы запретим хождение какие-либо пакетов, имеющих только флаг SYN , то тем самым не дадим нашему хосту отвечать на «предложения» установить соединение и будем принимать лишь данные, относящиеся к существующим сессиям.

На самом деле, разрешить хосту принимать все пакеты с флагом ACK – не совсем надежное решение, т.к. это дает возможность злоумышленнику «закидать» нас специально сформированными пакетами с флагом ACK – зафлудить сетевой интерфейс и сделать продолжение работы невозможным. Чтобы этого не произошло, разумным шагом будет разрешить прохождение пакетов с флагом ACK только в том случае, если сессия уже установлена (брандмауэр должен уметь «запоминать» такие сессии – IPTABLES и продукты PIX и ASA это умеют).

Ниже перечислены номера портов наиболее популярных служб, которыми мы можем пользоваться:

а ) Протокол tcp :
21 – ftp в passive mode
20 и 21 – ftp в active mode (необходимо разрешить входящие пакеты с SYN флагом от FTP -сервера, т.к. в рамках сессии он инициирует соединение с вашим клиентом)
22 – ssh
23 — telnet
25 — smtp
53 – dns (только для обмена dns -зонами между серверами, клиент работает с dns -сервером по udp )
80 – http
110 – pop3
143 — imap
443 – https
3389 – Windows terminal (RDP)
4899 – Remote administrator (RAdmin)
5190 – ICQ и его клоны

б) Протокол udp :
53 – dns (обычные dns -запросы от клиентов).

Итак, основные шаги настройки входящих соединений:

  • Запрещаем весь входящий трафик
  • Разрешаем входящие пакеты только с флагом ACK и, если брандмауэр позволяет сделать это, относящиеся только к установленным сессиям.

Если на защищаемых брандмауэром хостах работают какие-либо серверные службы, которые должны быть доступны извне, то нужно разрешить прием пакетов, приходящих на порты этих служб. Разрешающие правила должны стоять в списке правил ВЫШЕ запрещающих, т.к. при прохождении IP -пакета к нему применяется первое из правил, которому он удовлетворяет. Таким образом, пакеты, предназначенные для опубликованных служб пройдут, а все остальные будут отброшены.

Если ваши службы работают внутри частной сети (о публичных и частных сетях см. статью на соответствующую тему http://www.mednikov.ru/blog/post_1185397873.html), то правила, разрешающие пакеты, адресованные на порты этих служб, должны не просто пропускать трафик, а модифицировать заголовки IP -пакетов, изменяя адрес получателя с адреса брандмауэра на частный адрес, по которому находится ваша служба в частной сети. Если же брандмауэр разделяет две публичные сети и между ними есть маршрутизация, то достаточно просто разрешить прохождение пакета, не изменяя его заголовков.

После того, как правила для входящих пакетов настроены, нужно убедиться, что весь нужный нам трафик пропускается, а остальной – отсеивается, и скорректировать настройки, в случае необходимости. Для проверки служб, работающих по протоколу tcp , можно использовать сканеры портов и утилиту telnet , пытаясь подключиться с ее помощью к интересующему вас порту: telnet < ip -адрес>. Если все настроено корректно, переходим к настройке правил для исходящего трафика.

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

Первым правилом запретим хождение наружу всех пакетов, отправленных хостами локальной сети. Для этого запретим весь входящий трафик на внутреннем интерфейсе.

Далее разрешим прохождение пакетов, приходящих извне от портов служб, необходимых пользователям сети. В первую очередь разрешим хождение пакетов, отправленных за пределы сети на 53 порт по протоколу udp , чтобы обеспечить нормальную работу DNS (работоспособность службы dns можно проверить при помощи утилиты nslookup .). Затем будем открывать порты для остальных служб. Помним о том, что разрешающие правила должны стоять в списке правил выше запрещающих.

Хочу отдельно обратить внимание на то, что помимо портов в параметрах фильтров можно указывать также IP -адреса отправителей и получателей пакетов. Это дает дополнительные возможности для фильтрации трафика и повышает гибкость настройки брандмауэра. Например, мы можем запретить пользователям подключаться к какому-либо smtp -серверу, кроме явно заданного администратором, для того, чтобы компьютеры локальной сети в случае заражения спам-ботом не могли рассылать спам. Или, например, мы можем разрешить одному из компьютеров сети (например, администраторскому) работать без ограничения, в то время, как остальные останутся в указанных вами рамках.

Вот, собственно, и вся премудрость. Чтобы лучше понять материал, предлагаю решить небольшую задачку: спланировать правила для брандмауэра локальной сети.

Дано: локальная сеть 192.168.0.0 / 24. Брандмауэр имеет два интерфейса: внешний адрес 217.210.21.124, внутренний 192.168.0.1 – он же является основным шлюзом для локальной сети (выполняет функции маршрутизатора). Внешний интерфейс называется eth 0, внутренний eth 1. Внутри сети работает хост, имеющий адрес 192.168.0.2, которым необходимо управлять по протоколу ssh (порт 22), причем доступ к нему должен быть с любого IP — адреса из сети 89.169.0.0 / 16.

Требуется: разрешить пользователям работать со службами http , https и icq , отправлять электронную почту только через smtp -сервер с адресом 82.204.216.116, но разрешить получать ее по pop 3 или imap с любого сервера из Интернет. Остальной трафик запрещен. Компьютер администратора с адресом 192.168.0.254 должен иметь неограниченный доступ, компьютер с адресом 192.168.0.100 не должен иметь доступа в Интернет вообще.

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

За что отвечает порт 4899? Почему важно его закрытым держать?

4899 это порт который использует по умолчанию программа удалённого администрирования (Remote Administrator — одинаково хороший инструмент как для хакера так и для системного администратора) .

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

узнать открыт ли этот порт на компьютере или нет можно например из командной строки :
Пуск > Выполнить
написать cmd,
написать netstat -na
и посмотреть есть ли 4899 в списке
если нету — значить порт закрыт
если есть — то
статус listening — означает ожидание подключения
статус establish с IP адресом — означает что к тебе установлено подключение

Чтобы его закрыть — достаточно остановить работу сервера Radmin.
Пуск > Программы > Remote Administrator > Stop Remote Administrator server
или ctrl+shift+esc вкладка процессы, остановить процесс radmin.exe

Остальные ответы

4899 это стандартный порт удалённого администрирования. Закрытым важно держать его только параноикам.

HackWare.ru

Этичный хакинг и тестирование на проникновение, информационная безопасность

Как проверить открытые порты на своём компьютере. Что означают 0.0.0.0, :*, [::], 127.0.0.1. Как понять вывод NETSTAT

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

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

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

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

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

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

Как проверить открытые порты в Windows

В Windows есть команда netstat, которая отображает статистику протокола и текущих сетевых подключений TCP/IP.

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

Используя команду со следующими ключами, можно посмотреть информацию о всех подключениях и прослушиваемых портах в Windows:

netstat -an

Как с помощью PowerShell проверить открытые порты в Windows

Get-NetTCPConnection — это PowerShell-эквивалент NETSTAT, запуск команды без опций возвращает результат аналогичный netstat (но только по TCP портам и соединениям!).

Get-NetTcpConnection

Чтобы вывести список открытых портов, используйте опцию -State со значением Listen:

Get-NetTcpConnection -State Listen

Командлет Get-NetUDPEndpoint получает текущую статистику для конечной точки UDP. Командлет возвращает свойства конечной точки UDP, например локальные и удалённые порты UDP. Если вы не укажете никаких параметров, командлет получит статистику для всех конечных точек UDP. Get-NetUDPEndpoint запущенный без опций вернёт локальный адрес и локальный порт.

Get-NetUDPEndpoint

А следующая команда покажет открытые на всех сетевых интерфейсах UDP порты:

Get-NetUDPEndpoint | Where-Object

Связанные статьи:

  • Как в PowerShell просмотреть открытые порты. Как узнать, какая программа прослушивает порт
  • Как в PowerShell просмотреть открытые порты UDP
  • Test-NetConnection: сканирование открытых/закрытых портов из PowerShell
  • Использование PortQry для проверки открытых портов TCP/UDP (сканер портов)

Как в Windows узнать, какая программа прослушивает порт (с помощью PowerShell)

В этом примере будет получено имя процесса, связанного с каждым открытым портом:

Get-NetTcpConnection -State Listen | Select-Object LocalAddress,LocalPort,OwningProcess,@> | Sort-Object -Property LocalPort | Format-Table

Эта команда покажет все процессы связанные с любой сетевой активностью (открытые порты, а также установленные соединения и другие статусы):

Get-NetTcpConnection | Select-Object LocalAddress,LocalPort,OwningProcess,@> | Sort-Object -Property LocalPort | Format-Table

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

$port='80'; Get-NetTcpConnection -State Listen | Where-Object | Select-Object LocalAddress,LocalPort,OwningProcess,@> | Sort-Object -Property LocalPort | Format-Table

Замените «80» в первой строке на порт, который вас интересует.

Чтобы просмотреть идентификатор процесса-владельца используемого порта UDP, запустите команду:

Get-NetUDPEndpoint | Select-Object LocalAddress,LocalPort,OwningProcess | Sort-Object -Property LocalPort | Format-Table

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

Get-NetUDPEndpoint | Select-Object LocalAddress,LocalPort,OwningProcess,@> | Sort-Object -Property LocalPort | Format-Table


Как в Windows узнать, какая программа прослушивает порт (используя CMD)

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

Для поиска службы, можно добавить к команде NETSTAT опцию -b, которая означает показать исполнимый файл, прослушивающий порт:

netstat -anb

Также имеется альтернативный способ определения исполнимого файла, привязанного к порту. Для него откройте Командную строку Windows. Для этого нажмите сочетание клавиш Win+x, там выберите Windows PowerShell (Администратор). В открывшемся окне введите:

чтобы переключиться на Windows Console Host (обычную командную строку).

Там запустите команду вида:

for /f "tokens=1,2,3,4,5*" %i in ('netstat -aon ^| findstr ":80" ^| findstr /i listening') do echo %j %l & @tasklist | findstr %m

Эта команда найдёт службы, которые прослушивают 80 порт. Чтобы найти информацию о другом порте, замените в команде цифру 80 на интересующий вас порт.

Пример вывода в моём случае:

C:\Windows\system32>echo 0.0.0.0:80 LISTENING & 0.0.0.0:80 LISTENING httpd.exe 3576 Services 0 16 764 КБ C:\Windows\system32>echo [::]:80 LISTENING & [::]:80 LISTENING httpd.exe 3576 Services 0 16 764 КБ

Запись 0.0.0.0:80 означает, порт 80 для любых IPv4 адресов прослушивает служба httpd.exe (веб-сервер Apache). А запись [::]:80 — означает, что порт 80 для любых IPv6 адресов прослушивает та же самая служба httpd.exe (веб-сервер Apache). Мы ещё вернёмся к более подробному анализу данных далее в этой статье.

Менять порт в длинной команде не всегда удобно, поэтому рекомендую создать текстовый файл с именем port.bat, в этот файл скопируйте:

@ECHO OFF for /f "tokens=1,2,3,4,5*" %%i in ('netstat -aon ^| findstr ":%1" ^| findstr /i listening') do echo %%j %%l & @tasklist | findstr %%m

Сохраните и закройте этот файл.

Теперь в Windows PowerShell или в командной строке Windows с помощью команды cd перейдите в папку, куда вы сохранили файл. Например, я его сохранил в папку C:\Users\Alex\Documents\, тогда для перехода туда я выполняю:

cd C:\Users\Alex\Documents\

Теперь запустите файл командой вида:

.\port.bat ПОРТ

Где ПОРТ замените на интересующий вас порт, например, меня интересует порт 80, тогда:

.\port.bat 80

Вновь получаю аналогичный результат.

Если у вас множество портов прослушивает процесс svchost.exe, то чтобы разобраться, какие именно это службы, смотрите статью «Почему svchost.exe прослушивает много портов? Как узнать, какие именно программы открыли порты».

Как проверить открытые порты в Linux. Как узнать, какая служба прослушивает порт

Для Linux тоже есть команда netstat, но она, вроде как, теперь считается устаревшей и на её замену рекомендуется команда ss. Показываемая информация у ss и netstat очень похожи. Даже основные опции идентичны.

Итак, для вывода открытых портов TCP и UDP протоколов вместе с показом процессов, которые их прослушивают, используется команда:

sudo ss -tulpn

Чтобы вывести список установленных соединений для портов TCP и UDP, используйте команду:

sudo ss -tupn

Больше опций, а также больше способов найти, какие порты прослушиваются, смотрите в статье «4 способа узнать, какие порты прослушиваются в Linux».

Что означает вывод netstat и ss

Далее мы научимся понимать, что именно выводит netstat. Но для полного понимания нам нужно изучить немного теории — совсем кратко. Я расскажу только о том, что нам действительно понадобиться.

TCP и UDP

TCP и UDP это протоколы транспортного уровня. Самое главное что вам нужно о них знать: любой из них может использоваться для передачи информации.

Кстати, про протокол TCP вы практически наверняка слышали, по крайней мере должны были встречать запись TCP/IP — эта связка протоколов очень важна для Интернета. Протокол IP отвечает за то, куда отправлять данные, а TCP отвечает за непосредственную передачу данных и проверку их целостности.

Работу протокола TCP можно представить как создание соединения между двумя компьютерами, по этому соединению передаются данные. Внутри этого соединения данные проверяются на предмет повреждения — если какая-то часть повреждена, то она отправляется повторно.

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

LISTENING, ESTABLISHED, CLOSE_WAIT и другие состояния

Как вы можете увидеть в выводе команды netstat для протокола TCP доступны разные варианты состояний.

Самые популярные из них это LISTENING — означает, что порт прослушивает запущенное на данном компьютере приложение, что оно готово принять соединение, например, от другого компьютера или от другой службы, запущенной на этом же компьютере. Также применяются термины «открытый порт», «привязка порта».

ESTABLISHED означает уже установленное соединение. Пример такого соединения: веб-браузер инициализировал загрузку страницы сайта и пока данные передаются по этому соединению, у этого соединения статус ESTABLISHED.

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

UDP и LISTENING

Про UDP уже сказано чуть выше, что этот протокол не создаёт соединений в том смысле, как это делает TCP. Поэтому для этого протокола нет никаких состояний соединения — это просто неприменимо к нему. По этой причине в графе Состояние для него никогда не пишется LISTENING. Но значит ли это, что UDP порт не может быть прослушиваемым? Нет! Порт UDP также может быть прослушиваемым и доступным для соединений. В том числе этот порт может использоваться вирусами и злоумышленниками, поэтому эти порты также подлежат исследованию.

Пример анализа открытых портов

Я начну с анализа открытых портов на Linux. Просто потому, что мне так проще, а затем мы постепенно перейдём изучить открытые порты на Windows.

Пример информации об открытых портах, полученных командой:

sudo ss -tulpn

Пример прослушиваемых портов на Linux:

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 10.0.2.15%enp0s3:68 0.0.0.0:* users:(("NetworkManager",pid=318,fd=17)) udp UNCONN 0 0 127.0.0.1:5300 0.0.0.0:* users:(("tor",pid=359,fd=7)) tcp LISTEN 0 128 127.0.0.1:9040 0.0.0.0:* users:(("tor",pid=359,fd=8)) tcp LISTEN 0 128 127.0.0.1:8118 0.0.0.0:* users:(("privoxy",pid=362,fd=3)) tcp LISTEN 0 128 127.0.0.1:9050 0.0.0.0:* users:(("tor",pid=359,fd=6)) tcp LISTEN 0 128 127.0.0.1:9475 0.0.0.0:* users:(("httpd",pid=553,fd=5),("httpd",pid=552,fd=5),("httpd",pid=551,fd=5),("httpd",pid=550,fd=5),("httpd",pid=549,fd=5),("httpd",pid=360,fd=5)) tcp LISTEN 0 128 *:80 *:* users:(("httpd",pid=553,fd=4),("httpd",pid=552,fd=4),("httpd",pid=551,fd=4),("httpd",pid=550,fd=4),("httpd",pid=549,fd=4),("httpd",pid=360,fd=4)) tcp LISTEN 0 128 *:22 *:* users:(("systemd",pid=1,fd=55)) tcp LISTEN 0 128 *:443 *:* users:(("httpd",pid=553,fd=7),("httpd",pid=552,fd=7),("httpd",pid=551,fd=7),("httpd",pid=550,fd=7),("httpd",pid=549,fd=7),("httpd",pid=360,fd=7)) tcp LISTEN 0 80 *:3306 *:* users:(("mysqld",pid=427,fd=21))

В выводимых данных имеются следующие поля:

  • Netid — протокол udp или tcp
  • State — состояние, для протоколов TCP здесь будет LISTEN (поскольку мы явно указали в опциях показать только прослушиваемые порты), а для протоколов UDP здесь будет UNCONN, то есть состояние неизвестно, но, на самом деле, это тоже прослушиваемые порты, которые позволяют подключаться из вне
  • Recv-Q — получено
  • Send-Q — отправлено
  • Local Address:Port — локальный адрес и порт, к которому привязана служба, то есть IP адрес и порт, которые прослушиваются
  • Peer Address:Port — удалённый адрес и порт, к которым выполнено соединение.

Рассмотрим, что означает запись 127.0.0.1:9050: она говорит о том, что прослушивается порт 9050. Причём он прослушивается только для IP адреса 127.0.0.1. Адрес 127.0.0.1 относится к так называемым Loopback, то есть это замыкающийся на себя, закольцованный адрес. Сетевой интерфейс с этим адресом называется петлевым. Пакеты, которые отправляются с компьютера на этот адрес, приходят на этот же самый компьютер (точнее говоря, они никуда даже не уходят). Доступ к этому адресу может иметь только служба, работающая на этом же самом компьютере. Отсюда важное следствие: хотя порт 9050 прослушивается, никто другой не может к нему подключиться из любой сети. Это же относится и к адресам из диапазона ::1/128 — это такие же адреса, но уже для IPv6, в IPv6 аналог для 127.0.0.1 это ::1 (тоже часто можно видеть в выводимой информации).

Смотрите также:

  • Введение в IPv6 адреса: как пользоваться и как исследовать сеть (часть 1)
  • Введение в IPv6 адреса: как пользоваться и как исследовать сеть (часть 2)

Если прослушиваются какие-либо адреса из локальных

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 127.0.0.0/8

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

Для вывода прослушиваемых портов и уже установленных сетевых подключений используйте следующую команду:

sudo ss -tupn

Звёздочка (*) вместо адреса или порта

Мы можем увидеть записи вроде *:80 или даже *:*

Здесь звёздочка означает любой адрес или любой порт. Например, *:80 в колонке Local Address:Port (Локальный адрес:Порт) означает, что прослушивается 80 порт сразу на всех сетевых интерфейсах, доступных в данной системе. То есть служба ответит на запрос к 80 порту откуда бы он не пришёл: из локальной сети, из глобальной сети (если есть прямое соединение и интерфейс с белым IP) или с закольцованного адреса — это неважно, служба всё равно примет это соединение.

Кстати, служба может прослушивать порт в соответствии со следующими правилами:

  • может прослушиваться конкретный порт для одного IP адреса
  • может прослушиваться конкретный порт для любого IP адреса

То есть порт должен в любом случае быть указан, поэтому для Local Address:Port (Локальный адрес:Порт) допустима запись *:80, но запись вида *:* никогда не встретится в этом столбце.

Для Peer Address:Port (Удалённый адрес:Порт) запись *:* означает, что принимаются соединения от любого IP, отправленные с любого порта.

Кстати, просто для справки: если ваш компьютер подключается к веб сайту, то веб сайты обычно работают на 80 и 443 портах. Следовательно, веб браузер подключается именно к 80 порту (или 443, если это безопасное HTTPS соединение). Но на вашем компьютере открывается новое соединение на каком угодно, но только не на 80 и 443 портах — обычно используются порты с номерами >30000, например, на вашем компьютере может быть открыто исходящее соединение с портом 42063 и оно будет адресовано к 80 порту какого-либо веб сервера.

Прослушиваемые порты IPv4 и IPv6 адресов в Linux

В Linux у программ netstat и ss имеется особенность вывода информации о прослушиваемых портах, когда прослушиваются одновременно IPv4 и IPv6 адреса — выводится информация только об IPv6 адресе! Возможно это связано с какими-то глубинными особенностями реализации ядра Linux, но в Windows, например, есть чёткое разделение и если служба одновременно прослушивает порт на IPv4 и IPv6 адресах, то информация об этой службе выводится два раза — пример этого почти в самом начале статьи, где мы ищем, какая служба прослушивает 80-й порт и в найденной информации нам дважды показана служба httpd.

Что означает 0.0.0.0 в netstat. Различные виды нотаций в netstat и ss

0.0.0.0 — это самый первый IP адрес. Но он относится к IP специального назначения (как например 127.0.0.1) и выполняет разные функции.

Обозначение 0.0.0.0 может иметь разное значение в зависимости от того, где используется. Когда говорят о прослушиваемых портах, это обозначение в Linux символизирует заполнитель, то есть означает «любой IP адрес».

Чем это отличается от * (звёздочки) или от записи . , которые также встречаются в выводе рассматриваемых программ? В программе ss IPv6 адрес 0:0:0:0:0:0:0:0 (который является аналогом IPv4 адреса 0.0.0.0) обозначается звёздочкой (*). Следовательно, в ss запись 0.0.0.0:* обозначает «любой IPv4 адрес с любого порта». А обозначение *:* символизирует «любой IPv6 адрес с любого порта».

В программе netstat также используется запись 0.0.0.0:* которая также обозначает «любой IPv4 адрес с любого порта».

Но в netstat для обозначения «любой IPv6 адрес с любого порта» используется . *

Помните об этих различиях, чтобы не запутаться. А также помните о том, что если показано, что прослушивается протокол tcp6 (IPv6), то одновременно может прослушиваться порт и на tcp (IPv4) — при этом данные в выводимой информации отсутствуют!

В Windows в качестве Local Address (Локального адреса), когда прослушивается любой IP адрес на определённом порту, используется запись вида 0.0.0.0:80 (в этом примере прослушивается любой IP адрес, доступный в системе, на 80 порту). Для IPv6 адресов в этом случае используется запись вида [::]:80.

В качестве внешнего адреса, когда доступно подключения с любого IP и с любого порта, для TCP протокола пишется 0.0.0.0:0, а для UDP протокола в этих же условиях пишется *:*. Что тоже не особо логично и сбивает с толку. Точнее говоря такое различие в обозначениях вытекает из разницы протоколов TCP и UDP.

Если информация относится к IPv6, то для TCP когда имеется ввиду любой адрес на любом порту, используется запись вида [::]:0. А для UDP используются одинаковые нотации как для IP, так и для IPv6, то есть *:*

Нужно помнить, что некоторые из этих обозначений пересекаются с нотациями из Linux, где они имеют своё собственное значение.

Чтобы чуть облегчить жизнь, я составил такую табличку, которую можно использовать в качестве шпаргалки:

Определённый локальный IPv4 адрес на определённом порту

Любой локальный IPv4 адрес на определённом порту

Определённый локальный IPv6 адрес на определённом порту

Любой локальный IPv6 адрес на определённом порту

Любой внешний IPv4 адрес на любом порту

Любой внешний IPv6 адрес на любом порту

Netstat (Windows)

Добавить комментарий

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