Files
Powershell/cybersecurity/Network Reputation Service/readme-es.md

9.0 KiB
Raw Blame History

🛡️ Auditoría de Firewall - Network Reputation Service

Version PowerShell License

Una herramienta profesional de auditoría en PowerShell para evaluar la efectividad del filtrado de su firewall mediante pruebas de URLs categorizadas basadas en su reputación de red.

📋 Índice de Contenidos

🎯 Visión General

Este script de PowerShell prueba la efectividad de su firewall verificando que las URLs maliciosas sean correctamente bloqueadas mientras que los sitios legítimos permanezcan accesibles. Genera un informe HTML profesional con puntuación, estadísticas y recomendaciones.

Autor: Hubert Cornet
Versión: 1.3
Fecha: 3 de septiembre de 2025

Características

  • 🔍 Pruebas automatizadas de cientos de URLs categorizadas
  • 📊 Puntuación inteligente con calificaciones de A+ a F
  • 📱 Informe HTML responsive con interfaz interactiva
  • 🔧 Soporte de proxy con autenticación
  • Barras de progreso en tiempo real
  • 🎨 Visualizaciones codificadas por colores de resultados
  • 💾 Exportación JSON de datos en bruto
  • 🌐 Detección multi-método de bloqueos

📋 Prerequisitos

Requisitos del Sistema

  • Windows 10/11 o Windows Server 2016+
  • PowerShell 5.1 o superior
  • Conexión a Internet activa
  • Permisos de escritura en el directorio del script

Módulos de PowerShell (instalados automáticamente)

  • PSWriteHTML
  • PSWriteColor

Archivos Requeridos

  • file-nrs.json - Base de datos de URLs categorizadas

🚀 Instalación

  1. Descargue el script en una carpeta dedicada
  2. Descargue el archivo JSON desde:
    https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
    
  3. Coloque ambos archivos en el mismo directorio

💻 Uso

Uso Básico

.\AuditFirewall.ps1

Con Proxy

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080"

Con Autenticación de Proxy

.\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080" -ProxyUseAuthentication

Con Timeout Personalizado

.\AuditFirewall.ps1 -TimeoutSeconds 15

⚙️ Configuración

Parámetros Disponibles

Parámetro Tipo Descripción Por Defecto
ProxyUrl String URL del proxy de red Ninguno
ProxyUseAuthentication Switch Activar autenticación de proxy False
TimeoutSeconds Integer Timeout por URL 10

Personalización de Palabras Clave de Bloqueo

Modifique la variable $BlockKeywords en el script:

$BlockKeywords = @("sitio bloqueado", "acceso denegado", "filtrado web", "Access Denied", "Site Blocked")

📊 Informe Generado

El script genera automáticamente:

📁 Estructura de Archivos de Salida

Rapports/
└── [Fecha y Hora]/
    ├── Audit_Firewall_Report.html    # Informe principal
    └── Results.json                   # Datos en bruto

🎨 Contenido del Informe HTML

  • Resumen Ejecutivo: Puntuación global y estadísticas clave
  • Tabla de Puntuaciones: Rendimiento por categoría
  • Detalles Interactivos: Pruebas individuales por URL
  • Escala de Calificación: Explicación del sistema de puntuación

📁 Estructura de Datos

Formato de file-nrs.json

{
  "categorie": [
    {
      "id": "malware",
      "nom": "Malware",
      "description": "Sitios que distribuyen software malicioso",
      "urls": [
        {
          "url": "http://ejemplo-malware.com",
          "reputation": "malicious",
          "expected_action": "block"
        },
        {
          "url": "https://sitio-legitimo.com",
          "reputation": "safe",
          "expected_action": "allow"
        }
      ]
    }
  ]
}

Acciones Esperadas

  • "block": La URL debe ser bloqueada por el firewall
  • "allow": La URL debe permanecer accesible

📈 Sistema de Puntuación

Escala de Calificación

