8e2a4ac1b9
Переписаны docs/security под текущий этап: SSH/stats из SSH_ALLOWED, 80/443 для всех. Скрипт UFW дополнен правилом 8404.
2.9 KiB
2.9 KiB
Архитектура защиты
Периметр (MikroTik)
| С интернета | DNAT на | Порт |
|---|---|---|
| HTTP/HTTPS | HAProxy 192.168.160.117 |
80, 443 |
| SMTP | KSMG 192.168.160.57 |
25 |
На HAProxy с интернета только 80 и 443. Порт 25 на HAProxy не проброшен.
Потоки
Интернет ──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).
Мимо HAProxy
- Почта: inbound SMTP → напрямую KSMG (не через
fe_smtpна.117). - LAN/VPN: прямой доступ к бэкендам, RDP, SSH — если нет host firewall.
Текущий этап: UFW на HAProxy
Сейчас внедряем только 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, отдельный план.
Принципы
- Default deny на вход (UFW
incoming deny). - Периметр на MikroTik — источник истины для DNAT; UFW на HAProxy — defense in depth + SSH.
- Allowlist в
haproxy.cfgдля 443/80; UFW не дублирует SNI/Host. - UFW: сначала dry-run, потом
--apply; держать вторую SSH-сессию.