Vyhledávání na webu

15 Užitečné „Příklady příkazů Sockstat“ k nalezení otevřených portů ve FreeBSD


Sockstat je všestranný nástroj příkazového řádku používaný pro zobrazení síťových a systémových otevřených soketů ve FreeBSD. Příkaz sockstat je ve FreeBSD nainstalován ve výchozím nastavení a běžně se používá pro zobrazení názvu procesů, které otevřely určitý síťový port v systému FreeBSD.

sockstat však může také vypsat otevřené sokety na základě verze protokolu (obě verze IP), stavu připojení a portů, na kterých se démon nebo program váže a na kterých naslouchá.

Přečtěte si také: 20 užitečných příkladů příkazů „netstat“ ke kontrole síťových připojení

Může také zobrazit meziprocesové komunikační sokety, typicky známé jako unixové doménové sokety nebo IPC. Příkaz Sockstat v kombinaci s filtrem grep nebo pomocí nástroje awk se ukazuje jako mocný nástroj pro zásobník lokálních sítí.

Může zmenšit výsledky pro otevřené připojení na základě uživatele, který vlastní soket, deskriptoru souboru síťového soketu nebo PID procesu, který soket otevřel.

V této příručce uvedeme některé běžné příklady použití, ale také velmi výkonné, síťového nástroje příkazového řádku sockstat ve FreeBSD.

Požadavky

  1. Instalační příručka FreeBSD 11.1

1. Seznam všech otevřených portů ve FreeBSD

Příkaz sockstat se jednoduše provede bez jakýchkoli voleb nebo přepínačů a zobrazí všechny otevřené zásuvky v systému FreeBSD, jak je znázorněno na obrázku níže.

sockstat

Hodnoty zobrazené na výstupu sockstatu jsou popsány takto:

  • USER : Vlastník (uživatelský účet) soketu.
  • COMMAND : Příkaz, který otevřel soket.
  • PID : ID procesu příkazu, který vlastní soket.
  • FD : Číslo deskriptoru souboru soketu.
  • PROTO : Transportní protokol (obvykle TCP/UDP) přidružený k otevřenému soketu nebo typu soketu v případě soketů domény unix (datagram, stream nebo seqpac) pro sokety UNIX.
  • LOCAL ADDRESS: Představuje místní IP adresu pro sokety založené na IP. V případě Unixových soketů představuje název koncového bodu připojený k soketu. “?? ” zápis znamená, že koncový bod soketu nemohl být rozpoznán nebo vytvořen.
  • ZAHRANIČNÍ ADRESA : Vzdálená IP adresa, ke které je soket připojen.

2. Seznam naslouchacích nebo otevřených portů ve FreeBSD

Příkaz sockstat, spuštěný s příznakem -l, zobrazí všechny naslouchající sokety otevřené v síťovém zásobníku a všechny otevřené sokety unixové domény nebo pojmenované kanály zapojené do nějakého druhu místního zpracování dat v systému.

sockstat -l

3. Seznam otevřených portů IPv4 ve FreeBSD

Chcete-li zobrazit všechny otevřené sokety pouze pro protokol IPv4, zadejte příkaz s příznakem -4, jak je navrženo v příkladu níže.

sockstat -4

4. Seznam otevřených portů IPv6 ve FreeBSD

Podobně jako u verze IPv4 můžete také zobrazit otevřené síťové zásuvky pouze pro IPv6 zadáním příkazu, jak je uvedeno níže.

sockstat -6

5. Seznam otevřených portů TCP nebo UDP ve FreeBSD

Chcete-li zobrazit síťové sokety založené pouze na zadaném síťovém protokolu, jako je TCP nebo UDP, použijte příznak -P a za ním název argumentu protokolu.

Názvy protokolů lze zjistit kontrolou obsahu souboru /etc/protocols. V současné době není protokol ICMP nástrojem sockstat podporován.

Zobrazit pouze sokety TCP
sockstat -P tcp

Zobrazit pouze sokety UDP
sockstat -P udp

Zřetězte oba protokoly.

sockstat –P tcp,udp

6. Vypište specifická čísla portů TCP a UDP

Pokud chcete zobrazit všechny otevřené sokety TCP nebo UDP IP na základě čísla místního nebo vzdáleného portu, použijte níže uvedené příznaky a syntaxi příkazů, jak je znázorněno na obrázku níže.

sockstat -P tcp -p 443             [Show TCP HTTPS Port]
sockstat -P udp -p 53              [Show UDP DNS Port] 
sockstat -P tcp -p 443,53,80,21    [Show Both TCP and UDP]