Calificación Puntuación Interpretación
A+ 95-100% 🟢 Excelente / Perfecto
A 90-95% 🟢 Muy buen nivel de filtrado
B+ 85-90% 🟡 Muy bueno
B 80-85% 🟡 Bueno, algunos ajustes necesarios
C+ 75-80% 🟠 Bastante bueno
C 70-75% 🟠 Promedio, brechas significativas
D+ 65-70% 🔴 Aceptable
D 60-65% 🔴 Débil, filtrado ineficaz
E+ 55-60% 🔴 Muy débil
E 50-55% 🔴 Insuficiente
F+ 45-50% Crítico
F 0-45% Acción inmediata requerida

Método de Cálculo

Puntuación = (URLs correctamente filtradas / Total URLs probadas) × 100

🔍 Métodos de Detección

Cómo el script detecta bloqueos:

  1. Análisis de Contenido: Búsqueda de palabras clave de páginas de bloqueo
  2. Timeouts de Red: Solicitudes que expiran (probable bloqueo de firewall)
  3. Errores de Conexión: Incapacidad para alcanzar el servidor
  4. Códigos de Estado HTTP: Análisis de respuestas del servidor

Encabezados HTTP Simulados:

El script simula un navegador moderno para evitar detección:

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
Accept: text/html,application/xhtml+xml,application/xml...
Accept-Language: es-ES,es;q=0.9,en-US;q=0.8,en;q=0.7

🔧 Resolución de Problemas

Problemas Comunes

"¡El archivo 'file-nrs.json' no existe!"

Solución: Descargue el archivo JSON del enlace proporcionado y colóquelo en la misma carpeta que el script.

"No se puede instalar el módulo X"

Solución: Ejecute PowerShell como administrador o use:

Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

Timeouts Frecuentes

Soluciones:

  • Incremente el valor de -TimeoutSeconds
  • Verifique su conexión de red
  • Configure correctamente los ajustes de proxy

Falsos Positivos/Negativos

Soluciones:

  • Actualice las palabras clave de bloqueo
  • Verifique la configuración del firewall
  • Adapte el archivo JSON a su entorno

🏢 Casos de Uso Recomendados

📅 Uso Periódico

  • Auditoría mensual de efectividad del firewall
  • Validación después de actualizaciones de reglas
  • Benchmarking entre soluciones de seguridad

👥 Reportes Gerenciales

  • Dashboards para gestión de TI
  • KPIs de seguridad medibles
  • Justificación de inversión en seguridad

🔧 Pruebas de Configuración

  • Validación después de cambios de red
  • Pruebas de regresión de reglas de firewall
  • Auditoría de cumplimiento de seguridad

⚠️ Limitaciones Técnicas

Puntos de Atención:

  • Pruebas Secuenciales: Sin paralelización (puede ser lento)
  • Detección Básica: Se basa en palabras clave predefinidas
  • Falsos Positivos: Sitios legítimos temporalmente inaccesibles
  • Seguridad: El script realmente contacta las URLs probadas

Mejores Prácticas:

  1. 🕐 Ejecutar durante horas de menor tráfico
  2. 📊 Analizar resultados en contexto
  3. 🔄 Mantener actualizado el archivo JSON
  4. 📈 Seguir la evolución de las puntuaciones a lo largo del tiempo

🤝 Contribuir

Para Contribuir:

  1. Haga fork del proyecto
  2. Cree su rama de característica
  3. Haga commit de sus cambios
  4. Push a la rama
  5. Abra un Pull Request

Ideas de Mejora:

  • Paralelización de pruebas para mejor rendimiento
  • Detección más sofisticada de páginas de bloqueo
  • Soporte de bases de datos de reputación externas
  • Interfaz gráfica para configuración
  • Integración con APIs de threat intelligence

🎯 Hoja de Ruta

Versión 1.4 (planificada)

  • Pruebas paralelas para mejor rendimiento
  • Soporte de certificados SSL personalizados
  • Notificaciones por email de resultados

Versión 2.0 (futuro)

  • Interfaz web para configuración
  • Integración con soluciones SIEM
  • API REST para automatización

📞 Soporte

Para obtener ayuda o reportar problemas:

  • 📧 Contacte al autor: Hubert Cornet
  • 🐛 Abra un issue en el repositorio del proyecto
  • 📚 Consulte la documentación técnica

📄 Licencia

Este proyecto está bajo licencia MIT. Ver el archivo LICENSE para más detalles.


¡Si este script le fue útil, no dude en darle una estrella!


Última actualización: 3 de septiembre de 2025