Cuando trabajamos con ambientes FreeBSD es importante conocer en detalle cómo podemos obtener información básica, o avanzada, de determinados parámetros del sistema y de sus componentes.
Una de estas tareas implica conocer qué puertos tenemos abiertos actualmente en el sistema debido a que el tener un puerto abierto, el cual no debería estarlo, implica una vulnerabilidad de seguridad al estar listo para sufrir un ataque desde allí.
Solvetic analizará hoy un comandoespecial llamado sockstat el cual es vital para controlar supervisar y gestionar los puertos en FreeBSD.
El comando sockstat también puede listar sockets abiertos basados en la versión de protocolo (ambas versiones de IP), el estado de la conexión y en qué puertos un daemon o un programa se enlaza y escucha permitiéndonos llevar un control mucho más preciso sobre todo.
Con sockstat también será posible mostrar sockets de comunicación entre procesos, conocidos como sockets de dominio Unix o IPC. El comando Sockstat combinado con el filtro grep o con la utilidad awk a través de la canalización resulta ser una herramienta potente para la gestión de redes locales.
Sera posible reducir los resultados de una conexión abierta basada en el usuario propietario del socket, el descriptor de archivo de un socket de red o el PID del proceso que abrió el socket permitiendo un control mucho más directo.
1. Listar todos los puertos abiertos en FreeBSD
A continuación veremos algunos de las opciones más prácticas para usar sockstat en FreeBSD.
Simplemente con ejecutar sockstat sin ninguna opción o parámetro, el comando sockstat mostrará todos los sockets abiertos en un sistema FreeBSD.
Allí podemos ver en detalle elementos como:
2. Listar o abrir puertos en FreeBSD
Al ejecutarse con el parámetro -l, el comando sockstat desplegara todos los sockets de escucha abiertos en la red y todos los sockets de dominio Unix abiertos o las canalizaciones con nombre involucradas en algún tipo de procesamiento de datos local en el sistema.
sockstat -l
3. Listar puertos abiertos IPv4 en FreeBSD
Si deseamos desplegar todos los sockets abiertos sólo para el protocolo IPv4 debemos ejecutar lo siguiente con el parámetro -4:
sockstat -4
4. Listar puertos abiertos IPv6 en FreeBSD
Por el contrario, si deseamos desplegar todos los sockets abiertos sólo para el protocolo IPv6 debemos ejecutar lo siguiente con el parámetro -6:
sockstat -6
5. Listar puertos TCP o UDP abiertos en FreeBSD
Con sockstat será posible desplegar sockets de red basados únicamente en un protocolo de red especificado, como TCP o UDP, y para ello usaremos el indicador -P seguido del nombre del argumento del protocolo.
Los nombres de protocolo se pueden encontrar inspeccionando el contenido del archivo / etc/protocols. Actualmente, el protocolo ICMP no es compatible con la herramienta sockstat.
Si deseamos ver los puertos TCP ejecutaremos lo siguiente:
sockstat -P tcp
Para listar los puertos UDP ejecutaremos:
sockstat -P udp
Si deseamos listar ambos ejecutaremos lo siguiente:
sockstat –P tcp,udp
6. Lista de puertos específicos de TCP y UDP en FreeBSD
Si deseamos mostrar todos los sockets abiertos IP de TCP o UDP, basados en el número de puerto local o remoto, podremos usar los indicadores de comando y sintaxis siguientes:
sockstat -P tcp -p 443 [Despliega los puertos TCP HTTPS] sockstat -P udp -p 53 [Despliega los puertos UDP DNS] sockstat -P tcp -p 443,53,80,21 [Despliega los puertos TCP y UDP]
7. Lista de puertos abiertos y conectados en FreeBSD
Para desplegar todos los sockets abiertos y conectados, utilice el indicador -c. Sera posible enumerar todos los sockets conectados por HTTPS o todos los sockets TCP conectados.
sockstat -P tcp -p 443 -c sockstat -P tcp -c
8. Lista de puertos de escucha en red en FreeBSD
Para desplegar todos los sockets TCP abiertos en estado de escucha, debemos usar los parámetros -l y -s, siendo un protocolo sin conexión, UDP no mantiene información sobre el estado de la conexión.
Los sockets abiertos UDP no se pueden desplegar usando su estado, porque el protocolo udp utiliza datagramas para enviar y recibir datos y no tiene ningún mecanismo de integración para determinar el estado de la conexión.
sockstat -46 -l -s
9. Listar puertos UNIX en FreeBSD
Todos los sockets de dominio Unix, al igual que otras formas de comunicación de interproceso local, como las canalizaciones con nombre, pueden desplegarse mediante el comando sockstat usando el parámetro -u:
sockstat -u
10. Listar puertos por aplicación en FreeBSD
Los resultados del comando Sockstat pueden ser filtrados a través de la utilidad grep para mostrar una lista de puertos abiertos por una aplicación o comando específico.
La sintaxis a usar es la siguiente:
sockstat -46 | grep (aplicación)
Con estos comandos tendremos oportunidad de conocer más en detalle los puertos abiertos en FreeBSD y así controlar mucho mejor este aspecto.