Files
core/docs/oauth-glitchtip-integration.md

173 lines
5.2 KiB
Markdown
Raw Normal View History

[0.9.29] - 2025-09-26 ### 🚨 CRITICAL Security Fixes - **🔒 Open Redirect Protection**: Добавлена строгая валидация redirect_uri против whitelist доменов - **🔒 Rate Limiting**: Защита OAuth endpoints от брутфорса (10 попыток за 5 минут на IP) - **🔒 Logout Endpoint**: Критически важный endpoint для безопасного отзыва httpOnly cookies - **🔒 Provider Validation**: Усиленная валидация OAuth провайдеров с логированием атак - **🚨 GlitchTip Alerts**: Автоматические алерты безопасности в GlitchTip при критических событиях ### 🛡️ Security Modules - **auth/oauth_security.py**: Модуль безопасности OAuth с валидацией и rate limiting + GlitchTip алерты - **auth/logout.py**: Безопасный logout с поддержкой JSON API и browser redirect - **tests/test_oauth_security.py**: Комплексные тесты безопасности (11 тестов) - **tests/test_oauth_glitchtip_alerts.py**: Тесты интеграции с GlitchTip (8 тестов) ### 🔧 OAuth Improvements - **Minimal Flow**: Упрощен до минимума - только httpOnly cookie, нет JWT в URL - **Simple Logic**: Нет error параметра = успех, максимальная простота - **DRY Refactoring**: Устранено дублирование кода в logout и валидации ### 🎯 OAuth Endpoints - **Старт**: `v3.dscrs.site/oauth/{provider}` - с rate limiting и валидацией - **Callback**: `v3.dscrs.site/oauth/{provider}/callback` - безопасный redirect_uri - **Logout**: `v3.dscrs.site/auth/logout` - отзыв httpOnly cookies - **Финализация**: `testing.discours.io/oauth?redirect_url=...` - минимальная схема ### 📊 Security Test Coverage - ✅ Open redirect attack prevention - ✅ Rate limiting protection - ✅ Provider validation - ✅ Safe fallback mechanisms - ✅ Cookie security (httpOnly + Secure + SameSite) - ✅ GlitchTip integration (8 тестов алертов) ### 📝 Documentation - Создан `docs/oauth-minimal-flow.md` - полное описание минимального flow - Обновлена документация OAuth в `docs/auth/oauth.md` - Добавлены security best practices
2025-09-26 21:03:45 +03:00
# 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 теперь имеет полноценный мониторинг!** 🔒✨