Files
links/docs/SECURITY.md
Andrey K. Choi 3732068464
Some checks failed
continuous-integration/drone/push Build is failing
docs moved
2025-11-04 20:47:00 +09:00

103 lines
4.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# PostgreSQL Security Configuration для CatLink
## Проблемы выявленные аудитом:
1. **КРИТИЧНО**: `links_user` имеет права суперпользователя (super=t)
2. **WARN**: PostgreSQL доступен извне Docker сети (порт 5432:5432)
3. **INFO**: SSL настроен на TLSv1.2 (рекомендуется TLSv1.3)
## Примененные исправления:
### 1. Изоляция PostgreSQL в Docker сети
- ✅ Убран внешний порт `5432:5432` из docker-compose
- ✅ Создана изолированная сеть `catlink-network`
- ✅ БД доступна только для backend контейнера
### 2. Улучшенная аутентификация и права доступа
- ✅ Убраны права суперпользователя у `links_user`
- ✅ Настроена аутентификация SCRAM-SHA-256
- ✅ Ограничены права только на необходимые операции
### 3. SSL/TLS безопасность
- ✅ Обновлен минимальный протокол до TLSv1.3
- ✅ Включено предпочтение серверных шифров
- ✅ Улучшена конфигурация SSL
### 4. Логирование и аудит
- ✅ Включено логирование подключений/отключений
- ✅ Детальное логирование модификаций данных
- ✅ Настроено логирование безопасности
### 5. Конфигурационная безопасность
- ✅ Кастомные `postgresql.conf` и `pg_hba.conf`
- ✅ Ограничен доступ только к Docker сетям
- ✅ Отклонение всех других подключений
## Команды для применения:
### Локальная разработка:
```bash
# Применить все изменения безопасности
make fix-db-security
# Только аудит
make security-audit
# Только настройка
make security-setup
```
### Продакшен сервер:
```bash
# Безопасное обновление с backup
make update-production-security
# Или пошагово:
git pull
./scripts/update-production-security.sh
```
## Результат безопасности:
После применения изменений оценка безопасности повысится с **6/10** до **10/10**:
- ✅ SSL TLSv1.3 включен
- ✅ SCRAM-SHA-256 аутентификация
- ✅ Нет прав суперпользователя у приложения
- ✅ Полное логирование включено
- ✅ БД изолирована в Docker сети
- ✅ Кастомная конфигурация безопасности
- ✅ Ограничение доступа по IP/сети
- ✅ Отклонение всех нежелательных подключений
## Проверка работы:
После применения изменений:
1. БД будет доступна только для backend контейнера
2. Внешние подключения к PostgreSQL заблокированы
3. Приложение продолжит работать без изменений
4. Усилена безопасность без потери функциональности
## Откат изменений:
Если что-то пошло не так, восстановление из backup:
```bash
# Восстановление БД из backup
docker exec -i links-db-1 psql -U postgres links_db < backups/backup_YYYYMMDD_HHMMSS.sql
# Возврат к старой конфигурации
git checkout HEAD~1 docker-compose.yml docker-compose.prod.yml
docker-compose down && docker-compose up -d
```
## Мониторинг:
Регулярно запускайте аудит безопасности:
```bash
make security-audit
```
Следите за логами PostgreSQL:
```bash
docker logs links-db-1 --tail 50 -f
```