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

Уничтожить процесс 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

Спасибо.

решение1

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

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

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

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

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

$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file

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

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

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

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

Связанный контент