Ricerca nel sito web

15 utili 'Esempi di comandi Sockstat' per trovare porte aperte in FreeBSD


Sockstat è una versatile utility a riga di comando utilizzata per visualizzare i socket di rete e di sistema aperti in FreeBSD. Principalmente, il comando calzinistat è installato di default in FreeBSD ed è comunemente usato per visualizzare il nome dei processi che hanno aperto una determinata porta di rete su un sistema FreeBSD.

Tuttavia, sockstat può anche elencare i socket aperti in base alla versione del protocollo (entrambe le versioni IP), allo stato della connessione e su quali porte un demone o un programma si collega e su cui è in ascolto.

Leggi anche: 20 esempi utili di comandi "netstat" per verificare le connessioni di rete

Può anche visualizzare socket di comunicazione tra processi, generalmente noti come socket di dominio Unix o IPC. Il comando Sockstat combinato con il filtro grep o convogliato tramite l'utilità awk si rivela un potente strumento per lo stack di rete locale.

Può ridurre i risultati per una connessione aperta in base all'utente che possiede il socket, al descrittore di file di un socket di rete o al PID del processo che ha aperto il socket.

In questa guida elencheremo alcuni esempi di utilizzo comuni, ma anche molto potenti, dell'utilità di rete a riga di comando calzini in FreeBSD.

Requisiti

  1. Guida all'installazione di FreeBSD 11.1

1. Elenca tutte le porte aperte in FreeBSD

Eseguito semplicemente senza alcuna opzione o interruttore, il comando sockstat mostrerà tutti i socket aperti in un sistema FreeBSD, come illustrato nello screenshot seguente.

sockstat

I valori visualizzati nell'output di sockstat sono descritti come:

  • USER: il proprietario (account utente) del socket.
  • COMANDO: il comando che apre il socket.
  • PID: l'ID del processo del comando che possiede il socket.
  • FD: il numero del descrittore di file del socket.
  • PROTO: il protocollo di trasporto (solitamente TCP/UDP) associato al socket aperto o al tipo di socket in caso di socket di dominio Unix (datagram, stream o seqpac) per socket UNIX.
  • INDIRIZZO LOCALE: Rappresenta l'indirizzo IP locale per i socket basati su IP. Nel caso dei socket Unix rappresenta il nome file dell'endpoint allegato al socket. Il “?? La notazione ” implica che l'endpoint del socket non può essere riconosciuto o stabilito.
  • INDIRIZZO ESTERO: l'indirizzo IP remoto a cui è connesso il socket.

2. Elenca le porte in ascolto o aperte in FreeBSD

Eseguito con il flag -l, il comando sockstat mostrerà tutti i socket di ascolto aperti nello stack di rete e tutti i socket di dominio Unix aperti o le pipe denominate coinvolte in qualche tipo di elaborazione dei dati locali nel sistema.

sockstat -l

3. Elenca le porte IPv4 aperte in FreeBSD

Per visualizzare tutti i socket aperti solo per il protocollo IPv4, emetti il comando con il flag -4, come suggerito nell'esempio seguente.

sockstat -4

4. Elenca le porte IPv6 aperte in FreeBSD

Similmente alla versione IPv4, puoi anche visualizzare i socket di rete aperti solo per IPv6, emettendo il comando come mostrato di seguito.

sockstat -6

5. Elenca le porte TCP o UDP aperte in FreeBSD

Per visualizzare i socket di rete basati solo su un protocollo di rete specifico, come TCP o UDP, utilizzare il flag -P, seguito dal simbolo nome dell'argomento del protocollo.

I nomi dei protocolli possono essere trovati controllando il contenuto del file /etc/protocols. Attualmente, il protocollo ICMP non è supportato dallo strumento sockstat.

Mostra solo i socket TCP
sockstat -P tcp

Mostra solo socket UDP
sockstat -P udp

Concatenare entrambi i protocolli.

sockstat –P tcp,udp

6. Elenca i numeri di porta specifici TCP e UDP

