Прослушивание tcp порта. Как посмотреть открытые порты в Linux. Вывод информации netstat непрерывно


Существует много различных приложений, показывающих, какое приложение "слушает" тот или иной порт в настоящее время. Вы можете воспользоваться приложениями 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.

Команда netstat , входящая в стандартный набор сетевых инструментов UNIX, отображает различную network–related информацию, такую как сетевые подключения, статистику интерфейсов, таблицы маршрутизации, masquerade, multicast, и т.п.

В этой статье рассмотрим десять практических примеров использования команды netstat в Linux .

1. Список всех портов (как прослушиваемых, так и нет)

Перечислить все порты: netstat -a

# netstat -a | more Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN udp6 0 0 fe80::20c:29ff:fe68:ntp [::]:* Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 20492 /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 23323 /var/run/php5-fpm.sock

Перечислить все TCP порты: netstat -at

# netstat -at Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 *:ssh *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp 0 0 *:http *:* LISTEN

Перечислить все UDP порты: netstat -au

# netstat -au Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 localhost:domain *:* udp 0 0 *:bootpc *:* udp6 0 0 fe80::20c:29ff:fe68:ntp [::]:*

2. Список сокетов, находящихся в состоянии LISTEN

Перечислить все прослушиваемые порты: netstat -l

# netstat -l Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN udp 0 0 192.168.128.134:ntp *:*

Перечислить прослушиваемые TCP порты: netstat -lt

# netstat -lt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 localhost:domain *:* LISTEN tcp 0 0 localhost:ipp *:* LISTEN tcp6 0 0 [::]:ssh [::]:* LISTEN

Перечислить прослушиваемые UDP порты: netstat -lu

# netstat -lu Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 *:bootpc *:* udp6 0 0 [::]:ntp [::]:*

Перечислить прослушиваемые UNIX сокеты: netstat -lx

# netstat -lx Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node Path unix 2 [ ACC ] STREAM LISTENING 3141 /var/run/fail2ban/fail2ban.sock unix 2 [ ACC ] STREAM LISTENING 20492 /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 23323 /var/run/php5-fpm.sock

3. Просмотр статистики для каждого протокола

Показать статистику всех портов: netstat -s

# netstat -s Ip: 11150 total packets received 1 with invalid addresses 0 forwarded 0 incoming packets discarded 11149 incoming packets delivered 11635 requests sent out Icmp: 13791 ICMP messages received 12 input ICMP message failed. Tcp: 15020 active connections openings 97955 passive connection openings 135 failed connection attempts Udp: 2841 packets received 180 packets to unknown port received. .....

Показать статистику только TCP портов: netstat -st

# netstat -st

Показать статистику только UDP портов: netstat -su

# netstat -su

4. Отображение PID и имени процесса в выводе netstat

Опция netstat -p добавит «PID/Program Name» в вывод netstat, и может быть совмещена с любым другим набором опций. Это очень полезно при отладке, для определения того, какая программа работает на определённом порту.

# netstat -pt Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 org-ru-putty.vm.udf:www 52-106.plus.kerch:55723 ESTABLISHED 9486/nginx: worker tcp 0 0 org-ru-putty.vm.udf:www 52-106.plus.kerch:55757 ESTABLISHED 9486/nginx: worker

5. Разрешение имён в выводе netstat

Когда вам не нужно резолвить имя хоста, имя порта, имя пользователя, используйте опцию netstat -n для вывода значений в цифровом формате. Команда покажет IP-адрес вместо хоста, номер порта вместо имени порта, UID вместо имени пользователя.

Это также ускорит вывод, так как netstat не станет выполнять ненужный поиск.

# netstat -an

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

# netsat -a --numeric-ports # netsat -a --numeric-hosts # netsat -a --numeric-users

6. Вывод информации netstat непрерывно

Опция netstat -c будет выводить информацию непрерывно, в стиле top , обновляя экран каждые несколько секунд.

# netstat -c Active Internet connections (w/o servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 org-ru-putty.vm.udf:www 182.131.74.202:59933 FIN_WAIT2 tcp 0 0 org-ru-putty.vm.udf:www 182.131.74.202:63761 FIN_WAIT2 tcp 0 0 org-ru-putty.vm.udf:www 92-181-66-102-irk.:4585 ESTABLISHED ^C

7. Неподдерживаемые системой семейства адресов

Опция netstat --verbose покажет подробный вывод, а в самом конце отобразит неподдерживаемые Address Family.

Netstat: no support for `AF IPX" on this system. netstat: no support for `AF AX25" on this system. netstat: no support for `AF X25" on this system. netstat: no support for `AF NETROM" on this system.

8. Маршрутизация ядра

Показать таблицу маршрутизации ядра: netstat -r

# netstat -r Kernel IP routing table Destination Gateway Genmask Flags MSS Window irtt Iface default 192.168.128.2 0.0.0.0 UG 0 0 0 eth0 192.168.128.0 * 255.255.255.0 U 0 0 0 eth0

Примечание: Используйте netstat -rn для просмотра маршрута в цифровом формате без разрешения имён узлов.

9. Соответствие портов и процессов

Узнать, какой порт занимает определённая программа:

# netstat -ap | grep ssh (Not all processes could be identified, non-owned process info will not be shown, you would have to be root to see it all.) tcp 0 0 *:ssh *:* LISTEN - tcp6 0 0 [::]:ssh [::]:* LISTEN -

Выяснить, каким процессом используется определённый порт:

# netstat -an | grep ":80"

10. Сетевые интерфейсы

Показать список сетевых интерфейсов: 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

11. netstat -lnptux

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

  • -l все открытые порты (LISTEN)
  • -t по протоколу TCP
  • -u по протоколу UDP
  • -x по протоколу UNIX Socket
  • -n без резолва IP/имён
  • -p но с названиями процессов и PID-ами

Примечание: Не все процессы могут быть идентифицированы последним ключом, чужие процессы показаны не будут. Вы должны иметь права root чтобы увидеть всё.

# netstat -lnptux 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:80 0.0.0.0:* LISTEN 9614/nginx tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 601/sshd udp 0 0 8.8.4.4:123 0.0.0.0:* 574/ntpd udp 0 0 127.0.0.1:123 0.0.0.0:* 574/ntpd udp 0 0 0.0.0.0:123 0.0.0.0:* 574/ntpd Active UNIX domain sockets (only servers) Proto RefCnt Flags Type State I-Node PID/Program name Path unix 2 [ ACC ] STREAM LISTENING 4233 826/python /var/run/fail2ban/fail2ban.sock unix 2 [ ACC ] STREAM LISTENING 8122 2561/mysqld /var/run/mysqld/mysqld.sock unix 2 [ ACC ] STREAM LISTENING 160413 7301/php-fpm.conf /var/run/php5-fpm.sock

Январь 2013, сайт

Please enable JavaScript

© 2009–2019, сайт - При использовании материалов сайта указывайте источник.

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

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

    netstat -abno

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

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

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

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

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

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

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

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

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

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

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

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

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