# 🛡️ Auditoria de Firewall - Network Reputation Service ![Version](https://img.shields.io/badge/version-1.3-blue.svg) ![PowerShell](https://img.shields.io/badge/PowerShell-5.1+-blue.svg) ![License](https://img.shields.io/badge/license-MIT-green.svg) 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](#-visão-geral) - [Características](#-características) - [Pré-requisitos](#-pré-requisitos) - [Instalação](#-instalação) - [Uso](#-uso) - [Configuração](#-configuração) - [Relatório Gerado](#-relatório-gerado) - [Estrutura de Dados](#-estrutura-de-dados) - [Sistema de Pontuação](#-sistema-de-pontuação) - [Resolução de Problemas](#-resolução-de-problemas) - [Contribuir](#-contribuir) - [Licença](#-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 1. **Descarregue o script** numa pasta dedicada 2. **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 ``` 3. **Coloque ambos os arquivos** no mesmo diretório ## 💻 Uso ### Uso Básico ```powershell .\AuditFirewall.ps1 ``` ### Com Proxy ```powershell .\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080" ``` ### Com Autenticação de Proxy ```powershell .\AuditFirewall.ps1 -ProxyUrl "http://proxy.empresa.com:8080" -ProxyUseAuthentication ``` ### Com Timeout Personalizado ```powershell .\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: ```powershell $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` ```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: 1. **Análise de Conteúdo**: Procura por palavras-chave de páginas de bloqueio 2. **Timeouts de Rede**: Pedidos que expiram (provável bloqueio do firewall) 3. **Erros de Conexão**: Incapacidade de alcançar o servidor 4. **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: ```powershell 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: 1. 🕐 Execute durante horas de menor tráfego 2. 📊 Analise os resultados no contexto 3. 🔄 Mantenha o arquivo JSON atualizado 4. 📈 Acompanhe a evolução das pontuações ao longo do tempo ## 🤝 Contribuir ### Para Contribuir: 1. Faça fork do projeto 2. Crie o seu branch de funcionalidade 3. Faça commit das suas alterações 4. Push para o branch 5. 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*