173 lines
5.2 KiB
Markdown
173 lines
5.2 KiB
Markdown
|
|
# GlitchTip Security Alerts Integration
|
|||
|
|
|
|||
|
|
## 🚨 Автоматические алерты безопасности OAuth
|
|||
|
|
|
|||
|
|
Система OAuth теперь автоматически отправляет алерты в GlitchTip при обнаружении подозрительной активности.
|
|||
|
|
|
|||
|
|
## 🎯 Типы алертов
|
|||
|
|
|
|||
|
|
### 🔴 Критические события (ERROR level)
|
|||
|
|
- **`open_redirect_attempt`** - Попытка open redirect атаки
|
|||
|
|
- **`rate_limit_exceeded`** - Превышение лимита запросов (брутфорс)
|
|||
|
|
- **`invalid_provider`** - Попытка использования несуществующего провайдера
|
|||
|
|
- **`suspicious_redirect_uri`** - Подозрительный redirect URI
|
|||
|
|
- **`brute_force_detected`** - Обнаружена брутфорс атака
|
|||
|
|
|
|||
|
|
### 🟡 Обычные события (WARNING level)
|
|||
|
|
- **`oauth_login_attempt`** - Обычная попытка входа
|
|||
|
|
- **`provider_validation`** - Валидация провайдера
|
|||
|
|
- **`redirect_uri_validation`** - Валидация redirect URI
|
|||
|
|
|
|||
|
|
## 🏷️ Теги для фильтрации в GlitchTip
|
|||
|
|
|
|||
|
|
Каждый алерт содержит теги для удобной фильтрации:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
{
|
|||
|
|
"security_event": "rate_limit_exceeded",
|
|||
|
|
"component": "oauth",
|
|||
|
|
"client_ip": "192.168.1.100",
|
|||
|
|
"oauth_provider": "github",
|
|||
|
|
"has_redirect_uri": "true"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 Контекст события
|
|||
|
|
|
|||
|
|
Детальная информация в контексте `security_details`:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
{
|
|||
|
|
"ip": "192.168.1.100",
|
|||
|
|
"provider": "github",
|
|||
|
|
"attempts": 15,
|
|||
|
|
"limit": 10,
|
|||
|
|
"window_seconds": 300,
|
|||
|
|
"severity": "high",
|
|||
|
|
"malicious_uri": "https://evil.com/steal",
|
|||
|
|
"attack_type": "open_redirect"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🔧 Интеграция в коде
|
|||
|
|
|
|||
|
|
### Автоматические алерты
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
# При превышении rate limit
|
|||
|
|
if len(requests) >= OAUTH_RATE_LIMIT:
|
|||
|
|
send_rate_limit_alert(client_ip, len(requests))
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
# При попытке open redirect
|
|||
|
|
if not is_allowed:
|
|||
|
|
send_open_redirect_alert(redirect_uri)
|
|||
|
|
return False
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Ручные алерты
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
from auth.oauth_security import log_oauth_security_event
|
|||
|
|
|
|||
|
|
# Отправка кастомного алерта
|
|||
|
|
log_oauth_security_event("suspicious_activity", {
|
|||
|
|
"ip": client_ip,
|
|||
|
|
"details": "Custom security event",
|
|||
|
|
"severity": "medium"
|
|||
|
|
})
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🛡️ Обработка ошибок
|
|||
|
|
|
|||
|
|
Система устойчива к сбоям GlitchTip:
|
|||
|
|
|
|||
|
|
```python
|
|||
|
|
try:
|
|||
|
|
# Отправка алерта в GlitchTip
|
|||
|
|
sentry_sdk.capture_message(message, level=level)
|
|||
|
|
except Exception as e:
|
|||
|
|
# Не ломаем основную логику
|
|||
|
|
logger.error(f"Failed to send alert to GlitchTip: {e}")
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📈 Мониторинг в GlitchTip
|
|||
|
|
|
|||
|
|
### Фильтры для критических событий:
|
|||
|
|
```
|
|||
|
|
tag:security_event AND level:error
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Фильтры по компонентам:
|
|||
|
|
```
|
|||
|
|
tag:component:oauth
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Фильтры по IP адресам:
|
|||
|
|
```
|
|||
|
|
tag:client_ip:192.168.1.100
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🚨 Алерты по типам атак
|
|||
|
|
|
|||
|
|
### Open Redirect атаки:
|
|||
|
|
```
|
|||
|
|
tag:security_event:open_redirect_attempt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Брутфорс атаки:
|
|||
|
|
```
|
|||
|
|
tag:security_event:rate_limit_exceeded
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Невалидные провайдеры:
|
|||
|
|
```
|
|||
|
|
tag:security_event:invalid_provider
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 📊 Статистика безопасности
|
|||
|
|
|
|||
|
|
GlitchTip позволяет отслеживать:
|
|||
|
|
- Количество атак по времени
|
|||
|
|
- Топ атакующих IP адресов
|
|||
|
|
- Самые частые типы атак
|
|||
|
|
- Географическое распределение атак
|
|||
|
|
|
|||
|
|
## 🔄 Настройка алертов
|
|||
|
|
|
|||
|
|
В GlitchTip можно настроить:
|
|||
|
|
- Email уведомления при критических событиях
|
|||
|
|
- Slack/Discord интеграции
|
|||
|
|
- Webhook для автоматической блокировки IP
|
|||
|
|
- Дашборды для мониторинга безопасности
|
|||
|
|
|
|||
|
|
## ✅ Тестирование
|
|||
|
|
|
|||
|
|
Система покрыта тестами:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# Запуск тестов GlitchTip интеграции
|
|||
|
|
uv run python -m pytest tests/test_oauth_glitchtip_alerts.py -v
|
|||
|
|
|
|||
|
|
# Результат: 8/8 тестов прошли
|
|||
|
|
✅ Critical events sent as ERROR
|
|||
|
|
✅ Normal events sent as WARNING
|
|||
|
|
✅ Open redirect alert integration
|
|||
|
|
✅ Rate limit alert integration
|
|||
|
|
✅ Failure handling (graceful degradation)
|
|||
|
|
✅ Security context tags
|
|||
|
|
✅ Event logging integration
|
|||
|
|
✅ Critical events list validation
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 🎯 Преимущества
|
|||
|
|
|
|||
|
|
1. **Реальное время** - мгновенные алерты при атаках
|
|||
|
|
2. **Контекст** - полная информация о событии
|
|||
|
|
3. **Фильтрация** - удобные теги для поиска
|
|||
|
|
4. **Устойчивость** - не ломает основную логику при сбоях
|
|||
|
|
5. **Тестируемость** - полное покрытие тестами
|
|||
|
|
6. **Масштабируемость** - готово для высоких нагрузок
|
|||
|
|
|
|||
|
|
**Система безопасности OAuth теперь имеет полноценный мониторинг!** 🔒✨
|