295 lines
8.8 KiB
Markdown
295 lines
8.8 KiB
Markdown
# 🛡️ 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](#-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* |