# 🛡️ 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*