Estamos realizando una captura remota tcpdump
en Unix. Cada vez que se elimina el ssh (cualquier interrupción, es decir, mediante Ctrl c o cualquier otro), necesitamos tcpdump
que se detenga/elimine el del otro extremo.
Probamos la mayoría de las opciones enumeradas para eliminar un proceso generado por SSH cuando se elimina ssh. Para tcpdump ssh con -t no es factible ya que antepone una línea al principio que no se espera.
Entonces, si alguien ya ha trabajado en este tipo de problemas, nos gustaría conocer alguna buena solución para lograrlo.
Estoy ejecutando tcpdump
remotamente como root así:
ssh {remotehost} "tcpdump -i eth0 -s 0 -w - " > /tmp/local_file
Gracias.
Respuesta1
Al ejecutarlo de forma remota, si finaliza el ssh
proceso, el otro extremo debería morir. A menos que dejes que este final se suspenda por algún motivo. Si ese es el caso, es posible que desees ejecutarlo como parte de un script más grande en segundo plano.
Tampoco debes usar root de forma remota, y ciertamente no necesitas root al realizar el ssh. Evite trabajar lo más root posible. Utilice un usuario remoto con sudo
capacidades.
Probablemente tampoco necesite "w -", ya que tcpdump
de forma predeterminada escribe en la salida estándar.
También puede limitar tcpdump
la cantidad de paquetes capturados para controlar mejor la sesión. Tenga en cuenta que debe excluir el puerto 22 del sistema; de ssh
lo contrario, el sistema remoto capturará la sesión actual en una especie de forma recursiva de autoalimentación.
Entonces, para capturar 1000 paquetes, podrías hacer:
$ssh [email protected] "sudo tcpdump -i eth0 -s0 -c 1000 not port 22" > /tmp/local_file
Otra alternativa menos limpia es ejecutar después de pkill:
$ssh ..."sudo tcpdump"
$ssh ..."pkill tcpdump"
Como última advertencia, /tmp
la raíz donde reside, muchas veces se encuentra en sistemas de archivos limitados o en RAM; También es un riesgo para la seguridad crear nombres predecibles en un directorio /tmp, específicamente como usuario privilegiado. Es posible que desee utilizar otra ubicación para el archivo de captura.
También puede obtener mejores resultados como administrador de sistemas invirtiendo en una herramienta como ansible
. Para automatizar o utilizar herramientas más complejas para la administración remota, consulteLinux equivalente a la comunicación remota "uno a muchos" de PowerShell