Регистрация исходящих соединений, как они происходят

23

Есть ли способ зарегистрировать все исходящие соединения, которые создает процесс? Я знаю об этом, netstatно, похоже, это скорее снимок момента, а не то, что запускает и регистрирует информацию за период.

Мне нужен только IP или имя хоста, порт и процесс, устанавливающий соединение.

Богатый
источник
1
Ну, вы могли бы сделать что-то вроде watch -n 2 netstatтого, но это не правильное решение, не так ли?
Ульрих Шварц
1
[Эта тема] [1] должен ответить на ваш вопрос [1]: superuser.com/questions/34782/…
Форма жизни инопланетянина
См. Также Как выяснить, какой файл в настоящее время записан процессом для доступа к файлу
Жиль "ТАК - перестать быть злым"

Ответы:

15

В Linux вы можете настроить подсистему аудита для регистрации каждой попытки установить сетевое соединение. Для получения информации о подсистеме аудита, прочитать auditctlстраницу человека или этот учебник или другие примеры на этом сайте . При необходимости установите auditdпакет вашего дистрибутива , затем

auditctl -A exit,always -S connect

Журналы во /var/log/audit/audit.logвсех дистрибутивах, которые я знаю. Вы также можете искать их с ausearch.

Жиль "ТАК - перестань быть злым"
источник
3
Мне нужно было определить, какой процесс устанавливает исходящее соединение. Это было сделано мгновенно. Чтобы избежать затопления бревен, впоследствии удалите правило:auditctl -d exit,always -S connect
Майкл Хэмптон
Как я могу проверить журналы?
везение
@luckydonaldless /var/log/audit/audit.log
Жиль "
5

Если вы можете установить собственное ядро, вам стоит взглянуть на SystemTap . Существует множество примеров того, как отслеживать сетевую активность.

Ларс Котхофф
источник
3

В Linux вы можете использовать ip_conntrackдля этого. Это модуль отслеживания подключений, который обычно используется для мониторинга подключений по протоколам странного поведения (например, FTP), которые управляются брандмауэром / NAT.

modprobe ip_conntrack
cat /proc/net/ip_conntrack

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

Шон С.
источник
Вопрос не обязательно должен быть ориентирован на Linux.
Карлсон
0

Я хотел бы посмотреть на использование tcpdumpна исходящем интерфейсе, глядя на исходящие SYNзапросы.

Если вы действительно любите приключения, вы можете создавать такие утилиты, как: straceили trussсообщать обо всех connectсистемных вызовах, отслеживая выполнение программы, но это немного более опасно и имеет недостатки при работе с многопоточными процессами.

Карлсон
источник