Перенаправить созданный tcpdump файл pcap на другой сервер во время захвата пакетов
Я искал какую-то команду, как это, она достигает:
- перенаправить сгенерированный tcpdump файл pcap на другой сервер
- во время процесса 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
пакет вместо.