Analizar puertos abiertos con ss

Analizando puertos abiertos con ss en Linux

En el entorno Linux, monitorear puertos y sockets es esencial para mantener la seguridad y diagnosticar problemas de red. Aunque netstat sigue siendo popular, ss (Socket Statistics) se ha convertido en la herramienta preferida por su rapidez y flexibilidad. En este artículo, exploraremos en profundidad cómo usar ss para analizar puertos abiertos, conexiones activas y procesos asociados.

¿Por qué elegir ss sobre netstat

  • Velocidad: ss está escrito en C y aprovecha directamente las llamadas al kernel, mostrando resultados casi en tiempo real.
  • Flexibilidad: Ofrece múltiples filtros nativos (estado, protocolo, direcciones, puertos).
  • Compatibilidad: Incluido en la mayoría de distribuciones modernas sin necesidad de instalar paquetes adicionales.

Instalación y verificación

En la mayoría de sistemas, ss forma parte de iproute2. Para comprobar su disponibilidad:

ss --version

Si no está instalado:

  • Debian/Ubuntu: sudo apt update ampamp sudo apt install iproute2
  • CentOS/Fedora/RHEL: sudo yum install iproute o sudo dnf install iproute

Sintaxis básica de ss

La estructura general es:

ss [opciones] [filtro]

A continuación, una tabla con las opciones más comunes:

Opción Descripción
-t Mostrar sockets TCP.
-u Mostrar sockets UDP.
-l Listar solo sockets en escucha.
-n Mostrar direcciones y puertos en formato numérico.
-p Mostrar procesos asociados a cada socket.

Ejemplos prácticos

  1. Listar puertos en escucha (TCP)

    ss -tln

    Resultado:

    
    Netid State  Recv-Q Send-Q Local Address:Port  Peer Address:Port
    tcp   LISTEN 0      128    0.0.0.0:22         0.0.0.0:
    tcp   LISTEN 0      10000  127.0.0.1:5432     0.0.0.0:
          
  2. Ver conexiones UDP activas

    ss -un
  3. Con procesos asociados

    ss -tulpn

    Esta combinación es clave para identificar qué servicio está ligado a cada puerto.

  4. Filtrar por estado

    Para conexiones established (establecidas):

    ss -tn state established

Filtros avanzados

ss permite especificar criterios muy detallados:

  • Puerto local: ss -tn ( sport = :80 ) muestra sólo conexiones entrantes al puerto 80.
  • Puerto remoto: ss -tn ( dport = :443 ) para salidas al puerto 443.
  • Dirección: ss -tn dst 192.168.1.10 para filtrar por IP de destino.

IPv6 y unix sockets

  • IPv6: ss -tln6 lista puertos IPv6 en escucha.
  • Unix sockets: Para comunicaciones entre procesos en el sistema de archivos: ss -x.

Integración con scripts y automatización

Puede resultar útil volcar la salida de ss en scripts de shell o Python para análisis periódicos:

#!/bin/bash
DATE=(date  %Y-%m-%d_%H:%M)
ss -tulpn > /var/log/ss-status_DATE.log

Luego, empleando grep o expresiones regulares, puede extraerse información para alertas.

Buenas prácticas y recomendaciones

  • Ejecutar ss con sudo para obtener los procesos asociados (-p).
  • Combinar con watch -n 5 ss -tulpn para monitorear en tiempo real cada 5 segundos.
  • Integrar en herramientas de monitoreo como Grafana o Prometheus mediante scripts personalizados.
  • Revisar periódicamente puertos inusuales o servicios expuestos que no sean necesarios para minimizar la superficie de ataque.

Recursos adicionales

Protégete con VPNs recomendadas

Para pruebas de conectividad y seguridad remota, resulta muy útil usar una VPN confiable. Algunas opciones:

Con esta guía exhaustiva, dispone de las claves para dominar ss y fortalecer la seguridad de su sistema Linux mediante un análisis preciso de puertos y conexiones.

  • Hola 👋 , soy la IA de Linuxmind.dev, te puedo ayudar a aprender.
Gathering thoughts ...

Leave a Reply

Your email address will not be published. Required fields are marked *