Logo

Mi Blog con Emacs y Esteroides

Emacs, IA y Linux: Poder y Simplicidad en tu Flujo de Trabajo

mybloggingnotes@gmail.com


18/06/2025

Análisis de riesgo en puertos abiertos y guía de mitigación

Introducción

Detectar y clasificar los puertos abiertos es una medida básica y vital en ciberseguridad. No todos los puertos suponen el mismo riesgo: algunos están cifrados, otros no; algunos están limitados a localhost, y otros expuestos a internet. Esta guía te permite identificar, clasificar y mitigar riesgos relacionados con puertos abiertos en tu equipo.

Paso 1: Escanear puertos abiertos

Usamos Nmap para detectar puertos y servicios:

sudo nmap -sS -sV -T4 -p- localhost -oN puertos.txt

Este comando escanea todos los puertos TCP (1–65535), detecta servicios y versiones y guarda la salida en `puertos.txt`.

Paso 2: Clasificar nivel de riesgo

Utiliza esta tabla para asignar un nivel de riesgo a cada puerto:


Puerto Servicio Riesgo Justificación
22 SSH MEDIO Común objetivo de fuerza bruta
23 Telnet ALTO Sin cifrado, protocolo obsoleto
80 HTTP MEDIO Texto plano, sin HTTPS
445 SMB ALTO Explotado por ransomware
3306 MySQL ALTO Acceso a base de datos
3389 RDP ALTO Objetivo frecuente de ataques
5900 VNC ALTO Control remoto sin cifrado


Paso 3: Verificar exposición de red

Usa `ss` para ver si el puerto escucha en interfaces externas:

sudo ss -tuln

Filtra líneas con `0.0.0.0` o IPs públicas. Por ejemplo:

tcp   LISTEN  0  128 0.0.0.0:22     *:*
tcp   LISTEN  0  100 127.0.0.1:3306 *:*

Paso 4: Alertar sobre puertos peligrosos

Clasifica en función de los criterios anteriores. Puedes usar este bloque para generar alertas en un informe:

puertos_riesgo = {
    22: "MEDIO",
    23: "ALTO",
    80: "MEDIO",
    445: "ALTO",
    3306: "ALTO",
    3389: "ALTO",
    5900: "ALTO"
}

for puerto, nivel in puertos_riesgo.items():
    if nivel == "ALTO":
        print(f"⚠️ Puerto {puerto} abierto — RIESGO {nivel}")

Paso 5: Mitigación recomendada

  • Cerrar puertos innecesarios:

    sudo ufw deny 3306
    
  • Limitar a localhost en archivos de configuración:
    • MySQL: `bind-address = 127.0.0.1`
    • SSH: `ListenAddress 127.0.0.1` (no recomendado si usas SSH remotamente)
  • Usar firewall activado y en modo restrictivo:

    sudo ufw default deny incoming
    sudo ufw allow 22/tcp
    sudo ufw enable
    

Paso 6: Exportar informe y publicar

Puedes integrar todo en un archivo `cyberreport-YYYYMMDD.html` con los niveles de riesgo resaltados con colores:

  • Rojo para ALTO
  • Amarillo para MEDIO
  • Verde para BAJO

Usa `org-publish` o `pandoc` para exportar el archivo `.org` a HTML y subirlo a tu blog estático.

Conclusión

Este análisis rápido ayuda a detectar y clasificar los puertos abiertos en tu sistema, asignándoles una criticidad realista. Puedes automatizar este análisis al inicio del sistema, y generar alertas en un panel HTML o en Emacs directamente usando `org-alert`.

Enlaces útiles

Suscribirse al Feed RSS | Mapa del Sitio

© 2025 M.Castillo | Hecho con ❤️ en Emacs y org-static-blog

📊 Estadísticas Visit counter For Websites