This commit is contained in:
186
docs/COMMANDS.md
Normal file
186
docs/COMMANDS.md
Normal file
@@ -0,0 +1,186 @@
|
||||
# 🚀 CatLink Commands Quick Reference
|
||||
|
||||
## 📋 Основные команды
|
||||
|
||||
### Развертывание
|
||||
```bash
|
||||
make deploy # Мастер-развертывание (полная настройка)
|
||||
make pre-deploy-check # Проверка готовности системы
|
||||
make deploy-simple # Простое развертывание без мастер-настройки
|
||||
```
|
||||
|
||||
### Разработка
|
||||
```bash
|
||||
make install # Первая установка
|
||||
make dev # Режим разработки
|
||||
make build # Сборка контейнеров
|
||||
make up # Запуск сервисов
|
||||
make down # Остановка сервисов
|
||||
make restart # Перезапуск
|
||||
```
|
||||
|
||||
### База данных
|
||||
```bash
|
||||
make migrate # Применить миграции
|
||||
make makemigrations # Создать миграции
|
||||
make superuser # Создать суперпользователя
|
||||
```
|
||||
|
||||
### Безопасность
|
||||
```bash
|
||||
make security-audit # Аудит безопасности PostgreSQL
|
||||
make security-setup # Настройка безопасности БД
|
||||
make update-production-security # Безопасное обновление в продакшене
|
||||
```
|
||||
|
||||
### SSL/TLS
|
||||
```bash
|
||||
make ssl-setup # Интерактивная настройка SSL
|
||||
make ssl-renew # Обновление сертификатов
|
||||
```
|
||||
|
||||
### Мониторинг и диагностика
|
||||
```bash
|
||||
make status # Статус сервисов
|
||||
make health # Проверка здоровья
|
||||
make logs # Просмотр логов
|
||||
make monitor # Мониторинг ресурсов
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
```bash
|
||||
make test # Запуск тестов
|
||||
make lint # Проверка кода
|
||||
make format # Форматирование кода
|
||||
```
|
||||
|
||||
### Обслуживание
|
||||
```bash
|
||||
make backup # Создать backup
|
||||
make restore # Восстановить из backup
|
||||
make clean # Очистка (containers, images)
|
||||
make clean-all # Полная очистка (+ volumes, data)
|
||||
make reset # Сброс к заводским настройкам
|
||||
```
|
||||
|
||||
## 🔧 Полезные скрипты
|
||||
|
||||
### Прямое выполнение
|
||||
```bash
|
||||
./scripts/master-deploy.sh # Мастер-развертывание
|
||||
./scripts/pre-deploy-check.sh # Проверка системы
|
||||
./scripts/ssl-manager.sh # Управление SSL
|
||||
./scripts/audit-db-security.sh # Аудит безопасности БД
|
||||
./scripts/health-check.sh # Проверка здоровья
|
||||
./scripts/auto-backup.sh # Создание backup
|
||||
```
|
||||
|
||||
## 🌐 URL-адреса (по умолчанию)
|
||||
|
||||
### Разработка
|
||||
- **Frontend:** http://localhost:3000
|
||||
- **Backend API:** http://localhost:8000/api/
|
||||
- **Admin:** http://localhost:8000/admin/
|
||||
|
||||
### Продакшен
|
||||
- **Site:** https://your-domain.com
|
||||
- **Admin:** https://your-domain.com/admin/
|
||||
|
||||
## 📁 Важные файлы
|
||||
|
||||
### Конфигурация
|
||||
- `.env` - переменные окружения
|
||||
- `docker-compose.yml` - основная конфигурация
|
||||
- `docker-compose.prod.yml` - продакшен overrides
|
||||
- `Makefile` - команды автоматизации
|
||||
|
||||
### Безопасность
|
||||
- `database/postgresql.conf` - конфигурация PostgreSQL
|
||||
- `database/pg_hba.conf` - настройки аутентификации
|
||||
- `SECURITY.md` - руководство по безопасности
|
||||
|
||||
### Документация
|
||||
- `README.md` - основная документация
|
||||
- `DEPLOYMENT.md` - руководство по развертыванию
|
||||
- `COMMANDS.md` - этот файл
|
||||
|
||||
### Backup и логи
|
||||
- `backups/` - резервные копии
|
||||
- `logs/` - логи системы
|
||||
|
||||
## 🚨 Экстренные команды
|
||||
|
||||
### Быстрое восстановление
|
||||
```bash
|
||||
# Перезапуск всех сервисов
|
||||
make restart
|
||||
|
||||
# Пересборка и перезапуск
|
||||
make build && make up
|
||||
|
||||
# Проверка логов при проблемах
|
||||
make logs
|
||||
|
||||
# Полная очистка и переустановка
|
||||
make clean-all && make install
|
||||
```
|
||||
|
||||
### Восстановление из backup
|
||||
```bash
|
||||
# База данных
|
||||
docker exec -i links-db-1 psql -U postgres links_db < backups/database/backup_YYYYMMDD.sql
|
||||
|
||||
# Файлы
|
||||
tar -xzf backups/files/media_YYYYMMDD.tar.gz
|
||||
```
|
||||
|
||||
### Диагностика проблем
|
||||
```bash
|
||||
# Проверка контейнеров
|
||||
docker ps -a
|
||||
|
||||
# Проверка ресурсов
|
||||
docker stats
|
||||
|
||||
# Проверка сетей
|
||||
docker network ls
|
||||
|
||||
# Проверка volumes
|
||||
docker volume ls
|
||||
```
|
||||
|
||||
## 🔄 Обновление проекта
|
||||
|
||||
### Стандартное обновление
|
||||
```bash
|
||||
git pull
|
||||
make restart
|
||||
```
|
||||
|
||||
### Обновление с миграциями
|
||||
```bash
|
||||
git pull
|
||||
make down
|
||||
make build
|
||||
make up
|
||||
make migrate
|
||||
```
|
||||
|
||||
### Безопасное обновление продакшена
|
||||
```bash
|
||||
make update-production-security
|
||||
```
|
||||
|
||||
## 💡 Подсказки
|
||||
|
||||
1. **Всегда проверяйте статус** перед началом работы: `make status`
|
||||
2. **Используйте pre-deploy-check** перед развертыванием: `make pre-deploy-check`
|
||||
3. **Регулярно делайте backup**: `./scripts/auto-backup.sh`
|
||||
4. **Мониторьте безопасность**: `make security-audit`
|
||||
5. **Проверяйте логи** при проблемах: `make logs`
|
||||
|
||||
## 📞 Поддержка
|
||||
|
||||
- **Issues:** https://github.com/smartsoltech/links/issues
|
||||
- **Документация:** README.md, DEPLOYMENT.md, SECURITY.md
|
||||
- **Команды:** `make help`
|
||||
@@ -1,68 +1,323 @@
|
||||
# Переменные окружения
|
||||
# 🚀 CatLink Master Deployment Guide
|
||||
|
||||
Скопируйте `.env.example` в `.env` и настройте следующие переменные:
|
||||
Полное руководство по мастер-развертыванию проекта CatLink с автоматической настройкой всех компонентов.
|
||||
|
||||
## Django настройки
|
||||
- `DJANGO_SECRET_KEY` - Секретный ключ Django (обязательно изменить в продакшене)
|
||||
- `DJANGO_DEBUG` - Режим отладки (True/False)
|
||||
- `DJANGO_ALLOWED_HOSTS` - Разрешенные хосты (разделенные запятыми)
|
||||
## 🎯 Что включает мастер-развертывание
|
||||
|
||||
## База данных PostgreSQL
|
||||
- `DATABASE_ENGINE` - Движок базы данных (django.db.backends.postgresql)
|
||||
- `DATABASE_NAME` - Название базы данных
|
||||
- `DATABASE_USER` - Пользователь базы данных
|
||||
- `DATABASE_PASSWORD` - Пароль базы данных
|
||||
- `DATABASE_HOST` - Хост базы данных (db для Docker)
|
||||
- `DATABASE_PORT` - Порт базы данных (5432)
|
||||
### 1. 🔧 Системные требования и подготовка
|
||||
- Автоматическая проверка системы
|
||||
- Установка необходимых компонентов (nginx, certbot, docker)
|
||||
- Проверка портов и ресурсов
|
||||
|
||||
## PostgreSQL настройки для контейнера
|
||||
- `POSTGRES_DB` - Название БД для создания в контейнере
|
||||
- `POSTGRES_USER` - Пользователь БД для создания в контейнере
|
||||
- `POSTGRES_PASSWORD` - Пароль пользователя БД в контейнере
|
||||
### 2. ⚙️ Генерация конфигурации
|
||||
- **Автоматическая генерация .env** с безопасными настройками
|
||||
- **Генерация Django SECRET_KEY** (криптографически стойкий)
|
||||
- **Генерация паролей БД** (32 символа, случайные)
|
||||
- **Настройка доменов** и SSL параметров
|
||||
|
||||
## Frontend настройки
|
||||
- `NEXT_PUBLIC_API_URL` - URL API для frontend (http://localhost:8000)
|
||||
### 3. 🗄️ База данных и безопасность
|
||||
- **Полная изоляция PostgreSQL** в Docker сети
|
||||
- **Удаление прав суперпользователя** у приложения
|
||||
- **SCRAM-SHA-256 аутентификация**
|
||||
- **TLSv1.3 SSL/TLS** для БД
|
||||
- **Детальное логирование** всех операций
|
||||
- **Автоматический аудит безопасности**
|
||||
|
||||
## Команды для запуска
|
||||
### 4. 🔒 SSL/TLS сертификаты
|
||||
- **Let's Encrypt** автоматическое получение
|
||||
- **Автообновление сертификатов** via cron
|
||||
- **Fallback на самоподписанные** для тестирования
|
||||
- **HTTP→HTTPS редирект**
|
||||
- **Security headers** (HSTS, CSP, XSS Protection)
|
||||
|
||||
### Подготовка
|
||||
### 5. 🌐 Nginx конфигурация
|
||||
- **Reverse proxy** для frontend и backend
|
||||
- **Security headers** и защита
|
||||
- **Gzip compression**
|
||||
- **Статические файлы** с кэшированием
|
||||
- **Rate limiting** и DDoS защита
|
||||
|
||||
### 6. 💾 Backup и мониторинг
|
||||
- **Автоматические backup** БД и файлов
|
||||
- **Система здоровья** (health checks)
|
||||
- **Логирование** всех операций
|
||||
- **Cron задачи** для обслуживания
|
||||
|
||||
## 🚀 Быстрый старт
|
||||
|
||||
### 1. Проверка готовности системы
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# Отредактируйте .env файл при необходимости
|
||||
make pre-deploy-check
|
||||
```
|
||||
|
||||
### Запуск всех сервисов
|
||||
### 2. Мастер-развертывание
|
||||
```bash
|
||||
make up # или docker-compose up -d --build
|
||||
make deploy
|
||||
```
|
||||
|
||||
### Применение миграций
|
||||
### 3. Проверка безопасности
|
||||
```bash
|
||||
make migrate # или docker-compose exec web python manage.py migrate
|
||||
make security-audit
|
||||
```
|
||||
|
||||
### Остановка сервисов
|
||||
## 📋 Пошаговая инструкция
|
||||
|
||||
### Шаг 1: Подготовка сервера
|
||||
|
||||
1. **Обновите систему:**
|
||||
```bash
|
||||
make down # или docker-compose down
|
||||
sudo apt update && sudo apt upgrade -y
|
||||
```
|
||||
|
||||
### Запуск тестов
|
||||
2. **Клонируйте проект:**
|
||||
```bash
|
||||
make test # или docker-compose exec web pytest --maxfail=1 --disable-warnings -q
|
||||
cd /opt
|
||||
sudo git clone https://github.com/smartsoltech/links.git
|
||||
sudo chown -R $USER:$USER links
|
||||
cd links
|
||||
```
|
||||
|
||||
## Доступ к сервисам
|
||||
3. **Проверьте готовность:**
|
||||
```bash
|
||||
make pre-deploy-check
|
||||
```
|
||||
|
||||
- **Frontend**: http://localhost:3000
|
||||
- **Backend API**: http://localhost:8000/api/
|
||||
- **Django Admin**: http://localhost:8000/admin/
|
||||
- **PostgreSQL**: localhost:5432
|
||||
### Шаг 2: Настройка DNS
|
||||
|
||||
## Структура проекта
|
||||
Убедитесь что ваш домен указывает на IP сервера:
|
||||
```bash
|
||||
# Проверьте A-запись
|
||||
nslookup your-domain.com
|
||||
|
||||
- `backend/` - Django приложение
|
||||
- `frontend/linktree-frontend/` - Next.js приложение
|
||||
- `.env` - Переменные окружения (не включается в git)
|
||||
- `.env.example` - Пример переменных окружения
|
||||
- `docker-compose.yml` - Конфигурация Docker Compose
|
||||
- `Makefile` - Команды для удобного управления
|
||||
# Должен возвращать IP вашего сервера
|
||||
```
|
||||
|
||||
### Шаг 3: Мастер-развертывание
|
||||
|
||||
Запустите мастер-скрипт:
|
||||
```bash
|
||||
make deploy
|
||||
```
|
||||
|
||||
Скрипт запросит:
|
||||
- **Основной домен** (например: links.yourdomain.com)
|
||||
- **Дополнительные домены** (через запятую, опционально)
|
||||
- **Email для Let's Encrypt**
|
||||
- **Режим SSL** (Let's Encrypt / самоподписанный / без SSL)
|
||||
- **Окружение** (production / staging / development)
|
||||
|
||||
### Шаг 4: Проверка развертывания
|
||||
|
||||
После завершения проверьте:
|
||||
```bash
|
||||
# Статус сервисов
|
||||
make status
|
||||
|
||||
# Проверка здоровья
|
||||
./scripts/health-check.sh
|
||||
|
||||
# Аудит безопасности
|
||||
make security-audit
|
||||
```
|
||||
|
||||
## 🔧 Генерируемые файлы и настройки
|
||||
|
||||
### 1. `.env` файл
|
||||
Автоматически генерируется с:
|
||||
- **DJANGO_SECRET_KEY** - криптографически стойкий ключ
|
||||
- **DATABASE_PASSWORD** - случайный 32-символьный пароль
|
||||
- **DJANGO_ALLOWED_HOSTS** - настроенные домены
|
||||
- **NEXT_PUBLIC_API_URL** - правильный API URL
|
||||
- **SSL настройки** в зависимости от выбора
|
||||
|
||||
### 2. Nginx конфигурация
|
||||
- **HTTP→HTTPS редирект**
|
||||
- **Security headers** (HSTS, CSP, XSS Protection)
|
||||
- **Proxy настройки** для frontend и backend
|
||||
- **Gzip compression**
|
||||
- **Timeout настройки**
|
||||
|
||||
### 3. PostgreSQL безопасность
|
||||
- **Изоляция в Docker сети** (без внешних портов)
|
||||
- **SCRAM-SHA-256** аутентификация
|
||||
- **TLSv1.3** для SSL
|
||||
- **Логирование** подключений и операций
|
||||
- **Ограниченные права** для пользователя приложения
|
||||
|
||||
### 4. SSL сертификаты
|
||||
- **Let's Encrypt** с автообновлением
|
||||
- **Wildcard поддержка** для поддоменов
|
||||
- **Fallback** на самоподписанные
|
||||
- **Cron задача** для обновления
|
||||
|
||||
## 🔒 Безопасность
|
||||
|
||||
### Аудит безопасности PostgreSQL
|
||||
```bash
|
||||
make security-audit
|
||||
```
|
||||
|
||||
**Проверяет:**
|
||||
- Версию PostgreSQL
|
||||
- SSL настройки
|
||||
- Права пользователей
|
||||
- Сетевую изоляцию
|
||||
- Настройки логирования
|
||||
- Конфигурационные файлы
|
||||
|
||||
**Оценивает по 10-балльной шкале**
|
||||
|
||||
### Управление SSL
|
||||
```bash
|
||||
# Интерактивная настройка SSL
|
||||
make ssl-setup
|
||||
|
||||
# Обновление сертификатов
|
||||
make ssl-renew
|
||||
```
|
||||
|
||||
### Обновление безопасности в продакшене
|
||||
```bash
|
||||
make update-production-security
|
||||
```
|
||||
|
||||
## 💾 Backup и восстановление
|
||||
|
||||
### Автоматические backup
|
||||
- **База данных**: ежедневно в 2:00
|
||||
- **Файлы**: tar.gz архивы
|
||||
- **Конфигурация**: .env и docker-compose файлы
|
||||
- **Ротация**: хранение 30 дней
|
||||
|
||||
### Ручной backup
|
||||
```bash
|
||||
./scripts/auto-backup.sh
|
||||
```
|
||||
|
||||
### Восстановление
|
||||
```bash
|
||||
# Восстановление БД
|
||||
docker exec -i links-db-1 psql -U postgres links_db < backups/database/links_db_YYYYMMDD_HHMMSS.sql
|
||||
|
||||
# Восстановление файлов
|
||||
tar -xzf backups/files/media_YYYYMMDD_HHMMSS.tar.gz
|
||||
```
|
||||
|
||||
## 📊 Мониторинг и обслуживание
|
||||
|
||||
### Проверка здоровья системы
|
||||
```bash
|
||||
./scripts/health-check.sh
|
||||
```
|
||||
|
||||
### Просмотр логов
|
||||
```bash
|
||||
make logs
|
||||
```
|
||||
|
||||
### Мониторинг ресурсов
|
||||
```bash
|
||||
make monitor
|
||||
```
|
||||
|
||||
### Перезапуск сервисов
|
||||
```bash
|
||||
make restart
|
||||
```
|
||||
|
||||
## 🆘 Устранение неполадок
|
||||
|
||||
### 1. Проблемы с SSL
|
||||
```bash
|
||||
# Проверка статуса сертификатов
|
||||
./scripts/ssl-manager.sh
|
||||
|
||||
# Принудительное обновление
|
||||
sudo certbot renew --force-renewal
|
||||
```
|
||||
|
||||
### 2. Проблемы с БД
|
||||
```bash
|
||||
# Аудит безопасности
|
||||
make security-audit
|
||||
|
||||
# Проверка подключения
|
||||
docker exec links-db-1 pg_isready -U postgres
|
||||
```
|
||||
|
||||
### 3. Проблемы с контейнерами
|
||||
```bash
|
||||
# Пересборка без кэша
|
||||
make build
|
||||
|
||||
# Полный перезапуск
|
||||
make restart
|
||||
|
||||
# Просмотр логов
|
||||
make logs
|
||||
```
|
||||
|
||||
### 4. Проблемы с доменом
|
||||
```bash
|
||||
# Проверка DNS
|
||||
nslookup your-domain.com
|
||||
|
||||
# Проверка nginx
|
||||
sudo nginx -t
|
||||
sudo systemctl status nginx
|
||||
```
|
||||
|
||||
## 🎯 Результат развертывания
|
||||
|
||||
После успешного развертывания вы получите:
|
||||
|
||||
### 🌐 Готовый сайт
|
||||
- **HTTPS** с валидными сертификатами
|
||||
- **Автообновление** SSL
|
||||
- **Security headers** и защита
|
||||
- **Optimized** конфигурация nginx
|
||||
|
||||
### 🔒 Безопасная БД
|
||||
- **Изолированная** в Docker сети
|
||||
- **Зашифрованные** соединения (TLS 1.3)
|
||||
- **Ограниченные права** приложения
|
||||
- **Полное логирование**
|
||||
|
||||
### 💾 Система backup
|
||||
- **Автоматические** ежедневные backup
|
||||
- **Ротация** файлов (30 дней)
|
||||
- **Простое восстановление**
|
||||
|
||||
### 📊 Мониторинг
|
||||
- **Health checks** для всех сервисов
|
||||
- **Логирование** операций
|
||||
- **Resource monitoring**
|
||||
|
||||
## 🔄 Обновления
|
||||
|
||||
### Обновление кода
|
||||
```bash
|
||||
git pull
|
||||
make restart
|
||||
```
|
||||
|
||||
### Обновление безопасности
|
||||
```bash
|
||||
make update-production-security
|
||||
```
|
||||
|
||||
### Обновление SSL
|
||||
```bash
|
||||
make ssl-renew
|
||||
```
|
||||
|
||||
## 📞 Поддержка
|
||||
|
||||
- **README.md** - основная документация
|
||||
- **SECURITY.md** - руководство по безопасности
|
||||
- **logs/** - логи системы
|
||||
- **scripts/** - утилиты обслуживания
|
||||
|
||||
---
|
||||
|
||||
**🎉 Поздравляем! Ваш CatLink готов к использованию!**
|
||||
114
docs/PRODUCTION_FIX.md
Normal file
114
docs/PRODUCTION_FIX.md
Normal file
@@ -0,0 +1,114 @@
|
||||
# Быстрое исправление проблем продакшена
|
||||
|
||||
## 🚨 Проблема: password authentication failed
|
||||
|
||||
### Причина
|
||||
Неправильные настройки в `.env` файле:
|
||||
- `DJANGO_DEBUG=True` (должно быть False)
|
||||
- `NEXT_PUBLIC_API_URL=http://localhost:8000` (должно быть домен)
|
||||
- Возможно проблема с паролем БД
|
||||
|
||||
### ⚡ Быстрое решение
|
||||
|
||||
На сервере выполните:
|
||||
|
||||
```bash
|
||||
cd /opt/links
|
||||
git pull
|
||||
|
||||
# Автоматическое исправление
|
||||
make fix-production
|
||||
```
|
||||
|
||||
### 🔧 Ручное исправление
|
||||
|
||||
Если автоматическое не сработало:
|
||||
|
||||
```bash
|
||||
# 1. Остановить контейнеры
|
||||
make down
|
||||
|
||||
# 2. Создать правильный .env
|
||||
cat > .env << 'EOF'
|
||||
# Django настройки
|
||||
DJANGO_SECRET_KEY=lskjflSDJHFdSFYU7TYOREIFLUDJKFBNKLJSDHFP9Q234856QT80OUAEIYDWSF9PQ28345701784QRTEOYAGWDFLSBAPWO9I485Y
|
||||
DJANGO_DEBUG=False
|
||||
DJANGO_ALLOWED_HOSTS=links.shareon.kr,sharon.kr,localhost,127.0.0.1
|
||||
|
||||
# База данных PostgreSQL
|
||||
DATABASE_ENGINE=django.db.backends.postgresql
|
||||
DATABASE_NAME=links_db
|
||||
DATABASE_USER=links_user
|
||||
DATABASE_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{
|
||||
DATABASE_HOST=db
|
||||
DATABASE_PORT=5432
|
||||
|
||||
# PostgreSQL настройки для контейнера
|
||||
POSTGRES_DB=links_db
|
||||
POSTGRES_USER=links_user
|
||||
POSTGRES_PASSWORD=links_OASDUIFH90324*ftye(guBJ;O234789SDgfu{
|
||||
|
||||
# Frontend настройки (ВАЖНО!)
|
||||
NEXT_PUBLIC_API_URL=http://links.shareon.kr
|
||||
|
||||
# Для продакшена
|
||||
DJANGO_SECURE_SSL_REDIRECT=False
|
||||
DJANGO_SECURE_HSTS_SECONDS=31536000
|
||||
DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS=True
|
||||
DJANGO_SECURE_HSTS_PRELOAD=True
|
||||
EOF
|
||||
|
||||
# 3. Удалить старые данные БД
|
||||
docker volume rm links_postgres_data
|
||||
|
||||
# 4. Пересобрать и запустить
|
||||
make build-prod
|
||||
make up-prod
|
||||
|
||||
# 5. Подождать запуска БД
|
||||
sleep 15
|
||||
|
||||
# 6. Выполнить миграции
|
||||
make migrate
|
||||
|
||||
# 7. Создать суперпользователя
|
||||
make superuser
|
||||
```
|
||||
|
||||
### ✅ Проверка
|
||||
|
||||
После исправления проверьте:
|
||||
|
||||
```bash
|
||||
# Быстрая проверка
|
||||
make check-nginx
|
||||
|
||||
# Проверка API
|
||||
curl http://links.shareon.kr/api/
|
||||
|
||||
# Проверка админки
|
||||
curl http://links.shareon.kr/admin/
|
||||
```
|
||||
|
||||
### 🎯 Результат
|
||||
|
||||
После исправления должно работать:
|
||||
- ✅ Сайт: http://links.shareon.kr
|
||||
- ✅ API: http://links.shareon.kr/api/
|
||||
- ✅ Админка: http://links.shareon.kr/admin/
|
||||
- ✅ Логин через фронтенд
|
||||
|
||||
### 🔍 Диагностика
|
||||
|
||||
Если проблемы остались:
|
||||
|
||||
```bash
|
||||
# Полная диагностика
|
||||
make check-nginx-full
|
||||
|
||||
# Логи контейнеров
|
||||
make logs
|
||||
|
||||
# Статус контейнеров
|
||||
make status
|
||||
```
|
||||
103
docs/SECURITY.md
Normal file
103
docs/SECURITY.md
Normal file
@@ -0,0 +1,103 @@
|
||||
# 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
|
||||
```
|
||||
Reference in New Issue
Block a user