Gostaria de coletar logs de todas as comunicações de rede entre meus dispositivos domésticos (laptops, telefones, etc.) e o mundo exterior neste formato:
Timestamp / Device MAC Address / Source IP:Port / Destination IP:Port / Protocol (Internet/Transport Layers) / Amount of data in bytes
A ideia é configurar uma caixa Linux física ("Logging Server") apenas para o registro e executar tcpdump
nela:
Internet ⟺ Logging Server ⟺ Wi-Fi/Ethernet Switch ⟺ Devices
(a caixa terá duas interfaces Ethernet — para a conexão com a Internet e para o switch local).
Supondo que eu cuide da manipulação dos arquivos de log (rotação, análise, alimentação das ferramentas de relatório), como tcpdump
será o comando?
Para ser claro, sei que essa pergunta provavelmente pode ser respondida cavando a página de manual; Eu só gostaria de aproveitar a vasta experiência de alguém tcpdump
para economizar tempo, evitar erros comuns, etc.
PS O principal objetivo disso é monitorar/investigar backdoors potencialmente existentes ou atividade de rede indesejada/inesperada.
tcpdump -n -e -q -i any
Com:
-n
: Não converta endereços em nomes (isso evita notavelmentetcpdump
pesquisas reversas de DNS)-e
: imprima o cabeçalho de nível de link em cada linha de despejo (principalmente o endereço MAC). Use isso em coordenação com-i any
, você precisará disso para redeterminar a interface de rede de entrada/saída.-q
: Imprima menos informações de protocolo para que as linhas de saída sejam mais curtas-i any
: a palavra-any
chave pode ser usada para capturar pacotes de todas as interfacesObserve que o comprimento fornecido pelo comando acima é o comprimento da carga útil. Se você também deseja o tamanho do pacote, remova a opção '-q'.