Se si desidera visualizzare tutti i socket aperti TCP o UDP IP, in base al numero di porta locale o remota, utilizzare i flag di comando e la sintassi seguenti, come illustrato nello screenshot seguente.

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. Elenca le porte aperte e connesse in FreeBSD

Per visualizzare tutti i socket aperti e connessi, utilizzare il flag -c. Come mostrato negli esempi seguenti, puoi elencare tutti i socket connessi HTTPS o tutti i socket connessi TCP immettendo i comandi.

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

8. Elenca le porte di ascolto della rete in FreeBSD

Per elencare tutti i socket TCP aperti nello stato di ascolto aggiungi i flag -l e -s, come mostrato nell'esempio seguente. Essendo un protocollo senza connessione, UDP non conserva alcuna informazione sullo stato della connessione.

I socket aperti UDP non possono essere visualizzati utilizzando il loro stato, poiché il protocollo udp utilizza datagrammi per inviare/ricevere dati e non dispone di un meccanismo integrato per determinare lo stato della connessione.

sockstat -46 -l -s

9. Elencare i socket Unix e le Named Pipe

I socket di dominio Unix, così come altre forme di comunicazione locale tra processi, come le pipe denominate, possono essere visualizzati dal comando calzinistat utilizzando il flag -u, come mostrato nell'immagine seguente.

sockstat -u

10. Elenca le porte aperte dall'applicazione in FreeBSD

L'output del comando Sockstat può essere filtrato tramite l'utilità grep per visualizzare un elenco di porte aperte da un'applicazione o comando specifico.

Supponiamo che tu voglia elencare tutti i socket associati al server web Nginx, puoi eseguire il seguente comando per raggiungere l'attività.

sockstat -46 | grep nginx

Per visualizzare solo i socket connessi associati al server Web Nginx, emettere il comando seguente.

sockstat -46 -c| grep nginx

11. Elenca i protocolli HTTPS connessi

Puoi elencare tutti i socket connessi associati al protocollo HTTPS insieme allo stato di ciascuna connessione eseguendo il comando seguente.

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

12. Elenca i socket remoti HTTP

Per elencare tutti i socket remoti associati al protocollo HTTP, è possibile eseguire una delle seguenti combinazioni di comandi.

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. Trova le richieste HTTP più alte in base agli indirizzi IP

Nel caso in cui desideri scoprire quante connessioni HTTP sono richieste da ciascun indirizzo IP remoto, esegui il comando seguente. Questo comando può essere molto utile nel caso in cui desideri determinare se il tuo server web è sottoposto a qualche tipo di attacco DDOS. In caso di sospetti dovreste indagare sugli indirizzi IP con il tasso di richiesta più elevato.

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

14. Elenca i socket DNS aperti

Se hai configurato un server DNS di caching e inoltro presso la tua sede per servire i client interni tramite il protocollo di trasporto TCP e desideri visualizzare un elenco di tutti i socket
aperto dal risolutore, insieme allo stato di ciascuna connessione socket, eseguire il seguente comando.

sockstat -46 -P tcp –p 53 -s

15. Interrogare TCP DNS sul dominio locale

Se non c'è traffico DNS sulla rete, puoi attivare manualmente una query DNS sul socket TCP dalla console del computer locale eseguendo il seguente comando dig. Successivamente, emetti il comando precedente per elencare tutti i socket del risolutore.

dig +tcp  www.domain.com  @127.0.0.1

È tutto! Insieme alle utilità della riga di comando netstat e lsof, la riga di comando calzinistat è una potente utilità utilizzata per acquisire informazioni di rete e risolvere molteplici aspetti dello stack di rete di FreeBSD e dei processi e servizi relativi alla rete.

La controparte del comando calzinistat di FreeBSD in Linux è rappresentata dal comando netstat o dal nuovo comando ss. Che tu ci creda o no, basata sull'utilità calzinistat, puoi trovare un'applicazione simile sviluppata per il sistema operativo Android, denominata SockStat - Simple Netstat GUI.