15 exemples útils d'ordres Sockstat per trobar ports oberts a FreeBSD


Sockstat és una utilitat de línia d'ordres versàtil que s'utilitza per mostrar els sòcols oberts de la xarxa i del sistema a FreeBSD. Principalment, l'ordre sockstat s'instal·la de manera predeterminada a FreeBSD i s'utilitza habitualment per mostrar el nom dels processos que han obert un determinat port de xarxa en un sistema FreeBSD.

No obstant això, sockstat també pot enumerar els sòcols oberts en funció de la versió del protocol (ambdues versions IP), de l'estat de la connexió i dels ports en què s'enllaça i escolta un dimoni o un programa.

També pot mostrar endolls de comunicació entre processos, coneguts normalment com a sòcols de domini Unix o IPC. L'ordre Sockstat combinat amb la utilitat awk demostra ser una eina potent per a la pila de xarxes locals.

Pot reduir els resultats d'una connexió oberta en funció de l'usuari propietari del sòcol, el descriptor de fitxer d'un sòcol de xarxa o el PID del procés que ha obert el sòcol.

En aquesta guia enumerarem alguns exemples d'utilització habituals, però també molt potents, de la utilitat de xarxa de línia d'ordres sockstat a FreeBSD.

  1. Guia d'instal·lació de FreeBSD 11.1

1. Llista tots els ports oberts a FreeBSD

Simplement executat sense cap opció ni interruptor, l'ordre sockstat mostrarà tots els sòcols oberts en un sistema FreeBSD, tal com es mostra a la captura de pantalla següent.

# sockstat

