# Архитектура защиты ## Поток трафика ![Поток трафика](architecture-flow.svg) Схема в SVG — без Mermaid, чтобы Gitea/Firefox не ломали рендер из‑за `
` в XML. Та же схема текстом: ```text Интернет → MikroTik (DNAT) → HAProxy .117 (25/80/443) → ACL (SNI/Host) → бэкенды .160.0/24 ``` ## Два контура ### 1. Публичный вход (через HAProxy) Клиент → публичный IP → **HAProxy** → (проверки) → один бэкенд. На HAProxy уже есть: - **443/TCP**: отклонение неизвестного SNI; allowlist для git, sac-web, rds, erp, syno. - **80/HTTP**: только `Host: zabbix.kalinamall.ru` + `zabbix-allowed`. - **25/SMTP**: passthrough на KSMG без IP-фильтра на frontend. ### 2. Внутренняя сеть (LAN / VPN) Трафик **мимо HAProxy** возможен, если: - есть VPN в `192.168.160.0/24`; - бэкенд слушает на LAN без host firewall; - RDP/RDP Gateway по внутренним адресам. Защита: **UFW на бэкендах** + политика «сервисный порт только с `.117`», админ-доступ — отдельные правила. ## IP HAProxy (источник для бэкендов) | Имя | IP | |-----|-----| | haproxy.kalinamall.ru | **192.168.160.117** | Health-check HAProxy и прокси идут **с этого IP**. Правила на бэкендах должны разрешать его явно. ## Матрица: кто фильтрует что | Угроза | MikroTik | UFW HAProxy | HAProxy cfg | UFW бэкенд | Приложение | |--------|----------|-------------|-------------|------------|------------| | Сканирование портов | ✓ | ✓ | — | ✓ | — | | Неверный SNI / Host | — | — | ✓ | — | — | | Доступ не из allowlist | — | — | ✓ | — | ✓ | | Прямой удар в бэкенд | ✓ | — | — | ✓ | — | | Brute SSH на HAProxy | ✓ | ✓ | — | — | fail2ban | | DDoS L4 | ✓ | частично | conn limits* | — | — | \* Опционально: `maxconn`, rate-limit на frontend (Enterprise / custom); на 2.8 — sysctl, MikroTik, внешний scrubbing. ## Принципы 1. **Default deny** на вход (UFW `incoming deny`, бэкенды — только HAProxy + admin). 2. **Минимум открытых портов** с интернета: 25, 80, 443 на одном хосте. 3. **Не дублировать** смысл правил без нужды: allowlist в HAProxy для HTTP/SNI; UFW — транспорт и админ. 4. **Сначала dry-run**, потом `--apply`; для SSH — **console/IPMI** или сессия, которую UFW не оборвёт. 5. **Логи**: HAProxy + UFW + fail2ban; алерты на аномалии (Zabbix уже в инфраструктуре).