Files
reverse-proxy/docs/security/architecture.md
T
Andrey Lutsenko e3201ae41b docs: периметр MikroTik — на HAProxy только 80/443
Уточнено: порт 25 с интернета не проброшен; inbound-почта не через HAProxy.
2026-06-13 22:24:48 +10:00

3.5 KiB
Raw Blame History

Архитектура защиты

Поток трафика

Поток трафика

Схема в SVG — без Mermaid, чтобы Gitea/Firefox не ломали рендер из‑за <br> в XML.

Та же схема текстом:

Интернет → MikroTik (DNAT 80/443) → HAProxy .117 → ACL (SNI/Host) → бэкенды .160.0/24

Периметр MikroTik: с интернета на HAProxy проброшены только 80 и 443. Порт 25 (и прочие) на HAProxy снаружи недоступны — DNAT не настроен.

Два контура

1. Публичный вход (через HAProxy)

Клиент → публичный IP → MikroTik (DNAT 80/443)HAProxy → (проверки) → один бэкенд.

На HAProxy с интернета доступны только:

  • 443/TCP: отклонение неизвестного SNI; allowlist для git, sac-web, rds, erp, syno.
  • 80/HTTP: только Host: zabbix.kalinamall.ru + zabbix-allowed.

25/SMTP в haproxy.cfg слушает на хосте, но с интернета не проброшен (MikroTik DNAT только 80/443). Inbound-почта на KSMG идёт не через HAProxy:25 с периметра.

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. Минимум открытых портов с интернета на HAProxy: 80 и 443 (DNAT на MikroTik).
  3. Не дублировать смысл правил без нужды: allowlist в HAProxy для HTTP/SNI; UFW — транспорт и админ.
  4. Сначала dry-run, потом --apply; для SSH — console/IPMI или сессия, которую UFW не оборвёт.
  5. Логи: HAProxy + UFW + fail2ban; алерты на аномалии (Zabbix уже в инфраструктуре).