Прослушивание 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 Отображает идентификатор процесса владения, связанный с каждым соединением.
Найдите порт, который вы слушаете в разделе "Локальный адрес"
Посмотрите на имя процесса непосредственно под этим.
ПРИМЕЧАНИЕ. Чтобы найти процесс в диспетчере задач
Если вы не видите столбец PID, нажмите "Просмотр/Выбор столбцов". Выберите PID.
Убедитесь, что выбрано "Показывать процессы от всех пользователей".
Обратите внимание на идентификатор процесса (идентификатор процесса) рядом с порт, который вы ищете.
Откройте диспетчер задач Windows.
Перейдите на вкладку Процессы.
Посмотрите на PID, который вы отметили, когда вы сделали netstat на шаге 1.