Els valors que es mostren a la sortida del sockstat es descriuen com:

  • USUARI : el propietari (compte d'usuari) del sòcol.
  • COMMAND: L'ordre que va obrir el sòcol.
  • PID : l'ID de procés de l'ordre que és propietari del sòcol.
  • FD : el número descriptor del fitxer del sòcol.
  • PROTO : el protocol de transport (normalment TCP/UDP) associat amb el sòcol obert o el tipus de sòcol en cas de sòcols de domini Unix (datagrama, flux o seqpac) per a sòcols UNIX.
  • ADREÇA LOCAL : representa l'adreça IP local per a sockets basats en IP. En el cas dels sòcols Unix, representa el nom del fitxer del punt final adjunt al sòcol. La notació \?? implica que el punt final del sòcol no s'ha pogut reconèixer ni establir.
  • ADREÇA ESTRANGERA : l'adreça IP remota a la qual està connectat el sòcol.

2. Llista els ports d'escolta o oberts a FreeBSD

Executat amb el senyalador -l, l'ordre sockstat mostrarà tots els sòcols d'escolta oberts a la pila de xarxa i tots els sòcols de domini Unix oberts o canonades amb nom implicades en algun tipus de processament de dades locals al sistema.

# sockstat -l

3. Llista els ports oberts IPv4 a FreeBSD

Per mostrar tots els sòcols oberts només per al protocol IPv4, emet l'ordre amb el senyalador -4, tal com es suggereix a l'exemple següent.

# sockstat -4

4. Llista els ports oberts IPv6 a FreeBSD

De manera similar a la versió IPv4, també podeu mostrar els endolls de xarxa oberts només per a IPv6, emetent l'ordre tal com es mostra a continuació.

# sockstat -6

5. Llista els ports oberts TCP o UDP a FreeBSD

Per mostrar els sòcols de xarxa basats només en un protocol de xarxa especificat, com ara TCP o UDP, utilitzeu el senyalador -P, seguit del nom de l'argument del protocol.

Els noms de protocol es poden trobar inspeccionant el contingut del fitxer /etc/protocols. Actualment, l'eina sockstat no admet el protocol ICMP.

# sockstat -P tcp
# sockstat -P udp

Encadenar els dos protocols.

# sockstat –P tcp,udp

6. Llista els números de port específics de TCP i UDP

Si voleu mostrar tots els endolls oberts d'IP TCP o UDP, en funció del número de port local o remot, utilitzeu els indicadors i la sintaxi d'ordres següents, tal com es mostra a la captura de pantalla següent.

# 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. Llista els ports oberts i connectats a FreeBSD

Per mostrar tots els endolls oberts i connectats, utilitzeu el senyalador -c. Com es mostra a les mostres següents, podeu llistar tots els endolls connectats HTTPS o tots els connectats TCP emetent les ordres.

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

8. Llista els ports d'escolta de xarxa a FreeBSD

Per llistar tots els sòcols TCP oberts en estat d'escolta, afegiu els senyaladors -l i -s, tal com es mostra a l'exemple següent. En ser un protocol sense connexió, UDP no manté informació sobre l'estat de la connexió.

Els sòcols oberts UDP no es poden mostrar utilitzant el seu estat, perquè el protocol udp utilitza datagrames per enviar/rebre dades i no té cap mecanisme integrat per determinar l'estat de la connexió.

# sockstat -46 -l -s

9. Llista els endolls Unix i les canonades amb nom

Els sòcols de domini Unix, així com altres formes de comunicació local entre processos, com ara canonades amb nom, es poden mostrar mitjançant l'ordre sockstat utilitzant el senyalador -u, tal com es mostra a la imatge següent.

# sockstat -u

10. Llista els ports oberts per l'aplicació a FreeBSD

La sortida de l'ordre Sockstat es pot filtrar mitjançant la utilitat grep per mostrar una llista de ports oberts per una aplicació o comanda específica.

Suposem que voleu enumerar tots els sòcols associats al servidor web Nginx, podeu emetre l'ordre següent per aconseguir la tasca.

# sockstat -46 | grep nginx

Per mostrar només els endolls connectats associats al servidor web Nginx, emeteu l'ordre següent.

# sockstat -46 -c| grep nginx

11. Llista els protocols connectats HTTPS

Podeu llistar tots els endolls connectats associats al protocol HTTPS juntament amb l'estat de cada connexió executant l'ordre següent.

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

12. Llista de connectors remots HTTP

Per llistar tots els sòcols remots associats amb el protocol HTTP, podeu executar una de les combinacions d'ordres següents.

# 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. Trobeu les sol·licituds HTTP més altes per adreces IP

En cas que vulgueu esbrinar quantes connexions HTTP sol·liciten cada adreça IP remota, emeteu l'ordre següent. Aquesta ordre pot ser molt útil en cas que vulgueu determinar si el vostre servidor web està sota algun tipus d'atac DDOS. En cas de sospita, hauríeu d'investigar les adreces IP amb la taxa de sol·licitud més alta.

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

14. Llista els sòcols oberts de DNS

Si heu configurat un servidor DNS de memòria cau i reenviament a les vostres instal·lacions per servir clients interns mitjançant el protocol de transport TCP i voleu mostrar una llista de tots els endolls
obert pel resolutor, juntament amb l'estat de cada connexió de sòcol, executeu l'ordre següent.

# sockstat -46 -P tcp –p 53 -s

15. Consulteu el DNS TCP al domini local

Si no hi ha trànsit DNS a la xarxa, podeu activar manualment una consulta DNS al sòcol TCP des de la consola de la màquina local executant l'ordre dig següent. Després, emet l'ordre anterior per llistar tots els sòcols de resolució.

# dig +tcp  www.domain.com  @127.0.0.1

Això és tot! Juntament amb les utilitats de la línia d'ordres lsof, la línia d'ordres sockstat és una potent utilitat que s'utilitza per adquirir informació de xarxa i resoldre problemes de múltiples aspectes de la pila de xarxa de FreeBSD i dels processos i serveis relacionats amb la xarxa.

La contrapartida de l'ordre FreeBSD sockstat a Linux està representada per l'ordre netstat o la nova ordre ss. Ho creieu o no, basat en la utilitat sockstat, podeu trobar una aplicació similar desenvolupada per al sistema operatiu Android, anomenada SockStat - Simple Netstat GUI.