GNU/Linux >> Znalost Linux >  >> Linux

Monitorujte provoz TCP na konkrétním portu

upravit :I po letech pro to stále dostávám kladné hlasy. Prosím, nepoužívejte tuto odpověď, odpověď pomocí iptables zde je podle mého názoru mnohem lepší.

tcpdump port 443 and '(tcp-syn|tcp-ack)!=0'

nebo pouze tcp-syn , nebo pouze tcp-ack (Můj odhad by to byl ten), v závislosti na tom, co potřebujete.


Můžete k tomu použít podporu iptables v jádře Linuxu. Výhodou je, že nevyžaduje žádný další software, aby byl středně užitečný. Nevýhodou je, že nastavení vyžaduje oprávnění root (ale vzhledem k tomu, že mluvíte o portu 443, což je privilegovaný port, pravděpodobně budete u většiny řešení potřebovat oprávnění root).

Přidejte pravidlo iptables s něčím jako:

sudo iptables -I INPUT -p tcp --dport 443 --syn -j LOG --log-prefix "HTTPS SYN: "

(Upravte -I INPUT část podle vašeho vkusu.)

Když je pravidlo spuštěno, jádro vygeneruje záznam syslog. Například se vstupním pravidlem může záznam protokolu vypadat nějak takto:

5. prosince 09:10:56 název hostitele jádro:[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 DÉLKA=52 TOS=0x00 PREC=0x20 TTL=119 ID=11901 DF PROTO=TCP SPT=37287 DPT=443 WINDOW=8192 RES=0x00 SYN URGP=0

Poté můžete použít jakýkoli zaběhnutý nástroj pro sledování protokolů a udělat s těmito informacemi něco užitečného. Pokud to vaše implementace syslog podporuje, můžete je dokonce nasměrovat do samostatného souboru protokolu, čímž efektivně splníte svůj požadavek zapsat data připojení do souboru s časovým razítkem na sekundu bez dalšího softwaru.

Všimněte si, že LOG target je neukončující cíl, což znamená, že všechna pravidla následující za ním budou stále vyhodnocena a paket nebude odmítnut ani přijat samotným pravidlem LOG. Tím je LOG cíl užitečný také pro ladění pravidel brány firewall.

Abyste předešli zahlcení vašeho protokolu, zvažte použití limit modul ve spojení s tímto. Podrobnosti viz manuálová stránka iptables(8).


Mikrosekundové rozlišení

Ve výchozím nastavení bude nástroj tcpdump hlásit čas s rozlišením mikrosekund. Například:

$ sudo tcpdump -i any port 443

zobrazí výstup podobný následujícímu:

12:08:14.028945 IP localhost.33255> localhost.https:Flags [S], seq 1828376761, win 43690, možnosti [mss 65495,sackOK,TS val 108010971 ecr 0,nop, délka 0,nop
12:08:14.028959 IP localhost.https> localhost.33255:Flags [R.], seq 0, ack 1828376762, win 0, length 0

Viz tcpdump(8) pro úplný seznam voleb tcpdump a pcap-filter(7) pro úplnou syntaxi filtrů, které můžete použít.


Linux
  1. Jak monitorovat provoz Tcp mezi Localhostem a IP adresou?

  2. Změřte provoz z protokolu přístupu Apache

  3. jak používat netstat na konkrétním portu v Linuxu

  1. Směrujte pouze konkrétní provoz přes VPN

  2. Monitorujte ssh na jiném než výchozím portu pomocí Nagios

  3. Jak mohu sledovat provoz na sériovém portu?

  1. Jak zablokovat konkrétní port na CentOS 8, jako je 22

  2. Povolit webový provoz v softwarové bráně iptables

  3. Ukončit proces běžící na portu 80