Búsqueda de sitios web

15 'Ejemplos de comandos Sockstat' útiles para encontrar puertos abiertos en FreeBSD


Sockstat es una utilidad de línea de comandos versátil que se utiliza para mostrar sockets abiertos de red y sistema en FreeBSD. Principalmente, el comando calcetinestat se instala de forma predeterminada en FreeBSD y se usa comúnmente para mostrar el nombre de los procesos que abrieron un determinado puerto de red en un sistema FreeBSD.

Sin embargo, sockstat también puede enumerar sockets abiertos según la versión del protocolo (ambas versiones de IP), el estado de la conexión y en qué puertos se conecta y escucha un demonio o programa.

Lea también: 20 ejemplos útiles del comando 'netstat' para comprobar las conexiones de red

También puede mostrar sockets de comunicación entre procesos, normalmente conocidos como sockets de dominio Unix o IPC. El comando Sockstat combinado con el filtro grep o canalizado a través de la utilidad awk demuestra ser una herramienta poderosa para la pila de redes locales.

Puede reducir los resultados de una conexión abierta según el usuario propietario del socket, el descriptor de archivo de un socket de red o el PID del proceso que abrió el socket.

En esta guía enumeraremos algunos ejemplos de uso comunes, pero también muy potentes, de la utilidad de red de línea de comandos calcetines en FreeBSD.

Requisitos

  1. Guía de instalación de FreeBSD 11.1

1. Enumere todos los puertos abiertos en FreeBSD

Ejecutado simplemente sin opciones ni interruptores, el comando calcetinestat mostrará todos los sockets abiertos en un sistema FreeBSD, como se ilustra en la siguiente captura de pantalla.

sockstat

Los valores mostrados en la salida de Sockstat se describen como:

  • USUARIO: El propietario (cuenta de usuario) del socket.
  • COMMAND: El comando que abrió el socket.
  • PID: el ID del proceso del comando propietario del socket.
  • FD: el número de descriptor de archivo del socket.
  • PROTO: El protocolo de transporte (generalmente TCP/UDP) asociado con el socket abierto o el tipo de socket en el caso de sockets de dominio Unix (datagrama, flujo o seqpac) para sockets UNIX.
  • DIRECCIÓN LOCAL: Representa la dirección IP local para sockets basados en IP. En el caso de sockets Unix, representa el nombre del archivo del punto final adjunto al socket. El “?? La notación ” implica que el punto final del socket no pudo reconocerse ni establecerse.
  • DIRECCIÓN EXTRANJERA: La dirección IP remota a la que está conectado el socket.

2. Listar puertos abiertos o de escucha en FreeBSD

Ejecutado con el indicador -l, el comando calcetinestat mostrará todos los sockets de escucha abiertos en la pila de red y todos los sockets de dominio Unix abiertos o canalizaciones con nombre involucradas en algún tipo de procesamiento de datos local en el sistema.

sockstat -l

3. Listar los puertos IPv4 abiertos en FreeBSD

Para mostrar todos los sockets abiertos solo para el protocolo IPv4, emita el comando con el indicador -4, como se sugiere en el siguiente ejemplo.

sockstat -4

4. Listar los puertos IPv6 abiertos en FreeBSD

De manera similar a la versión IPv4, también puede mostrar los sockets de red abiertos solo para IPv6 emitiendo el comando como se muestra a continuación.

sockstat -6

5. Listar los puertos abiertos TCP o UDP en FreeBSD

Para mostrar sockets de red basados únicamente en un protocolo de red específico, como TCP o UDP, utilice el indicador -P, seguido del nombre del argumento del protocolo.

Los nombres de los protocolos se pueden encontrar inspeccionando el contenido del archivo /etc/protocols. Actualmente, la herramienta Sockstat no admite el protocolo ICMP.

Mostrar solo sockets TCP
sockstat -P tcp

Mostrar solo sockets UDP
sockstat -P udp

Encadene ambos protocolos.

sockstat –P tcp,udp

6. Enumere los números de puerto específicos de TCP y UDP

