Files

8.8 KiB
Raw Permalink Blame History

🛡️ Auditoria de Firewall - Network Reputation Service

Version PowerShell License

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

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

.\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:

  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:

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