# Архитектура защиты ## Периметр (MikroTik) | С интернета | DNAT на | Порт | |-------------|---------|------| | HTTP/HTTPS | **HAProxy** `192.168.160.117` | **80**, **443** | | SMTP | **KSMG** `192.168.160.57` | **25** | На HAProxy с интернета **только 80 и 443**. Порт **25** на HAProxy **не проброшен**. ## Потоки ![Поток трафика](architecture-flow.svg) ```text Интернет ──80/443──► MikroTik ──► HAProxy .117 ── ACL (SNI/Host) ──► бэкенды .160.0/24 Интернет ──25──────► MikroTik ──► KSMG .57 ``` ### Через HAProxy (80/443) - **443**: reject неизвестного SNI; allowlist — git, sac-web, rds, erp, syno; без allowlist — Exchange, sac-api. - **80**: только `Host: zabbix.kalinamall.ru` + `zabbix-allowed`. Прокси и health-check идут **с IP `.117`**. Бэкенды должны разрешать этот источник (UFW на бэкендах — **позже**, см. [backend-hosts.md](backend-hosts.md)). ### Мимо HAProxy - **Почта**: inbound SMTP → **напрямую KSMG** (не через `fe_smtp` на `.117`). - **LAN/VPN**: прямой доступ к бэкендам, RDP, SSH — если нет host firewall. ## Текущий этап: UFW на HAProxy Сейчас внедряем только [haproxy-host.md](haproxy-host.md) — UFW на `.117`: | Порт | Кому | |------|------| | **22** | `SSH_ALLOWED`: `5.100.81.121`, `192.168.128.0/17` | | **8404** (stats) | тот же список (если frontend включён) | | **80**, **443** | все | | остальное | deny (в т.ч. **25** на HAProxy) | ## Матрица фильтрации | Угроза | MikroTik | UFW HAProxy | HAProxy cfg | UFW бэкенд* | Приложение | |--------|----------|-------------|-------------|-------------|------------| | Лишние порты с интернета | ✓ | ✓ | — | — | — | | Неверный SNI / Host | — | — | ✓ | — | — | | Не из allowlist | — | — | ✓ | — | ✓ | | Прямой удар в бэкенд | частично | — | — | ✓ | — | | Brute SSH | — | ✓ | — | — | fail2ban† | | SMTP-спам на KSMG | — | — | — | ✓‡ | KSMG | \* Бэкенды — следующий этап. † Рекомендуется, не в scope текущего UFW. ‡ KSMG — периметровый хост для **25**, отдельный план. ## Принципы 1. **Default deny** на вход (UFW `incoming deny`). 2. Периметр на MikroTik — источник истины для DNAT; UFW на HAProxy — defense in depth + SSH. 3. Allowlist в `haproxy.cfg` для 443/80; UFW не дублирует SNI/Host. 4. UFW: сначала dry-run, потом `--apply`; держать вторую SSH-сессию.