Transmitindo o tráfego do tcpdump via SSH - mas sem acesso root ssh

4

A situação

Eu gostaria de usar o Wireshark para analisar o tráfego em um de nossos servidores, mas não quero instalar o Wireshark no próprio servidor. Entendo que posso direcionar o tráfego do tcpdump a> via SSH para minha máquina local (Ubuntu) que possui o Wireshark instalado.

O problema

Não consigo fazer login no servidor com uma conta raiz porque ela está desativada. Eu tenho direitos sudo, mas quando logado no servidor o comando sudo tcpdump não funciona. O comando abaixo (com ou sem sudo) não funciona:

$ ssh [email protected] "sudo tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote

A questão

Existe uma maneira de fazer isso funcionar? Se sim - como?

    
por SPRBRN 17.07.2014 / 15:19

2 respostas

4

Você pode executar este comando via sudo no servidor para capturar os dados primeiro e em seguida, envie o arquivo resultante de volta para sua estação de trabalho para revisar os dados

sudo tcpdump -i eth0 -s 65535 -w /tmp/wireshark
    
por 17.07.2014 / 15:25
3

Sem sudo , o comando não tem privilégios para capturar o dispositivo:

tcpdump: eth0: You don't have permission to capture on that device

Mas com sudo , mas sendo executado após ssh , ele nunca recebe entrada de senha para sudo no servidor remoto, portanto, a solução é usar -S ( man sudo ) e senha de pipe para sudo da seguinte forma:

ssh [email protected] "echo sudo_password | sudo -S tcpdump -s 0 -U -n -w - -i eth0 not port 22" > /tmp/remote"

Por um lado, isso é bom para a automação sem obter sudo prompts de senha e, para ter código / script completamente automatizado, você adicionaria sshpass -p password ssh... .

No entanto, no servidor em que outras pessoas podem facilmente ler sua senha sudo fornecida como texto aberto durante a sessão ssh , isso não é recomendado das perspectivas de segurança. Portanto, para ter um sudo com ssh e seja um uso seguro, use ssh -t

Com -t , é impossível canalizar ssh "sudo command"| command , por exemplo, ssh -t server "cd path/to/directory && sudo"|grep "text" , mas é possível com o uso de -S e senha de eco, por exemplo, ssh server 'echo password | sudo -S ls -l'| grep 'a'

    
por 18.07.2014 / 11:27