Поиск локальных процессов, запускающих TCP-соединения

С tcpdump я вижу много SYN-пакетов … и IP-адрес источника – Localhost.

Я хочу найти, какие процессы пытаются подключиться.

Обратите внимание, что соединения не достигают состояния ESTABLISHED, они, как представляется, представляют собой случайные сканирования портов.

3 Solutions collect form web for “Поиск локальных процессов, запускающих TCP-соединения”

Предполагая, что у вас установлен SystemTap

 probe begin { printf("ok\n"); } probe syscall.connect { # connect however may fail or flail around in a EINPROGRESS state; # this log only indicates that a connect was attempted if (uaddr_af == "AF_INET" || uaddr_af == "AF_INET6") printf("%s[%d]: %s\n", execname(), pid(), argstr); } probe syscall.connect.return { printf(" -> %s[%d]: %s\n", execname(), pid(), retstr); } 

сохранено как whomakeconnect.stp будет показывать вызовы connect при запуске с stap как root

 # stap-prep ... fix anything reported, it requires debug kernels ... # stap whomakeconnect.stp 

Вы можете использовать netstat cammand. Он показывает состояние пакета. Но вы должны поймать выход, потому что это кажется только при отправке. Это не похоже на сокет для прослушивания tcp. Вот почему вы можете заставить его поймать, используя команду watch. Я полагаю, что соединение связано с ipv4.

 watch -n 0.1 'netstat -4pn | grep -F "SYN_SENT"' 

флаги nestat

p flag: идентификатор процесса / имя

n flag: числовой вывод (без разрешения dns)

4: показать ipv4 сокеты

команда watch делает команду netstat повторяющейся с 0,1-секундным периодом.

Недавно я был в той же ситуации в Linux (виновником был adb ). Мой подход заключался в использовании системы аудита для регистрации системных вызовов connect() .

 sudo auditctl -a exit,always -F arch=b64 -S connect -k who-connects 

Чтобы сообщить системе аудита о регистрации всех системных вызовов connect() (здесь 64-битный вариант, вы можете добавить еще один вариант для 32-битных вариантов, если вы работаете в многоэкранной системе с 32-разрядными и 64-разрядными приложениями)

Позднее запустить:

 sudo ausearch -i -k who-connects 

Чтобы узнать, что сделало связи.

По-прежнему можно было бы создавать TCP-соединения, не используя API-интерфейс сокета. Например, реализовав стек TCP в пользовательском пространстве и используя API нижнего уровня для отправки пакетов, но это не будет распространено (особенно в интерфейсе loopback).

  • Sshd_config TPCKeepAlive по-прежнему использует незашифрованный канал и, следовательно, уязвим
  • Сброс TCP после SYN ACK, возможно, связанный с "no route to host"
  • отслеживание прокси-соединения TCP
  • Как я могу регистрировать исходящий трафик TCP, включая полный путь к URL-адресам?
  • Как правильно вызвать lsof для получения всех TCP-соединений?
  • Как узнать, сколько повторных передач TCP происходит?
  • Проблема с подключением FTP в UNIX
  • Используйте OpenVPN на TCP 443, не вмешиваясь в мой веб-сервер
  • Как узнать, какой файл Apache работает, когда порт попал?
  • Получать количество байтов / пакетов в одном и том же порту TCP / UDP
  • Linux Shell Script - отправить команду через TCP в Sharp Aquos
  • Linux и Unix - лучшая ОС в мире.