Список сокетов, которые находятся в состояние прослушивания
Список только прослушивающих портов с помощью netstat -l
1 |
# netstat -l Active Internet connections (only servers) Proto Recv–Q Send–Q Local Address Foreign Address State tcp 0.0.0.0http0.0.0.0*LISTEN tcp localhostwebcache0.0.0.0*LISTEN tcp andreyex.rudomain0.0.0.0*LISTEN tcp localhostdomain0.0.0.0*LISTEN |
Список только прослушивающихся TCP портов с помощью netstat -lt
1 |
# netstat -lt Active Internet connections (only servers) Proto Recv–Q Send–Q Local Address Foreign Address State tcp 0.0.0.0http0.0.0.0*LISTEN tcp localhostwebcache0.0.0.0*LISTEN tcp andreyex.rudomain0.0.0.0*LISTEN tcp localhostdomain0.0.0.0*LISTEN |
Список только прослушивающихся UDP портов с помощью netstat -lu
1 |
# netstat -lu Active Internet connections (only servers) Proto Recv–Q Send–Q Local Address Foreign Address State udp andreyex.rudomain0.0.0.0* udp localhostdomain0.0.0.0* udp andreyex.runtp0.0.0.0* |
Список только прослушивающихся портов UNIX с помощью netstat -lx
1 |
# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags Type StateI–Node Path unix2 ACC STREAM LISTENING19693tmpcore.adm.internal unix2 ACC SEQPACKET LISTENING8723runudevcontrol unix2 ACC STREAM LISTENING12566varrundbussystem_bus_socket unix2 ACC STREAM LISTENING16948varrunfail2banfail2ban.sock unix2 ACC STREAM LISTENING19702tmpcore.sock |
Список всех портов (как прослушиваемые, так и не прослушиваемые порты)
Список всех портов с помощью команды Netstat -a
1 |
# netstat -a | more Active Internet connections (servers and established) Proto Recv–Q Send–Q Local Address Foreign Address State tcp localhost30037**LISTEN udp *bootpc** Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type StateI–Node Path unix2 ACC STREAM LISTENING6135tmp.X11–unixX0 unix2 ACC STREAM LISTENING5140varrunacpid.socket |
Список всех портов TCP с помощью netstat -at
1 |
# netstat -at Active Internet connections (servers and established) Proto Recv–Q Send–Q Local Address Foreign Address State tcp 0.0.0.0http0.0.0.0*LISTEN tcp localhostwebcache0.0.0.0*LISTEN tcp andreyex.rudomain0.0.0.0*LISTEN tcp localhostdomain0.0.0.0*LISTEN |
Перечисление всех UDP-портов с помощью netstat -au
1 |
# netstat -au Active Internet connections (servers and established) Proto Recv–Q Send–Q Local Address Foreign Address State udp andreyex.ru49419–public–dndomain ESTABLISHED udp andreyex.ru39293–public–dndomain ESTABLISHED udp andreyex.ru50053–public–dndomain ESTABLISHED |
netstat — проверка открытых портов в Linux
Проверка открытых портов на Ubuntu может понадобиться, чтобы убедиться, что в системе не запущены лишние службы. Если вы помните, порт это число, которое приложение будет использовать для связи с другой программой, предоставлять сервис и т.д. Чтобы получить представление о том, какие службы работают в системе, необходимо проверить открытые порты системы.
Часто мы устанавливаем программу, которая является сервисом, а потом забываем о ней, поэтому наша машина может прослушивать порты в ожидании соединения.
Злоумышленники любят, когда порты открыты, так как приложения, прослушивающие эти порты, являются простыми целями.
Чтобы обеспечить нашей системе Ubuntu Linux (или любой другой системе в этом отношении) максимальную безопасность, мы должны знать о том, какие порты открыты и для каких служб.
Чтобы проверить, какие порты открыты на нашей рабочей станции Ubuntu, можно выполнить команду, показанную ниже
Обратите внимание, что она должна работать и для других разновидностей Linux, если установлена утилита netstat
Используя команду netstat
netstat -anltp | grep “LISTEN”
Обычный веб-сервер, на котором запущены FTP, SSH и MySQL, выведет следующую информацию:
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 21432/mysqld
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 4090/apache2
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7213/sshd
tcp6 0 0 :::21 :::* LISTEN 19023/proftpd
tcp6 0 0 :::22 :::* LISTEN 7234/sshd
Вышеуказанная команда запускает утилиту netstat с соответствующими флагами и передает вывод функции grep, которая извлекает строки, содержащие слово «LISTEN». В результате мы получаем список открытых портов и имена процессов, прослушивающих эти порты.
Читать также NVIDIA вылечила опасные уязвимости в Display Driver
Все команды netstat, ss, netcat относится к сетевым утилитам и доступны по-умолчанию в большинстве linux-дистрибутивах.
Команда netstat умеет показывать сетевые соединения (входящие/исходящие), таблицу маршрутизации, статистику по сетевым интерфейсам и т.д.
Используя команду ss
Утилита ss позволяет просматривать информацию об используемых сокетах в системе. Эта команда обладает схожим функционалом к netstat, но есть и уникальные возможности. Например можно фильтровать вывод по установленным соединениям с определенным портом.
Список процессов, использующие соединения в данный момент
ss -p
Список сокетов в режиме прослушивания
ss -l
Пример фильтра — список всех соединений к порту 80
ss -o state established ‘( dport = :www or sport = :www )’
Используя команду lsof
Утилита lsof умеет отображать процессы, которые работают с определенным файлом или сокетом.
Список всех сетевых соединений
lsof -i
Список процессов, работающих с портом 80
lsof -i :80
Используя команду netcat
Утилита netcat позволяет передавать/принимать данные через TCP/UDP соединения.
Шаблон вызова утилиты
nc host port
Откроем прием (ключ -l) данных на порте 1234 с подробным выводом информации (ключ -v) и продолжением работы после разрыва соединения (ключ -k), по-умолчанию nc разрывает соединение после первого дисконекта.
nc -l 1234
Подключаемся к открытому порту и отправим import antigravity
Выдаваемая информация
Активные сокеты
Для каждого активного сокета показывается протокол, размер очередей приема и получения (в байтах), локальный и удаленный адрес, а также внутреннее состояние протокола. Символьный формат, обычно используемый для показа адресов сокетов, — это либо:
имя_хоста.порт
если имя хоста указано, либо:
сеть.порт
если адрес сокета задает сеть, но не конкретный хост. Имена хостов и сетей берутся из соответствующих записей в файле /etc/hosts или /etc/networks.
Если имя сети или хоста для адреса неизвестно (или если указана опция -n), адрес показывается числами. Не указанные или «обобщенные» адреса и порты показываются как «*». Подробнее о соглашениях по именованию в Internet см. страницу справочного руководства inet.
Сокеты TCP
Для сокетов TCP допустимы следующие значения состояния:
CLOSED | Закрыт. Сокет не используется. |
LISTEN | Ожидает входящих соединений. |
SYN_SENT | Активно пытается установить соединение. |
SYN_RECEIVED | Идет начальная синхронизация соединения. |
ESTABLISHED | Соединение установлено. |
CLOSE_WAIT | Удаленная сторона отключилась; ожидание закрытия сокета. |
FIN_WAIT_1 | Сокет закрыт; отключение соединения. |
CLOSING | Сокет закрыт, затем удаленная сторона отключилась; ожидание подтверждения. |
LAST_ACK | Удаленная сторона отключилась, затем сокет закрыт; ожидание подтверждения. |
FIN_WAIT_2 | Сокет закрыт; ожидание отключения удаленной стороны. |
TIME_WAIT | Сокет закрыт, но ожидает пакеты, ещё находящиеся в сети для обработки |
Сетевые структуры данных
Показываемые данные зависят от выбора опции, -i или -r. Если указаны обе опции, netstat выберет -i.
Показ таблицы маршрутизации
Таблица маршрутизации показывает все имеющиеся маршруты (routes) и статус каждого из них. Каждый маршрут состоит из целевого хоста или сети и шлюза (gateway), который используется для пересылки пакетов. Столбец flags (флаги) показывает статус маршрута (U, если он включен), ведет ли маршрут на шлюз (G), был ли маршрут создан динамически при помощи перенаправления (D) и используется ли адрес индивидуального хоста (H) вместо адреса сети. Например, интерфейс закольцовывания (loopback transport provider), lo0, всегда имеет флаг H.
Прямые маршруты создаются для каждого интерфейса, подключенного к локальному хосту; поле gateway (шлюз) для таких записей показывает адрес выходного интерфейса.
Столбец refcnt показывает текущее количество активных использований для маршрута. Протоколы, ориентированные на соединение, обычно используют в ходе соединения один маршрут, тогда как протоколы без соединения получают маршрут для каждой посылки одному и тому же адресату.
Столбец use показывает количество пакетов, посланных по маршруту.
Столбец interface показывает сетевой интерфейс, используемый маршрутом.
Суммарная статистика передачи данных
Когда задан аргумент интервал, netstat показывает таблицу суммарной статистической информации о переданных пакетах, ошибках и коллизиях. Первая показываемая строка данных, а также каждая последующая 24-я строка содержит суммарную статистическую информацию с момента последней перезагрузки системы. Каждая последующая строка показывает данные, накопленные за очередной указанный в командной строке интервал с момента последнего показа.
Что такое порт
Порт (port) — это число в десятичной системе счисления от 0 до 65 535, которое записывается в заголовках протоколов транспортного уровня модели OSI, это те же, TCP, UDP и т.д. Применяется для идентификации программы или процесса для обмена пакетами данных в рамках одного IP-адреса. Т.е. по сути — айпи это уникальный адрес узла (устройства), а порт — это идентификатор его приложений или процессов, выходящих в сеть.
Теперь более понятным языком. Как вам известно еще из статьи про TCP/IP протокол — каждое устройство, которое подключается к сети имеет свой собственный и уникальный идентификатор — айпи адрес. Все программы и процессы, которые работают на этом устройстве используют этот уникальный IP. И как они будут идентифицировать друг друга при выходе в сеть? Таким образом, каждая программа или процесс использует свой порт, так они различают друг друга в сети.
Существует ряд стандартных портов, которые используются по умолчанию. Их зарегистрировала организация IANA (Internet Assigned Numbers Authority). Именно IANA ответственна за ресурсы интернет-протоколов. Всего было зарезервировано 1 024 значения, от 0 до 1 023. Это значительно упростило маршрутизацию в интернете, т.к. они используются приложениями по умолчанию. Вот их небольшой список:
Именно на них устанавливаются соединения по умолчанию, например, сейчас с браузера вы просматриваете этот сайт по порту 443, т.к. сайт работает по https, если бы он был просто на http, то он был бы 80 или 8080.
Как это работает
Когда вы устанавливаете соединение с каким-либо сервером, программой или другим компьютером — генерируется случайный PORT для соединения и вашей идентификации. В дальнейшем обмен пакетами данных будет происходить именно по нему.
Для примера возьмем интернет-сервер со своим уникальным IP-адресом. На нем есть: веб-сервер, почтовый сервер, FTP-сервер. Если нам потребуется соединится с этим сервером, чтобы отправить почту просто по ИП адресу, то, как он поймет, что мы хотим почту? А вот PORT нам в этом, как раз и поможет.
Так, чтобы соединиться с каким-либо сервером, нам надо знать не только его айпи, но и номер порта. И в то же время, чтобы кто-либо извне смог подключиться к нам, к приложению на нашем ПК для получения данных, он должен знать такие же данные. Благо все это происходит автоматически и нам это делать вручную не надо.
Вопрос безопасности
Так, как во многих программах бывают дыры, а используют они для связи, как раз порты, рекомендую использовать, какой-либо Firewall, во избежание потенциального взлома, например, Comodo Firewall. Необходимо в принципе контролировать их доступность и естественно работающие программы.
В заключение
Вот вы и узнали, что это такое, зачем он нужен и как используется. Как видите, все довольно легко и понятно. Хорошего вам серфинга в сети, в скором времени выйдет еще много материала на тему работы сетей.
Синтаксис, Опции
netstat netstat netstat интервал
- Первая форма команды показывает список активных сокетов (sockets) для каждого протокола.
- Вторая форма выбирает одну из нескольких других сетевых структур данных.
- Третья форма показывает динамическую статистику пересылки пакетов по сконфигурированным сетевым интерфейсам; аргумент интервал задает, сколько секунд собирается информация между последовательными показами.
Значение по умолчанию для аргумента система — /unix; для аргумента core в качестве значения по умолчанию используется /dev/kmem.
-r, --route отобразить таблицу маршрутизации -i, --interfaces отобразить таблицу интерфейсов. Показать состояние всех настроенных сетевых интерфейсов -g, --groups отобразить членства в мультикаст группах -s, --statistics отобразить сетевую статистику (как SNMP) -M, --masquerade отобразить замаскированные соединения -v, --verbose более детальный вывод -W, --wide don't truncate IP addresses -n, --numeric не преобразовывать адреса в имена --numeric-hosts не преобразовывать адреса в имена компьютеров --numeric-ports не преобразовывать номера портов в имена --numeric-users не преобразовывать в имена пользователей -N, --symbolic преобразовать имена устройств -e, --extend отображать другую/больше информации -p, --programs отображать номер процесса программы/имя программы для сокетов -c, --continuous непрерывный вывод -l, --listening отображать прослушиваемые сокеты сервера -a, --all, --listening отобразить все сокеты (по умолчанию - в статусе connected) -o, -timers отобразить таймеры -F, -fib отобразить информацию форвардинга базы (по умолчанию) -C, --cache отобразить кэш маршрутизации вместо FIB <Socket>={-t|--tcp} {-u|--udp} {-w|--raw} {-x|--unix} --ax25 --ipx --netrom <AF>=Use '-6|-4' or '-A <af>' or '--<af>'; по умолчанию: inet Список возможный адресных семейств (которые поддерживают маршрутизацию): inet (DARPA Internet) inet6 (IPv6) ax25 (AMPR AX.25) netrom (AMPR NET/ROM) ipx (Novell IPX) ddp (Appletalk DDP) x25 (CCITT X.25)
netstat и сеть
Команда netstat показывает следующую информацию о передаче данных через сетевые интерфейсы:
- Адреса всех управляющий блоков протокола, связанных с сокетами, и состояние всех сокетов
- Число пакетов, полученных переданных и отброшенных подсистемой сетевого ввода-вывода
- Полная статистика для каждого интерфейса
- Маршруты и их состояние
-
Показать состояние всех настроенных сетевых интерфейсов:
# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 2673904188 0 0 0 13028338940 0 0 0 BMRU eth1 1500 0 542594 0 0 0 6 0 0 0 BMRU lo 16436 0 1141757133 0 0 0 1141757133 0 0 0 LRU
где,
- Iface. Имя интрефейса.
- MTU. Максимальный блок передачи (MTU). Максимальный размер, в байтах, передаваемого через интерфейс пакета.
Показать статистику UDP или Порты TCP:# netstat -su
IcmpMsg:
InType3: 9040
InType5: 27
InType8: 1
InType11: 407
OutType0: 1
OutType3: 1244
Udp:
пакетов принято: 75849
принято пакетов на неизвестный порт: 1183
ошибок приема пакетов: 0
пакетов послано: 144780
UdpLite:
IpExt:
InMcastPkts: 1390
OutMcastPkts: 185
InBcastPkts: 17666
OutBcastPkts: 1473
InOctets: 92565327
OutOctets: 855223704
InMcastOctets: 129017
OutMcastOctets: 23069
InBcastOctets: 1609681
OutBcastOctets: 202516
# netstat -st
Контроль сетевых соединений
Используя опцию -i можно получить данные о состоянии сетевых интерфейсов системы, а также основных счётчиков трафика. Вывод предоставляется в виде наглядной таблицы с соответствующими столбцами. Формат самой таблицы зависит от используемой системы. К примеру, в Ubuntu, да и вообще в Debian-ориентированных системах он будет примерно таким:
$ netstat -i
Таблица интерфейсов ядра Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP eno1 1500 1876 127 0 0 9253 223 0 lo 6553 6529 0 0 0 6529 0 0
В данном выводе видно, как ведёт себя интерфейс eno1, через который осуществляется соединение в сеть, а также что происходит с интерфейсом обратной связи lo. В столбцах RX/TX приводится статистика по трафику с указанием количества пакетов, в том числе и пакетов с ошибками. В частности, показатель RX свидетельствует о количестве пакетов, полученных интерфейсом, TX – о количестве пропущенных через этот интерфейс пакетов с момента загрузки системы или первичной активации (задействования) интерфейса.
Количество ошибок (RX-ERR, TX-ERR) как правило, не должно быть больше 1% (в некоторых случаях 5%) от общего числа пакетов. Если ошибок больше, то следует проанализировать этот параметр на других компьютерах. Большое количество ошибок в сети (на других компьютерах) свидетельствует о неполадках в окружении сети. На отдельном компьютере излишнее их (ошибок) количество говорит о неполадках с сетевым интерфейсом (сетевая карта) или с самим соединением (кабели, совместимость оборудования).
Параметры
Параметры, используемые с этой командой, должны начинаться с дефиса (-), а не с косой черты ( ). Некоторые параметры поддерживаются не на всех платформах.
Имя | Описание | Окна | ReactOS | macOS | BSD | NetBSD | FreeBSD | Linux | Солярис | OS / 2 |
---|---|---|---|---|---|---|---|---|---|---|
-а | Отображение а Л.Л. активные соединения и TCP и UDP порты , на которых прослушивает компьютер. | да | да | да | ||||||
-b | Отображение б Инары (исполняемый файл) название программы заключается в создании каждого соединения или слушать порт. ( Windows XP , Windows Server 2003 и более новые операционные системы Windows; не Microsoft Windows 2000 или более ранние версии ). |
да | Нет | Нет | ||||||
-b | Причины -i , чтобы сообщить общее число б ytes трафика. | Нет | да | да | Нет | |||||
-e | Отображение электронной thernet статистики, такие как количество байтов и пакетов , отправленных и полученных. Этот параметр можно комбинировать с -s . | да | да | Нет | ||||||
-f | Отображение F ully доменными именами < FQDN > для иностранных адресов (доступен только на Windows Vista и более новых операционных систем). | да | Нет | Нет | ||||||
-f Адрес Семья | Ограничивает отображение определенным семейством адресов сокетов, unix , inet , inet6 | Нет | да | Нет | ||||||
-грамм | Отображает многоадресного г информацию о членстве Roup для IPv4 , так и IPv6 (могут быть доступны только на новых операционных системах) | Нет | Нет | да | ||||||
-я | Отображение сети I nterfaces и их статистика | Нет | Нет | да | ||||||
-м | Отображает м Статистика Эмори для сетевого кода (ПОТОКОВ статистику по Solaris). | Нет | Нет | |||||||
-n | Отображает активные TCP-соединения, однако адреса и номера портов выражаются численно, и не предпринимается никаких попыток определить имена. | да | да | да | ||||||
-о | Отображает активные TCP-соединения и включает идентификатор процесса (PID) для каждого соединения. Вы можете найти приложение на основе PID на вкладке « Процессы » в диспетчере задач Windows . Этот параметр можно комбинировать с -a, -n и -p . Этот параметр доступен в Microsoft Windows XP , Windows Server 2003 и Windows 2000, если установлено исправление. | да | Нет | Нет | ||||||
-p протокол | Показывает соединения для р rotocol определяется протоколом . В этом случае протоколом может быть tcp, udp, tcpv6 или udpv6 . Если этот параметр используется с -s для отображения статистики по протоколу, протокол может быть tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6 или ipv6 . | да | да | да | ||||||
-п | Показать , какой р rocesses используют какие разъемы (аналогичные -b под Windows) (вы должны быть суперпользователем , чтобы сделать это) | Нет | Нет | да | ||||||
-P протокол | Показывает соединения для р rotocol определяется протоколом . В этом случае протоколом может быть ip, ipv6, icmp, icmpv6, igmp, udp, tcp или rawip . | Нет | Нет | да | ||||||
-р | Показывает содержимое в IP г таблицы прогулке . (Это эквивалентно команде печати маршрута в Windows.) | да | да | да | да | |||||
-s | Отображает S tatistics по протоколу. По умолчанию статистика отображается для протоколов TCP , UDP , ICMP и IP . Если установлен протокол IPv6 для Windows XP, статистика отображается для протоколов TCP через IPv6 , UDP через IPv6, ICMPv6 и IPv6. Параметр -p можно использовать для указания набора протоколов. | да | да | да | ||||||
-t | Отображать только TCP-соединения. | Нет | да | да | ||||||
-u | Отображать только UDP-соединения. | Нет | Нет | да | да | |||||
-W | Отображать широкий вывод — не обрезает имена хостов или IPv6-адреса | Нет | Нет | да | Нет | |||||
-Икс | Отображает подключения NetworkDirect, прослушиватели и общие конечные точки. | да | ||||||||
-у | Отображает шаблон подключения TCP для всех подключений. Не может быть объединен с другими параметрами. | да | ||||||||
-v | При использовании вместе с -b он отображает последовательность компонентов, участвующих в создании соединения или порта прослушивания для всех исполняемых файлов. | да | Нет | Нет | ||||||
Интервал | Повторно отображает выбранную информацию каждые интервалы секунд. Нажмите CTRL + C, чтобы остановить повторное отображение. Если этот параметр опущен, netstat печатает выбранную информацию только один раз. | да | да | Нет | ||||||
-час | Отображает справку в командной строке. | да | Нет | да | да | да | да | да | да | Нет |
-? | Отображает справку в командной строке. | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет | да |
/? | Отображает справку в командной строке. | да | да | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
Сетевые интерфейсы
Показать список сетевых интерфейсов: netstat -i
# netstat -i Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth0 1500 0 1911037 0 0 0 1382056 0 0 0 BMRU lo 16436 0 0 0 0 0 0 0 0 0 LRU
Показать расширенную информацию об интерфейсах (аналогично ifconfig): netstat -ie
# netstat -ie Kernel Interface table eth0 Link encap:Ethernet HWaddr 00:0c:29:68:4c:a4 inet addr:192.168.128.134 Bcast:192.168.128.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe68:4ca4/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24278 errors:0 dropped:0 overruns:0 frame:0 TX packets:11275 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:33203025 (33.2 MB) TX bytes:665822 (665.8 KB) Interrupt:19 Base address:0x2000
Как в Windows узнать, какая программа прослушивает порт (используя CMD)
Открытых для прослушивания портов может оказаться достаточно много и обычно они используются легитимными программами
Поэтому при анализе полученных данных также важно знать, какая именно служба прослушивает определённый порт.. Для поиска службы, можно добавить к команде NETSTAT опцию -b, которая означает показать исполнимый файл, прослушивающий порт:
Для поиска службы, можно добавить к команде NETSTAT опцию -b, которая означает показать исполнимый файл, прослушивающий порт:
netstat -anb
Также имеется альтернативный способ определения исполнимого файла, привязанного к порту. Для него откройте Командную строку Windows. Для этого нажмите сочетание клавиш Win+x, там выберите Windows PowerShell (Администратор). В открывшемся окне введите:
cmd
чтобы переключиться на 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 прослушивает много портов? Как узнать, какие именно программы открыли порты».
Идентификация сетевых процессов
Для того, чтобы однозначно иметь представление о конкретных процессах или демонах, слушающих соединения (порты) в системе, следует воспользоваться ключами -l и -p. Первый позволяет выводить, собственно, только слушающие порты, второй — для идентификации процесса/демона, например:
$ sudo netstat -lp
Активные соединения с интернетом (only servers) Proto Recv-Q Send-Q Local Address ForeignAddress State PID/Program name tcp 0 0 localhost:mysql 0.0.0.0:* LISTEN 1154/mysqld tcp6 0 0 :http :* LISTEN 1201/apache2
Как можно видеть, в данном выводе веб-сервер (один из его процессов) прослушивает по протоколу tcp6 все HTTP-соединения. Демон MySQL прослушивает локальный порт mysql по протоколу tcp. Для того, чтобы иметь возможность видеть номера самих портов, а также IP-адреса хостов, следует к команде netstat -lp добавить ключ n. Стоит также отметить, что для получения полной информации о слушающих процессах нужно запускать команду netstat от имени суперпользователя. Если не используется опция -n и не работает служба DNS, то netstat будет выполняться очень медленно.
Как проверить, открыт ли порт для подключения
Порты присутствуют у всех сетевых устройств, включая маршрутизаторы и роутеры, поэтому при анализе среды важно понимать, какой именно узел проверяется. На этом отчасти основаны системы безопасности, когда ради блокировки вероятных хакерских атак закрываются все свободные сокеты и открываются только те, которые используются корпоративным софтом
Существует три основных способа проверки открытых портов:
- Специализированные онлайн-сервисы.
- Прикладные приложения, запускаемые на компьютере.
- Встроенные в операционную систему утилиты.
Выбор решения зависит от задач. Так, если требуется открыть доступ к своему компьютеру извне, можно воспользоваться сервисами 2ip.ru или portscan.ru. При локальных работах удобнее приложения типа Portforward Network Utilities или штатная утилита TELNET. Она поставляется в «стандартной» сборке Windows и доступна для запуска в консоли CMD.
Перечень открытых портов на локальном компьютере
Открытый порт на домашнем или рабочем компьютере – это фактически «дыра» в безопасности и риски утраты контроля над ситуацией. Именно через них проникают трояны и иные вирусы, которые имеют цель предоставить злоумышленнику возможность удаленного подключения к ПК без разрешения владельца.
Проверить занятые порты легко:
- Нужно нажать комбинацию клавиш <Win+R>.
- Ввести команду CMD и нажать кнопку Enter.
- Ввести команду netstat –a и повторно нажать Enter.
В консоли отобразится перечень занятых портов с указанием, какое приложение или служба ими «распоряжается». Такой вариант проверки интересен тем, что он дает объективную картину. Если рассчитывать только на онлайн-сервисы, иногда создается впечатление, что открытых портов нет. Эффект создается из-за блокировки внешних запросов брандмауэром Windows или другим ПО.
Если хочется изучить список на предмет «посторонних» программ, его лучше выгрузить в файл при помощи команды netstat –a >имя.txt. По умолчанию список сохраняется в каталоге пользователя, в аккаунте которого происходил запуск утилиты (типа C:\\Пользователи\User\). При желании перед запуском утилиты можно перейти в корень диска командой cd c:\.
Просмотр открытых портов на удаленном компьютере
При взаимодействии с удаленным сервером используется другая утилита – TELNET. В Windows она по умолчанию отключена, потому что не относится к пользовательским приложениям. Перед первым запуском придется провести «активацию». Существует два способа включения – в консоли или через графический интерфейс.
Активация заключается во вводе специальной команды:
dism /online /Enable-Feature /FeatureName:TelnetClient
Она сработает только при запуске консоли с правами администратора. Схема открытия приложения несколько иная:
- Нажать комбинацию клавиш <Win+X>.
- Выбрать пункт «Командная строка (администратор)».
- В открывшемся окне ввести команду активации telnet.
Если пользователь предпочитает управлять компьютером через графический интерфейс, нужно запустить панель управления, а в ней утилиту «Удаление программы». В открывшемся окне нужно перейти в раздел «Включение или отключение компонентов Windows», далее в общем списке найти строку «Telnet», поставить в ней галочку и нажать кнопку ОК. Все, служба активирована и готова к использованию (даже в консоли).
Синтаксис:
telnet опции хост порт
Хост – это домен или его IP-адрес, порт – виртуальное дополнение для образования сокета, опции же позволяют менять режим подключения. Их основные варианты:
- -4 – использовать адреса стандарта IPV4;
- -6 – использовать адреса стандарта IPV6;
- -8 – применять 8-битную кодировку типа Unicode;
- -E – отключение поддержки Escape-последовательностей;
- -a – вход с именем пользователя из переменного окружения User;
- -b – использовать локальный сокет;
- -d – включить режим отладки;
- -p – режим эмуляции rlogin;
- -e – задать символ начала Escape-последовательности;
- -l – пользователь для авторизации на удаленном сервере.
Простейший вариант проверки открытых портов – это ввод команды без опций:
telnet 10.0.119.127 80
Если на экран будет выведено сообщение «Сбой подключения», порт закрыт, нужно подбирать другой номер. Если порт открыт, пользователь увидит пустой экран или приглашение со стороны сервера ввести логин и пароль.