Есть ли способ зарегистрировать все исходящие соединения, которые создает процесс? Я знаю об этом, netstat
но, похоже, это скорее снимок момента, а не то, что запускает и регистрирует информацию за период.
Мне нужен только IP или имя хоста, порт и процесс, устанавливающий соединение.
watch -n 2 netstat
того, но это не правильное решение, не так ли?Ответы:
В Linux вы можете настроить подсистему аудита для регистрации каждой попытки установить сетевое соединение. Для получения информации о подсистеме аудита, прочитать
auditctl
страницу человека или этот учебник или другие примеры на этом сайте . При необходимости установитеauditd
пакет вашего дистрибутива , затемЖурналы во
/var/log/audit/audit.log
всех дистрибутивах, которые я знаю. Вы также можете искать их сausearch
.источник
auditctl -d exit,always -S connect
less /var/log/audit/audit.log
Если вы можете установить собственное ядро, вам стоит взглянуть на SystemTap . Существует множество примеров того, как отслеживать сетевую активность.
источник
В Linux вы можете использовать
ip_conntrack
для этого. Это модуль отслеживания подключений, который обычно используется для мониторинга подключений по протоколам странного поведения (например, FTP), которые управляются брандмауэром / NAT.Вы можете выполнить поиск псевдофайла grep для просмотра установленных подключений, а затем выполнить поиск grep исходного IP-адреса, чтобы узнать, когда он исходит из вашего ящика.
источник
Я хотел бы посмотреть на использование
tcpdump
на исходящем интерфейсе, глядя на исходящиеSYN
запросы.Если вы действительно любите приключения, вы можете создавать такие утилиты, как:
strace
илиtruss
сообщать обо всехconnect
системных вызовах, отслеживая выполнение программы, но это немного более опасно и имеет недостатки при работе с многопоточными процессами.источник