feat: integrate rate limiting and enhance security features
- Added @convex-dev/rate-limiter dependency to manage request limits effectively. - Implemented rate limiting configurations for IPs, users, and endpoints to prevent abuse and enhance security. - Introduced new security analysis endpoint to detect potential attacks based on incoming requests. - Updated backend schema to include rate limit configurations and various cyber attack types for improved incident tracking. - Enhanced existing security functions to incorporate rate limiting checks, ensuring robust protection against brute force and other attacks.
This commit is contained in:
234
scripts/README_TESTE_SEGURANCA.md
Normal file
234
scripts/README_TESTE_SEGURANCA.md
Normal file
@@ -0,0 +1,234 @@
|
||||
# 🛡️ Script de Teste de Segurança - SGSE
|
||||
|
||||
Script Python para testar e validar o sistema de segurança do SGSE através de simulações de ataques cibernéticos.
|
||||
|
||||
## 📋 Descrição
|
||||
|
||||
Este script simula diferentes tipos de ataques cibernéticos para validar se o sistema SGSE está detectando e bloqueando adequadamente tentativas de intrusão. Os testes incluem:
|
||||
|
||||
- ✅ **Brute Force** - Tentativas repetidas de login com diferentes senhas
|
||||
- ✅ **SQL Injection** - Tentativas de injeção de código SQL
|
||||
- ✅ **XSS (Cross-Site Scripting)** - Tentativas de injeção de scripts maliciosos
|
||||
- ✅ **DDoS** - Múltiplas requisições simultâneas
|
||||
- ✅ **Path Traversal** - Tentativas de acesso a arquivos do sistema
|
||||
- ✅ **Command Injection** - Tentativas de execução de comandos do sistema
|
||||
- ✅ **NoSQL Injection** - Tentativas de injeção NoSQL
|
||||
- ✅ **XXE (XML External Entity)** - Tentativas de ataque via XML
|
||||
|
||||
## 🚀 Pré-requisitos
|
||||
|
||||
```bash
|
||||
# Instalar Python 3.8+ (se ainda não tiver)
|
||||
python3 --version
|
||||
|
||||
# Criar ambiente virtual (recomendado)
|
||||
cd scripts
|
||||
python3 -m venv venv_seguranca
|
||||
|
||||
# Ativar ambiente virtual
|
||||
source venv_seguranca/bin/activate # Linux/Mac
|
||||
# ou
|
||||
venv_seguranca\Scripts\activate # Windows
|
||||
|
||||
# Instalar dependências
|
||||
pip install requests
|
||||
```
|
||||
|
||||
**Nota:** Em sistemas Arch Linux/CachyOS, o Python usa ambientes gerenciados (PEP 668).
|
||||
Por isso, é necessário usar um ambiente virtual. O ambiente já foi criado automaticamente em `scripts/venv_seguranca`.
|
||||
|
||||
## 📖 Uso
|
||||
|
||||
### Teste Completo (Todos os Ataques)
|
||||
|
||||
```bash
|
||||
# Ativar ambiente virtual (se ainda não estiver ativo)
|
||||
cd scripts
|
||||
source venv_seguranca/bin/activate
|
||||
|
||||
# Executar todos os testes
|
||||
python3 teste_seguranca.py
|
||||
|
||||
# Ou tornando o script executável
|
||||
chmod +x teste_seguranca.py
|
||||
./teste_seguranca.py
|
||||
```
|
||||
|
||||
### Teste Específico
|
||||
|
||||
```bash
|
||||
# Testar apenas Brute Force
|
||||
python3 scripts/teste_seguranca.py --teste brute_force
|
||||
|
||||
# Testar apenas SQL Injection
|
||||
python3 scripts/teste_seguranca.py --teste sql_injection
|
||||
|
||||
# Testar apenas XSS
|
||||
python3 scripts/teste_seguranca.py --teste xss
|
||||
|
||||
# Testar apenas DDoS
|
||||
python3 scripts/teste_seguranca.py --teste ddos
|
||||
|
||||
# Testar apenas Path Traversal
|
||||
python3 scripts/teste_seguranca.py --teste path_traversal
|
||||
|
||||
# Testar apenas Command Injection
|
||||
python3 scripts/teste_seguranca.py --teste command_injection
|
||||
|
||||
# Testar apenas NoSQL Injection
|
||||
python3 scripts/teste_seguranca.py --teste nosql
|
||||
|
||||
# Testar apenas XXE
|
||||
python3 scripts/teste_seguranca.py --teste xxe
|
||||
```
|
||||
|
||||
### Opções Avançadas
|
||||
|
||||
```bash
|
||||
# Testar em servidor específico
|
||||
python3 scripts/teste_seguranca.py --url http://192.168.1.100:5173
|
||||
|
||||
# Testar Brute Force com mais tentativas
|
||||
python3 scripts/teste_seguranca.py --teste brute_force --brute-force-tentativas 20
|
||||
|
||||
# Testar DDoS com mais threads e duração maior
|
||||
python3 scripts/teste_seguranca.py --teste ddos --ddos-threads 100 --ddos-duracao 30
|
||||
|
||||
# Ver todas as opções
|
||||
python3 scripts/teste_seguranca.py --help
|
||||
```
|
||||
|
||||
## 📊 Interpretação dos Resultados
|
||||
|
||||
### ✅ DETECTADO
|
||||
O sistema bloqueou ou detectou o ataque com sucesso. Isso é esperado e desejado.
|
||||
|
||||
### ❌ NÃO DETECTADO
|
||||
O sistema não bloqueou ou não detectou o ataque. Pode indicar uma vulnerabilidade que precisa ser corrigida.
|
||||
|
||||
### ⚠️ AVISO
|
||||
O sistema pode estar parcialmente protegido, mas recomenda-se revisar a implementação.
|
||||
|
||||
## 🔍 O Que o Script Verifica
|
||||
|
||||
### 1. Brute Force
|
||||
- ✅ Bloqueio após 5 tentativas falhas
|
||||
- ✅ Retorno de status 429 (Too Many Requests)
|
||||
- ✅ Retorno de status 403 (Forbidden)
|
||||
- ✅ Headers de rate limiting (X-RateLimit-Remaining)
|
||||
|
||||
### 2. SQL Injection
|
||||
- ✅ Bloqueio de payloads SQL maliciosos
|
||||
- ✅ Retorno de status 400/403/422
|
||||
- ✅ Mensagens de erro específicas sobre SQL
|
||||
|
||||
### 3. XSS
|
||||
- ✅ Sanitização de tags HTML/JavaScript
|
||||
- ✅ Bloqueio de scripts maliciosos
|
||||
- ✅ Retorno de status 400/403/422
|
||||
|
||||
### 4. DDoS
|
||||
- ✅ Rate limiting de requisições simultâneas
|
||||
- ✅ Bloqueio de tráfego excessivo
|
||||
- ✅ Taxa de bloqueio > 50%
|
||||
|
||||
### 5. Path Traversal
|
||||
- ✅ Bloqueio de caminhos relativos (../)
|
||||
- ✅ Prevenção de acesso a arquivos do sistema
|
||||
|
||||
### 6. Command Injection
|
||||
- ✅ Bloqueio de caracteres especiais de shell
|
||||
- ✅ Prevenção de execução de comandos
|
||||
|
||||
### 7. NoSQL Injection
|
||||
- ✅ Validação de objetos JSON maliciosos
|
||||
- ✅ Bloqueio de operadores MongoDB maliciosos
|
||||
|
||||
### 8. XXE
|
||||
- ✅ Rejeição de conteúdo XML não esperado
|
||||
- ✅ Prevenção de external entity attacks
|
||||
|
||||
## 🛠️ Personalização
|
||||
|
||||
O script pode ser personalizado editando `teste_seguranca.py`:
|
||||
|
||||
- Adicionar novos payloads de teste
|
||||
- Modificar limites de requisições
|
||||
- Ajustar timeouts e delays
|
||||
- Adicionar novos tipos de testes
|
||||
|
||||
## ⚠️ Avisos Importantes
|
||||
|
||||
1. **Use apenas em ambientes de teste/desenvolvimento**
|
||||
- Nunca execute este script em produção sem autorização
|
||||
|
||||
2. **Este script simula ataques reais**
|
||||
- Pode gerar logs de segurança no sistema
|
||||
- Pode bloquear temporariamente seu IP
|
||||
- Use com responsabilidade
|
||||
|
||||
3. **Alguns testes podem ser bloqueados pelo firewall**
|
||||
- Isso é normal e esperado
|
||||
- Indica que o sistema está protegido
|
||||
|
||||
4. **Execute com o sistema SGSE rodando**
|
||||
- Certifique-se de que o frontend e backend estão ativos
|
||||
- URLs padrão: http://localhost:5173 (frontend) e http://127.0.0.1:3210 (backend)
|
||||
|
||||
## 📝 Exemplo de Saída
|
||||
|
||||
```
|
||||
╔══════════════════════════════════════════════════════════════════════╗
|
||||
║ TESTES DE SEGURANÇA - SGSE ║
|
||||
╚══════════════════════════════════════════════════════════════════════╝
|
||||
|
||||
[INICIO] URL Base: http://localhost:5173
|
||||
[INICIO] URL Convex: http://127.0.0.1:3210
|
||||
|
||||
──────────────────────────────────────────────────────────────────────
|
||||
[BRUTE_FORCE] Iniciando teste de força bruta (10 tentativas)...
|
||||
[BRUTE_FORCE] ✅ DETECTADO! Bloqueio após 5 tentativas (429)
|
||||
|
||||
──────────────────────────────────────────────────────────────────────
|
||||
[SQL_INJECTION] Iniciando testes de SQL Injection...
|
||||
[SQL_INJECTION] ✅ DETECTADO! Payload: ' OR '1'='1...
|
||||
|
||||
──────────────────────────────────────────────────────────────────────
|
||||
[DDOS] Iniciando teste DDoS (50 threads, 10s)...
|
||||
[DDOS] ✅ DETECTADO! 45/50 requisições bloqueadas (90.0%)
|
||||
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
RELATÓRIO DE TESTES DE SEGURANÇA - SGSE
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
|
||||
[BRUTE FORCE]
|
||||
Status: ✅ DETECTADO
|
||||
Sucessos: 0
|
||||
Falhas: 0
|
||||
|
||||
[SQL INJECTION]
|
||||
Status: ✅ DETECTADO
|
||||
Sucessos: 0
|
||||
Falhas: 0
|
||||
|
||||
...
|
||||
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
Total de Testes: 8
|
||||
Ataques Detectados: 7/8
|
||||
══════════════════════════════════════════════════════════════════════
|
||||
```
|
||||
|
||||
## 🤝 Contribuindo
|
||||
|
||||
Para adicionar novos testes de segurança:
|
||||
|
||||
1. Adicione um novo método na classe `SegurancaTeste`
|
||||
2. Adicione o teste ao dicionário `resultados` em `__init__`
|
||||
3. Adicione o teste à lista `testes` em `executar_todos_testes`
|
||||
4. Atualize este README com a descrição do novo teste
|
||||
|
||||
## 📄 Licença
|
||||
|
||||
Este script é parte do projeto SGSE e deve ser usado apenas para fins de teste e validação de segurança.
|
||||
|
||||
Reference in New Issue
Block a user