7. Seznam otevřených a připojených portů ve FreeBSD

Chcete-li zobrazit všechny otevřené a připojené zásuvky, použijte příznak -c. Jak je ukázáno v níže uvedených ukázkách, zadáním příkazů můžete vypsat seznam všech HTTPS připojených soketů nebo všech TCP připojených soketů.

sockstat -P tcp -p 443 -c
sockstat -P tcp -c

8. Seznam portů pro naslouchání sítě ve FreeBSD

Chcete-li zobrazit seznam všech otevřených soketů TCP ve stavu naslouchání, přidejte příznaky -l a -s, jak je uvedeno v příkladu níže. Protože jde o protokol bez připojení, UDP neuchovává žádné informace o stavu připojení.

Otevřené sokety UDP nelze zobrazit pomocí jejich stavu, protože protokol udp používá datagramy k odesílání/přijímání dat a nemá žádný vestavěný mechanismus pro určení stavu připojení.

sockstat -46 -l -s

9. Vypište Unix Sockets a Named Pipes

Unixové doménové sokety, stejně jako další formy místní meziprocesové komunikace, jako jsou pojmenované roury, lze zobrazit příkazem sockstat pomocí příznaku -u, jak je znázorněno na obrázku níže.

sockstat -u

10. Seznam portů otevřených aplikací ve FreeBSD

Výstup příkazu Sockstat lze filtrovat pomocí nástroje grep, aby se zobrazil seznam portů otevřených konkrétní aplikací nebo příkazem.

Předpokládejme, že chcete vypsat všechny sokety spojené s webovým serverem Nginx, můžete zadat následující příkaz, abyste úkol splnili.

sockstat -46 | grep nginx

Chcete-li zobrazit pouze připojené sokety spojené s webovým serverem Nginx, zadejte následující příkaz.

sockstat -46 -c| grep nginx

11. Uveďte seznam protokolů připojených k HTTPS

Spuštěním níže uvedeného příkazu můžete zobrazit seznam všech připojených soketů spojených s protokolem HTTPS spolu se stavem každého připojení.

sockstat -46 -s -P TCP -p 443 -c

12. Vypište vzdálené zásuvky HTTP

Chcete-li vypsat všechny vzdálené sokety přidružené k protokolu HTTP, můžete spustit jednu z následujících kombinací příkazů.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | uniq -c | sort -nr
sockstat -46 -c -p 80,443 | grep -v ADDRESS|awk '{print $7}' | uniq -c | sort -nr

13. Najděte nejvyšší požadavky HTTP podle IP adres

V případě, že chcete zjistit, kolik připojení HTTP vyžaduje každá vzdálená adresa IP, zadejte níže uvedený příkaz. Tento příkaz může být velmi užitečný v případě, že chcete zjistit, zda je váš webový server pod nějakým typem útoku DDOS. V případě podezření byste měli prozkoumat IP adresy s nejvyšší četností žádostí.

sockstat -46 -c | egrep '80|443' | awk '{print $7}' | cut -d: -f1 | uniq -c | sort –nr

14. Seznam otevřených soketů DNS

Pokud jste ve své provozovně nakonfigurovali server DNS pro ukládání do mezipaměti a předávání DNS pro obsluhu interních klientů prostřednictvím transportního protokolu TCP a chcete zobrazit seznam všech soketů
otevřené resolverem, spolu se stavem každého připojení soketu proveďte následující příkaz.

sockstat -46 -P tcp –p 53 -s

15. Dotaz na TCP DNS na lokální doméně

Pokud v síti není žádný provoz DNS, můžete ručně spustit dotaz DNS na soket TCP z konzoly místního počítače spuštěním následujícího příkazu dig. Poté zadejte výše uvedený příkaz a vypište všechny sokety resolveru.

dig +tcp  www.domain.com  @127.0.0.1

To je vše! Spolu s nástroji příkazového řádku netstat a lsof je příkazový řádek sockstat mocným nástrojem používaným pro získávání informací o síti a odstraňování problémů s mnoha aspekty síťového zásobníku FreeBSD a procesů a služeb souvisejících se sítí.

Protějšek příkazu FreeBSD sockstat v Linuxu představuje příkaz netstat nebo nově příkaz ss. Věřte nebo ne, na základě utility sockstat můžete najít podobnou aplikaci vyvinutou pro OS Android s názvem SockStat – Simple Netstat GUI.