Уточнено: порт 25 с интернета не проброшен; inbound-почта не через HAProxy.
3.5 KiB
Архитектура защиты
Поток трафика
Схема в 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.
Принципы
- Default deny на вход (UFW
incoming deny, бэкенды — только HAProxy + admin). - Минимум открытых портов с интернета на HAProxy: 80 и 443 (DNAT на MikroTik).
- Не дублировать смысл правил без нужды: allowlist в HAProxy для HTTP/SNI; UFW — транспорт и админ.
- Сначала dry-run, потом
--apply; для SSH — console/IPMI или сессия, которую UFW не оборвёт. - Логи: HAProxy + UFW + fail2ban; алерты на аномалии (Zabbix уже в инфраструктуре).