8.8 KiB
🛡️ Auditoria de Firewall - Network Reputation Service
Uma ferramenta profissional de auditoria em PowerShell para avaliar a eficácia da filtragem do seu firewall testando URLs categorizadas baseadas na sua reputação de rede.
📋 Índice de Conteúdos
- Visão Geral
- Características
- Pré-requisitos
- Instalação
- Uso
- Configuração
- Relatório Gerado
- Estrutura de Dados
- Sistema de Pontuação
- Resolução de Problemas
- Contribuir
- Licença
🎯 Visão Geral
Este script PowerShell testa a eficácia do seu firewall verificando se URLs maliciosas são corretamente bloqueadas enquanto sites legítimos permanecem acessíveis. Gera um relatório HTML profissional com pontuação, estatísticas e recomendações.
Autor: Hubert Cornet
Versão: 1.3
Data: 3 de setembro de 2025
✨ Características
- 🔍 Testes automatizados de centenas de URLs categorizadas
- 📊 Pontuação inteligente com notas de A+ a F
- 📱 Relatório HTML responsivo com interface interativa
- 🔧 Suporte a proxy com autenticação
- ⚡ Barras de progresso em tempo real
- 🎨 Visualizações coloridas dos resultados
- 💾 Exportação JSON dos dados brutos
- 🌐 Detecção multi-método de bloqueios
📋 Pré-requisitos
Requisitos do Sistema
- Windows 10/11 ou Windows Server 2016+
- PowerShell 5.1 ou superior
- Conexão à Internet ativa
- Permissões de escrita no diretório do script
Módulos PowerShell (instalados automaticamente)
PSWriteHTML
PSWriteColor
Arquivos Necessários
file-nrs.json
- Base de dados de URLs categorizadas
🚀 Instalação
- Descarregue o script numa pasta dedicada
- Descarregue o arquivo JSON de:
https://gitea.tips-of-mine.com/Tips-Of-Mine/Powershell/src/branch/main/cybersecurity/Network%20Reputation%20Service/file-nrs.json
- Coloque ambos os arquivos no mesmo diretório
💻 Uso
Uso Básico
.\AuditFirewall.ps1
Com Proxy
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080"
Com Autenticação de Proxy
.\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080" -ProxyUseAuthentication
Com Timeout Personalizado
.\AuditFirewall.ps1 -TimeoutSeconds 15
⚙️ Configuração
Parâmetros Disponíveis
Parâmetro | Tipo | Descrição | Padrão |
---|---|---|---|
ProxyUrl |
String | URL do proxy de rede | Nenhum |
ProxyUseAuthentication |
Switch | Ativar autenticação de proxy | False |
TimeoutSeconds |
Integer | Timeout por URL | 10 |
Personalização das Palavras-chave de Bloqueio
Modifique a variável $BlockKeywords
no script:
$BlockKeywords = @("site bloqueado", "acesso negado", "filtragem web", "Access Denied", "Site Blocked")
📊 Relatório Gerado
O script gera automaticamente:
📁 Estrutura de Arquivos de Saída
Rapports/
└── [Data e Hora]/
├── Audit_Firewall_Report.html # Relatório principal
└── Results.json # Dados brutos
🎨 Conteúdo do Relatório HTML
- Resumo Executivo: Pontuação global e estatísticas-chave
- Tabela de Pontuações: Performance por categoria
- Detalhes Interativos: Testes individuais por URL
- Escala de Avaliação: Explicação do sistema de pontuação
📁 Estrutura de Dados
Formato file-nrs.json
{
"categorie": [
{
"id": "malware",
"nom": "Malware",
"description": "Sites que distribuem software malicioso",
"urls": [
{
"url": "http://exemplo-malware.com",
"reputation": "malicious",
"expected_action": "block"
},
{
"url": "https://site-legitimo.com",
"reputation": "safe",
"expected_action": "allow"
}
]
}
]
}
Ações Esperadas
"block"
: A URL deve ser bloqueada pelo firewall"allow"
: A URL deve permanecer acessível
📈 Sistema de Pontuação
Escala de Avaliação
Nota | Pontuação | Interpretação |
---|---|---|
A+ | 95-100% | 🟢 Excelente / Perfeito |
A | 90-95% | 🟢 Muito bom nível de filtragem |
B+ | 85-90% | 🟡 Muito bom |
B | 80-85% | 🟡 Bom, alguns ajustes necessários |
C+ | 75-80% | 🟠 Razoavelmente bom |
C | 70-75% | 🟠 Médio, lacunas significativas |
D+ | 65-70% | 🔴 Aceitável |
D | 60-65% | 🔴 Fraco, filtragem ineficaz |
E+ | 55-60% | 🔴 Muito fraco |
E | 50-55% | 🔴 Insuficiente |
F+ | 45-50% | ⚫ Crítico |
F | 0-45% | ⚫ Ação imediata necessária |
Método de Cálculo
Pontuação = (URLs filtradas corretamente / Total de URLs testadas) × 100
🔍 Métodos de Detecção
Como o script deteta bloqueios:
- Análise de Conteúdo: Procura por palavras-chave de páginas de bloqueio
- Timeouts de Rede: Pedidos que expiram (provável bloqueio do firewall)
- Erros de Conexão: Incapacidade de alcançar o servidor
- Códigos de Estado HTTP: Análise das respostas do servidor
Cabeçalhos HTTP Simulados:
O script simula um navegador moderno para evitar detecção:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36...
Accept: text/html,application/xhtml+xml,application/xml...
Accept-Language: pt-PT,pt;q=0.9,en-US;q=0.8,en;q=0.7
🔧 Resolução de Problemas
Problemas Comuns
❌ "Arquivo 'file-nrs.json' não existe!"
Solução: Descarregue o arquivo JSON do link fornecido e coloque-o na mesma pasta do script.
❌ "Não é possível instalar o módulo X"
Solução: Execute PowerShell como administrador ou use:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
❌ Timeouts Frequentes
Soluções:
- Aumente o valor de
-TimeoutSeconds
- Verifique a sua conexão de rede
- Configure corretamente as definições de proxy
❌ Falsos Positivos/Negativos
Soluções:
- Atualize as palavras-chave de bloqueio
- Verifique a configuração do firewall
- Adapte o arquivo JSON ao seu ambiente
🏢 Casos de Uso Recomendados
📅 Uso Periódico
- Auditoria mensal da eficácia do firewall
- Validação após atualizações de regras
- Benchmarking entre soluções de segurança
👥 Relatórios Gerenciais
- Dashboards para gestão de TI
- KPIs de segurança mensuráveis
- Justificação de investimento em segurança
🔧 Testes de Configuração
- Validação após mudanças de rede
- Testes de regressão das regras do firewall
- Auditoria de conformidade de segurança
⚠️ Limitações Técnicas
Pontos de Atenção:
- Testes Sequenciais: Sem paralelização (pode ser lento)
- Detecção Básica: Baseia-se em palavras-chave predefinidas
- Falsos Positivos: Sites legítimos temporariamente inacessíveis
- Segurança: O script realmente contacta as URLs testadas
Melhores Práticas:
- 🕐 Execute durante horas de menor tráfego
- 📊 Analise os resultados no contexto
- 🔄 Mantenha o arquivo JSON atualizado
- 📈 Acompanhe a evolução das pontuações ao longo do tempo
🤝 Contribuir
Para Contribuir:
- Faça fork do projeto
- Crie o seu branch de funcionalidade
- Faça commit das suas alterações
- Push para o branch
- Abra um Pull Request
Ideias de Melhoria:
- Paralelização de testes para melhor performance
- Detecção mais sofisticada de páginas de bloqueio
- Suporte a bases de dados de reputação externas
- Interface gráfica para configuração
- Integração com APIs de threat intelligence
🎯 Roteiro
Versão 1.4 (planeada)
- Testes paralelos para performance melhorada
- Suporte a certificados SSL personalizados
- Notificações por email dos resultados
Versão 2.0 (futuro)
- Interface web para configuração
- Integração com soluções SIEM
- API REST para automação
📞 Suporte
Para obter ajuda ou reportar problemas:
- 📧 Contacte o autor: Hubert Cornet
- 🐛 Abra um issue no repositório do projeto
- 📚 Consulte a documentação técnica
📄 Licença
Este projeto está sob licença MIT. Veja o arquivo LICENSE
para mais detalhes.
⭐ Se este script foi útil para si, não hesite em dar-lhe uma estrela!
Última atualização: 3 de setembro de 2025