docs: ТЗ v1.0, планы и схема SAC (фаза 0)
Security Alert Center — документация без кода приложения. - TZ, архитектура, интеграция агентов (UseSAC) - JSON Schema событий v1, deployment Ubuntu 24.04 - План работ, roadmap, multi-root workspace
This commit is contained in:
@@ -0,0 +1,195 @@
|
||||
# Развёртывание на Ubuntu 24.04
|
||||
|
||||
Руководство для эксплуатации SAC. Реализация `deploy/` — в фазе 1; здесь — целевая архитектура развёртывания.
|
||||
|
||||
---
|
||||
|
||||
## 1. Требования к серверу
|
||||
|
||||
| Параметр | Минимум | Рекомендуется |
|
||||
|----------|---------|---------------|
|
||||
| ОС | Ubuntu 24.04 LTS | Ubuntu 24.04 LTS |
|
||||
| CPU | 2 vCPU | 4 vCPU |
|
||||
| RAM | 4 GB | 8 GB |
|
||||
| Диск | 50 GB SSD | 100+ GB SSD (отдельный том для PostgreSQL) |
|
||||
| Сеть | Статический IP или DNS | TLS-сертификат (Let's Encrypt / внутренний CA) |
|
||||
|
||||
**Порты:**
|
||||
|
||||
| Порт | Назначение |
|
||||
|------|------------|
|
||||
| 443 | HTTPS (UI + API ingest) |
|
||||
| 80 | Редирект на 443 (опционально) |
|
||||
|
||||
PostgreSQL **не** публикуется наружу.
|
||||
|
||||
---
|
||||
|
||||
## 2. Сетевые правила
|
||||
|
||||
**Исходящие с агентов:**
|
||||
|
||||
- Linux (ssh-monitor) → `https://sac.example.com:443`
|
||||
- Windows (RDP-monitor) → тот же URL
|
||||
|
||||
**Исходящие с SAC:**
|
||||
|
||||
- `api.telegram.org` (если Telegram)
|
||||
- SMTP-сервер организации
|
||||
|
||||
**Входящие на SAC:**
|
||||
|
||||
- 443 от сетей, где расположены агенты и админы UI
|
||||
|
||||
---
|
||||
|
||||
## 3. Вариант A: Docker Compose (рекомендуется)
|
||||
|
||||
Целевая структура (фаза 1):
|
||||
|
||||
```
|
||||
deploy/
|
||||
docker-compose.yml
|
||||
.env.example
|
||||
nginx/
|
||||
sac.conf
|
||||
```
|
||||
|
||||
Сервисы:
|
||||
|
||||
- `postgres:16`
|
||||
- `api` (FastAPI)
|
||||
- `worker` (тот же образ, другая command)
|
||||
- `nginx` (static + proxy)
|
||||
|
||||
### 3.1. Установка Docker
|
||||
|
||||
```bash
|
||||
sudo apt update
|
||||
sudo apt install -y ca-certificates curl
|
||||
# Официальная инструкция Docker CE для Ubuntu 24.04
|
||||
```
|
||||
|
||||
### 3.2. Конфигурация
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /etc/security-alert-center
|
||||
sudo cp deploy/.env.example /etc/security-alert-center/.env
|
||||
sudo chmod 600 /etc/security-alert-center/.env
|
||||
# Заполнить: POSTGRES_PASSWORD, JWT_SECRET, TELEGRAM_*, SAC_PUBLIC_URL
|
||||
```
|
||||
|
||||
### 3.3. Запуск
|
||||
|
||||
```bash
|
||||
cd /opt/security-alert-center/deploy
|
||||
sudo docker compose up -d
|
||||
sudo docker compose exec api alembic upgrade head
|
||||
```
|
||||
|
||||
### 3.4. Обновление
|
||||
|
||||
```bash
|
||||
git pull
|
||||
sudo docker compose build
|
||||
sudo docker compose up -d
|
||||
sudo docker compose exec api alembic upgrade head
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Вариант B: Native systemd
|
||||
|
||||
Пакеты:
|
||||
|
||||
```bash
|
||||
sudo apt install -y postgresql nginx python3.12 python3.12-venv
|
||||
```
|
||||
|
||||
- PostgreSQL: БД `sac`, пользователь `sac`
|
||||
- venv в `/opt/security-alert-center/.venv`
|
||||
- Units: `sac-api.service`, `sac-worker.service`
|
||||
- Static UI в `/var/www/sac/`
|
||||
- nginx site `/etc/nginx/sites-available/sac`
|
||||
|
||||
Детальные unit-файлы — при реализации фазы 1.
|
||||
|
||||
---
|
||||
|
||||
## 5. TLS
|
||||
|
||||
- Публичный: **certbot** + nginx
|
||||
- Внутренний: корпоративный CA, полный chain в nginx
|
||||
|
||||
Агенты должны доверять CA (или `SAC_TLS_SKIP_VERIFY=1` только для dev — **запрещено в prod**).
|
||||
|
||||
---
|
||||
|
||||
## 6. Резервное копирование
|
||||
|
||||
### 6.1. Ежедневный pg_dump
|
||||
|
||||
```bash
|
||||
# /etc/cron.d/sac-backup (пример)
|
||||
0 3 * * * postgres pg_dump -Fc sac > /var/backups/sac/sac_$(date +\%Y\%m\%d).dump
|
||||
```
|
||||
|
||||
Ротация: 14 daily + 4 weekly.
|
||||
|
||||
### 6.2. Восстановление (тест раз в месяц)
|
||||
|
||||
```bash
|
||||
pg_restore -d sac_restored /var/backups/sac/sac_YYYYMMDD.dump
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 7. Обслуживание
|
||||
|
||||
| Задача | Периодичность |
|
||||
|--------|---------------|
|
||||
| `unattended-upgrades` security | автоматически |
|
||||
| Проверка диска PostgreSQL | еженедельно |
|
||||
| Ротация логов nginx/app | logrotate |
|
||||
| Проверка `/health` | каждые 5 мин (Uptime Kuma / cron) |
|
||||
| Review Problems «хост мёртв» | ежедневно |
|
||||
| Тест restore БД | ежемесячно |
|
||||
|
||||
---
|
||||
|
||||
## 8. Мониторинг самого SAC
|
||||
|
||||
- `GET https://sac.example.com/health` → `200`, `"database": "ok"`
|
||||
- Алерт если нет ingest с активного хоста > 90 мин (настраивается)
|
||||
- Диск > 85% — алерт ОС
|
||||
|
||||
---
|
||||
|
||||
## 9. Создание API key для хоста
|
||||
|
||||
(После реализации UI)
|
||||
|
||||
1. Войти как admin → Hosts → Add / Generate API key.
|
||||
2. Скопировать ключ в `/etc/ssh-monitor.conf` или RDP-конфиг.
|
||||
3. `UseSAC=exclusive`, перезапуск агента.
|
||||
4. `--check-sac` на хосте.
|
||||
|
||||
---
|
||||
|
||||
## 10. Чеклист первого prod-развёртывания
|
||||
|
||||
- [ ] Ubuntu 24.04, hostname, DNS A-record
|
||||
- [ ] TLS работает
|
||||
- [ ] PostgreSQL backup настроен
|
||||
- [ ] `.env` не в git, chmod 600
|
||||
- [ ] Создан admin-пользователь
|
||||
- [ ] Telegram test notification
|
||||
- [ ] Тестовый ingest с одного Linux и одного Windows
|
||||
- [ ] Firewall: только нужные порты
|
||||
|
||||
---
|
||||
|
||||
## См. также
|
||||
|
||||
- [TZ.md](TZ.md) §5, §9
|
||||
- [agent-integration.md](agent-integration.md)
|
||||
Reference in New Issue
Block a user