Убить tcpdump процесс, порожденный ssh, когда ssh умирает

Мы делаем удаленный захват tcpdump в unix. Всякий раз, когда ssh убивается (любое прерывание, т.е. ctrl c или любое другое), нам нужно, чтобы tcpdump на другом конце был остановлен / убит.

Мы попробовали большинство опций, перечисленных для убийства процесса, порожденного SSH, когда ssh убит. Для tcpdump ssh с -t не представляется возможным в качестве префикса строки в начале, которая не ожидается.

Поэтому, если кто-то уже работал над такими проблемами, мы хотели бы знать какое-то хорошее решение для достижения этого.

Я выполняю tcpdump удаленно, как root:

 ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file 

Благодарю.

Запустив его удаленно, если вы убьете процесс ssh , другой конец должен умереть. Если вы не позволите этому концу приостановить по какой-то причине. Если это так, вы можете запустить его как часть более крупного сценария в фоновом режиме.

Вы также не должны использовать root удаленно, и вам, разумеется, не нужен root на стороне ssh. Избегайте работать как можно более root. Используйте удаленный пользователь с возможностями sudo .

Вероятно, вам также не нужно «w -», поскольку tcpdump по умолчанию записывает в stdout.

Вы также можете ограничить tcpdump количеством захваченных пакетов, чтобы лучше контролировать сеанс. Обратите внимание, что вы должны исключить порт 22 из системы, выполняющей ssh иначе удаленная система будет захватывать текущую сессию в виде самонаводящегося рекурсивного способа.

Таким образом, вы можете захватить 1000 пакетов, которые вы могли бы сделать:

 $ssh sudouser@1.1.1.1 "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file 

Другая менее чистая альтернатива запускается после pkill:

 $ssh ..."sudo tcpdump" $ssh ..."pkill tcpdump" 

В качестве последнего предупреждения /tmp или корневого каталога, где он находится, часто находится в ограниченных файловых системах или в ОЗУ; это также угроза безопасности для создания предсказуемых имен в каталоге / tmp, особенно в качестве привилегированного пользователя. Возможно, вам понадобится другое место для файла захвата.

Вы также можете получить лучшие результаты в качестве sysadmin, инвестируя в инструмент, подобный ansible . Для автоматизации или использования более сложных инструментов для удаленного администрирования см. Linux, эквивалентную удалению PowerShell «один ко многим»