Si desea mostrar todos los sockets IP TCP o UDP abiertos, según el número de puerto local o remoto, utilice los siguientes indicadores y sintaxis de comando, como se ilustra en la siguiente captura de pantalla.

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. Listar los puertos abiertos y conectados en FreeBSD

Para mostrar todos los sockets abiertos y conectados, utilice el indicador -c. Como se muestra en los ejemplos siguientes, puede enumerar todos los sockets conectados HTTPS o todos los sockets conectados por TCP emitiendo los comandos.

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

8. Listar los puertos de escucha de la red en FreeBSD

Para enumerar todos los sockets TCP abiertos en estado de escucha, agregue los indicadores -l y -s, como se muestra en el siguiente ejemplo. Al ser un protocolo sin conexión, UDP no mantiene información sobre el estado de la conexión.

Los sockets abiertos UDP no se pueden mostrar usando su estado, porque el protocolo udp usa datagramas para enviar/recibir datos y no tiene ningún mecanismo incorporado para determinar el estado de la conexión.

sockstat -46 -l -s

9. Enumere los sockets Unix y las canalizaciones con nombre

Los sockets de dominio Unix, así como otras formas de comunicación local entre procesos, como canalizaciones con nombre, se pueden mostrar mediante el comando calcetinestat utilizando el indicador -u, como se muestra en la imagen siguiente.

sockstat -u

10. Listar los puertos abiertos por la aplicación en FreeBSD

La salida del comando Sockstat se puede filtrar a través de la utilidad grep para mostrar una lista de puertos abiertos por una aplicación o comando específico.

Supongamos que desea enumerar todos los sockets asociados con el servidor web Nginx, puede ejecutar el siguiente comando para realizar la tarea.

sockstat -46 | grep nginx

Para mostrar solo los sockets conectados asociados con el servidor web Nginx, emita el siguiente comando.

sockstat -46 -c| grep nginx

11. Enumere los protocolos conectados HTTPS

Puede enumerar todos los sockets conectados asociados con el protocolo HTTPS junto con el estado de cada conexión ejecutando el siguiente comando.

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

12. Listar sockets remotos HTTP

Para enumerar todos los sockets remotos asociados con el protocolo HTTP, puede ejecutar una de las siguientes combinaciones de comandos.

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. Encuentre las solicitudes HTTP más altas por direcciones IP

En caso de que desee saber cuántas conexiones HTTP solicita cada dirección IP remota, emita el siguiente comando. Este comando puede resultar muy útil en caso de que quieras determinar si tu servidor web está bajo algún tipo de ataque DDOS. En caso de sospechas, conviene investigar las direcciones IP con mayor tasa de solicitudes.

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

14. Listar los sockets abiertos de DNS

Si ha configurado un servidor DNS de almacenamiento en caché y reenvío en sus instalaciones para atender a clientes internos a través del protocolo de transporte TCP y desea mostrar una lista de todos los sockets
abierto por el solucionador, junto con el estado de cada conexión de socket, ejecute el siguiente comando.

sockstat -46 -P tcp –p 53 -s

15. Consultar DNS TCP en el dominio local

Si no hay tráfico DNS en la red, puede activar manualmente una consulta DNS en el socket TCP desde la consola de la máquina local ejecutando el siguiente comando dig. Luego, ejecute el comando anterior para enumerar todos los sockets de resolución.

dig +tcp  www.domain.com  @127.0.0.1

¡Eso es todo! Junto con las utilidades de línea de comando netstat y lsof, la línea de comando calcetinestat es una poderosa utilidad que se utiliza para adquirir información de red y solucionar problemas de múltiples aspectos de la pila de red de FreeBSD y de los procesos y servicios relacionados con la red.

La contraparte del comando Sockstat de FreeBSD en Linux está representada por el comando netstat o el nuevo comando ss. Lo creas o no, basado en la utilidad Sockstat, puedes encontrar una aplicación similar desarrollada para el sistema operativo Android, llamada SockStat – Simple Netstat GUI.