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

4.1 KiB
Raw Blame History

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 сетям
  • Отклонение всех других подключений

Команды для применения:

Локальная разработка:

# Применить все изменения безопасности
make fix-db-security

# Только аудит
make security-audit

# Только настройка
make security-setup

Продакшен сервер:

# Безопасное обновление с 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:

# Восстановление БД из 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

Мониторинг:

Регулярно запускайте аудит безопасности:

make security-audit

Следите за логами PostgreSQL:

docker logs links-db-1 --tail 50 -f