9.0 KiB
🛡️ Auditoría de Firewall - Network Reputation Service
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
- Características
- Prerequisitos
- Instalación
- Uso
- Configuración
- Informe Generado
- Estructura de Datos
- Sistema de Puntuación
- Resolución de Problemas
- Contribuir
- Licencia
🎯 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
- Descargue el script en una carpeta dedicada
- 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
- 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:
- Análisis de Contenido: Búsqueda de palabras clave de páginas de bloqueo
- Timeouts de Red: Solicitudes que expiran (probable bloqueo de firewall)
- Errores de Conexión: Incapacidad para alcanzar el servidor
- 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:
- 🕐 Ejecutar durante horas de menor tráfico
- 📊 Analizar resultados en contexto
- 🔄 Mantener actualizado el archivo JSON
- 📈 Seguir la evolución de las puntuaciones a lo largo del tiempo
🤝 Contribuir
Para Contribuir:
- Haga fork del proyecto
- Cree su rama de característica
- Haga commit de sus cambios
- Push a la rama
- 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