Vorrei raccogliere i registri di tutte le comunicazioni di rete tra i miei dispositivi domestici (laptop, telefoni, ecc.) e il mondo esterno in questo formato:
Timestamp / Device MAC Address / Source IP:Port / Destination IP:Port / Protocol (Internet/Transport Layers) / Amount of data in bytes
L'idea è di configurare un Linux box fisico ("Logging Server") solo per la registrazione ed eseguire tcpdump
su di esso:
Internet ⟺ Logging Server ⟺ Wi-Fi/Ethernet Switch ⟺ Devices
(la scatola avrà due interfacce Ethernet — per la connessione Internet e per lo switch locale).
Supponendo che mi occupi io della gestione dei file di log (rotazione, analisi, alimentazione agli strumenti di reporting), come il tcpdump
il comando sarà simile?
Per essere chiari, so che molto probabilmente si può rispondere a questa domanda scavando nella pagina man; Vorrei solo sfruttare la vasta esperienza di qualcuno con tcpdump
per risparmiare tempo, evitare errori comuni ecc.
P.S. Lo scopo principale di questo è monitorare/investigare backdoor potenzialmente esistenti o attività di rete altrimenti indesiderate/impreviste.
Risposta accettata:
tcpdump -n -e -q -i any
Con:
-n
:non convertire gli indirizzi in nomi (questo impedisce in particolaretcpdump
dall'effettuare ricerche DNS inverse)-e
:stampa l'intestazione a livello di collegamento su ciascuna riga di dump (in particolare l'indirizzo mac). Usalo in coordinamento con-i any
, ti servirà per rideterminare l'interfaccia di rete in entrata/in uscita.-q
:stampa meno informazioni sul protocollo in modo che le righe di output siano più brevi-i any
:ilany
la parola chiave può essere utilizzata per acquisire pacchetti da tutte le interfacce
Si noti che la lunghezza data dal comando precedente è la lunghezza del carico utile. Se vuoi anche la lunghezza del pacchetto, rimuovi l'opzione '-q'.