Перенаправить созданный tcpdump файл pcap на другой сервер во время захвата пакетов

Я искал какую-то команду, как это, она достигает:

  1. перенаправить сгенерированный tcpdump файл pcap на другой сервер
  2. во время процесса 1., используя скрипт python или какой-либо инструмент для анализа каждого пакета.

Таким образом, с точки зрения пользователя системы, когда пакеты собираются, он / она может как просматривать пакеты, как в wireshark, так и загружать файл pcap. Поскольку процедура анализа может потреблять довольно много системных ресурсов, поэтому я надеюсь, что файл pcap может быть перенаправлен на другой сервер и выполнить анализ на этом сервере. Теперь проблема в том, nc слушатель выходит, когда tcpdump убит (я пытался -15), хотя я надеюсь, что слушатель все еще может работать, потому что может быть несколько запущенных серверов tcpdump,

tcpdump -i eth0 port 8801 -w a.pcap | nc 192.168.12.5 9901

2 ответа

Решение

Задайте для tcpdump вывод исходных данных PCAP в стандартный формат и используйте SSH в качестве транспортного механизма, чтобы эти данные записывались в удаленный файл на удаленном узле анализа в виде непрерывного потока.

Пример:

tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat >> $(hostname).pcap"

В приведенном выше примере я использовал $(hostname) чтобы оценить имя хоста сервера (где запускается tcpdump), чтобы разумно присвоить имя удаленному файлу, но, конечно, адаптируйте его к своим потребностям (возможно, включите в имя метку времени, если это полезно).

Альтернативный пример с UNIX-меткой удаленного именования файлов:

tcpdump -i eth0 port 8801 -w - | ssh ${remote_host} "cat > $(hostname)_$(date +%s).pcap"

Я думаю, что вы можете получить желаемые результаты с отдельным nc процесс, который слушает на сервере, где tcpdump запускает и дублирует его на удаленный сервер.

Ты можешь сделать nc слушай и жду (как пример):

 nc -k -l localhost 9901 | nc 192.168.12.5 9901

тогда вы можете подключить любой tcpdump сессия вам нужна

 tcpdump -i eth0 port 8801 -w a.pcap | nc localhost 9901

-k flags "Принудительно заставляет nc прослушивать другое соединение после завершения его текущего соединения".

Пожалуйста, имейте в виду, что если вы используете дистрибутив на основе Debian, есть известная ошибка:

netcat-traditional Пакет в Debian/Ubuntu не продолжает слушать, как должно. В этом случае используйте netcat-openbsd пакет вместо.

Другие вопросы по тегам