docs(pilot): ПИЛОТ.md §7 — фирменная исходящая почта verify@liderra.ru (Яндекс 360)

SMTP smtp.yandex.ru:465 от verify@liderra.ru работает (MX/SPF/DKIM на reg.ru
подтверждены). SEC-4 «нет MTA» → email-канал появился. NB: фича регистрации
по коду в ветке feat/test-deploy, на боевой сервер кодом ещё не выкачена.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Дмитрий
2026-05-22 07:37:39 +03:00
parent 438c066b8e
commit 351186cee9
+12 -3
View File
@@ -8,7 +8,7 @@
- Волатильную часть (доступ, версии, что развёрнуто) перед рискованными действиями **перепроверять реальной командой по SSH**, не доверять снимку вслепую.
- Обновляется по команде заказчика **«обнови пилот»**.
**Снимок снят:** 22.05.2026 — развёрнут серверный слой безопасности (HTTPS, fail2ban, бэкапы, мониторинг, WAF) + расширения БД pg_audit/pg_anonymizer + Lockbox-хранилище секретов; **APP_URL переведён на `https://liderra.ru`** + SANCTUM-домены.
**Снимок снят:** 22.05.2026 — развёрнут серверный слой безопасности (HTTPS, fail2ban, бэкапы, мониторинг, WAF) + расширения БД pg_audit/pg_anonymizer + Lockbox-хранилище секретов; **APP_URL переведён на `https://liderra.ru`** + SANCTUM-домены; **настроена фирменная исходящая почта `verify@liderra.ru`** (Яндекс 360 — §7).
---
@@ -38,7 +38,7 @@
- **SEC-6 HTTPS** ✅ — Let's Encrypt `liderra.ru`+`www` (истекает 2026-08-20, авто-обновление certbot). nginx 2 блока: :80 редиректит на https **кроме** `/.well-known/acme-challenge/` и `/api/webhook/`; :443 — приложение. Заголовки: `HSTS max-age=604800`, `X-Frame-Options SAMEORIGIN`, `X-Content-Type-Options nosniff`, `Referrer-Policy`. **CSP — не задан** (отложен, рискован для Vue; делать в Report-Only).
- **SEC-2 анти-перебор** ✅ — прикладной throttle логина (5 попыток, лок по email+IP) + **fail2ban** (`/etc/fail2ban/jail.local`: jails `sshd` + `nginx-http-auth`, bantime 1h). NB: ~1400 неудачных SSH-попыток/сутки — fail2ban банит.
- **SEC-4 мониторинг** ✅ (лёгкий) — `/usr/local/bin/liderra-security-report.sh` cron ежедневно 07:00 → `/var/log/liderra-security-report.log` (диск/память/срок сертификата/баны/неудачные входы/5xx/401/БД). **Sentry — отложен** (2 ГБ RAM мало). Email/Telegram-алертинг — нет (нет MTA).
- **SEC-4 мониторинг** ✅ (лёгкий) — `/usr/local/bin/liderra-security-report.sh` cron ежедневно 07:00 → `/var/log/liderra-security-report.log` (диск/память/срок сертификата/баны/неудачные входы/5xx/401/БД). **Sentry — отложен** (2 ГБ RAM мало). Email-алертинг теперь возможен (исходящая почта появилась — §7); Telegram — нет.
- **SEC-1 WAF** ✅ (наблюдение) — ModSecurity + OWASP CRS 3.3.5 (**1828 правил**), режим **DetectionOnly** (логирует, не блокирует). Конфиг `/etc/modsecurity/modsecurity.conf` + `/etc/nginx/modsec/main.conf` (не `owasp-crs.load` — Apache-`IncludeOptional` несовместим с nginx-коннектором). Audit-лог `/var/log/modsec_audit.log`. **Перевод в блокировку** (`SecRuleEngine On`) — после анализа false-positive (особенно webhook-payload).
- **SEC-5 Lockbox** ✅ (хранилище заведено) — см. §5. **App-интеграция не сделана** (приложение читает секреты из файла + `.env`; реальная польза — после доработки).
- **SEC-3 DDoS** ⏸ отложен — базовая сетевая защита YC бесплатна и активна; продвинутая платная (подписка + 976 ₽/Мбит/с + смена IP/DNS) — избыточна. Альтернатива: бесплатный Cloudflare перед сайтом.
@@ -63,6 +63,15 @@
7. **`SESSION_SECURE_COOKIE=true`** (опционально — куки только по HTTPS; разлогинит текущие сессии).
8. Sync runbook `docs/deploy/test-server-runbook.md` (ветка feat/test-deploy) с этим состоянием.
> ✅ Закрыто 22.05: APP_URL → https://liderra.ru + SANCTUM-домены (см. §2).
## 7. Почта (исходящая, фирменная)
-**Настроена 22.05** — портал может слать письма (коды подтверждения регистрации и т.п.) с фирменного адреса **`verify@liderra.ru`** (имя «Лидерра»). Раньше MTA не было.
- **Через Яндекс 360 для бизнеса** (организация id `8491092`, аккаунт-владелец Sasha261185@yandex.ru). `verify@liderra.ru` — отдельный ящик-сотрудник (НЕ алиас личного аккаунта).
- **SMTP:** `smtp.yandex.ru:465` (SSL, `MAIL_SCHEME=smtps`), логин `verify@liderra.ru`, пароль ящика. Пароль приложения НЕ нужен (у орг-ящика 2FA off + протоколы IMAP/SMTP включены). **NB:** новый орг-ящик требует первого входа на mail.yandex.ru + принятия соглашения, иначе SMTP отдаёт `535 accept EULA first`.
- **DNS почты** (reg.ru, домен liderra.ru): MX `→ mx.yandex.net.` (10), SPF `v=spf1 redirect=_spf.yandex.net`, DKIM `mail._domainkey`, TXT-подтверждение домена. Все подтверждены в Яндекс 360 → письма не в спам.
- **Конфиг:** `MAIL_*` в `.env` (host/port/scheme/username/password/`from=verify@liderra.ru`/`from_name=Лидерра`). На боевом сервере при деплое прописать те же `MAIL_*` (пароль ящика — секрет, в git нет; кандидат в Lockbox).
- ⚠️ **Фича «регистрация по коду + обязательный телефон»** — в ветке `feat/test-deploy` (`0e31783`), на боевой сервер **кодом ещё НЕ выкачена** (деплой копированием, §2). Письма-коды на проде заработают после деплоя этой версии.
> ✅ Закрыто 22.05: APP_URL → https://liderra.ru + SANCTUM-домены (см. §2); фирменная исходящая почта (см. §7).
>
> ⚠️ Снимок волатилен. Истина — реальные команды по SSH (`systemctl is-active …`, `nginx -T`, `yc …` при наличии доступа).