modifica :Sto ancora ricevendo voti positivi per questo anni dopo. Per favore, non scegliere questa risposta, la risposta che utilizza iptables
qui è di gran lunga superiore secondo me.
tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'
o solo tcp-syn
, o solo tcp-ack
(la mia ipotesi sarebbe quella), a seconda di ciò di cui hai bisogno.
Puoi utilizzare il supporto iptables nel kernel Linux per questo. Il lato positivo è che non richiede alcun software aggiuntivo per essere moderatamente utile. Lo svantaggio è che richiede i privilegi di root per essere configurato (ma dato che stai parlando della porta 443, che è una porta privilegiata, probabilmente avrai bisogno dei privilegi di root con la maggior parte delle soluzioni).
Aggiungi una regola iptables con qualcosa come:
sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "
(Regola il -I INPUT
parte secondo i tuoi gusti.)
Quando la regola viene attivata, il kernel emetterà una voce syslog. Ad esempio, con una regola di input, la voce di log potrebbe essere simile a:
Dic 5 09:10:56 nome host kernel:[1023963.185332] HTTPS SYN:IN=ifX OUT=MAC=80:80:80:80:80:80:80:80:80:80:80:80:08:00 SRC=A.B.C.D DST=W.X.Y.Z LEN=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0
È quindi possibile utilizzare qualsiasi strumento di monitoraggio dei registri ordinario per fare qualcosa di utile con queste informazioni. Se la tua implementazione syslog lo supporta, puoi persino indirizzarli in un file di registro separato, soddisfacendo efficacemente il tuo requisito di scrivere i dati di connessione in un file con timestamp al secondo senza software aggiuntivo.
Nota che il LOG
target è un target non terminante, il che significa che tutte le regole che lo seguono verranno comunque valutate e il pacchetto non verrà né rifiutato né accettato dalla regola LOG stessa. Questo fa il LOG
target utile anche per il debug delle regole del firewall.
Per evitare di sovraccaricare il tuo log, prendi in considerazione l'utilizzo del limit
modulo insieme a questo. Vedere la pagina man di iptables(8) per i dettagli.
Risoluzione in microsecondi
Per impostazione predefinita, l'utilità tcpdump riporterà l'ora con una risoluzione di microsecondi. Ad esempio:
$ sudo tcpdump -i any port 443
mostrerà un output simile al seguente:
12:08:14.028945 IP localhost.33255> localhost.https:Flags [S], seq 1828376761, win 43690, options [mss 65495,sackOK,TS val 108010971 ecr 0,nop,wscale 7], length 0
12:08:14.028959 IP localhost.https> localhost.33255:Flags [R.], seq 0, ack 1828376762, win 0, length 0
Consulta tcpdump(8) per un elenco completo delle opzioni di tcpdump e pcap-filter(7) per la sintassi completa dei filtri che puoi utilizzare.