8e2a4ac1b9
Переписаны docs/security под текущий этап: SSH/stats из SSH_ALLOWED, 80/443 для всех. Скрипт UFW дополнен правилом 8404.
65 lines
2.9 KiB
Markdown
65 lines
2.9 KiB
Markdown
# Архитектура защиты
|
||
|
||
## Периметр (MikroTik)
|
||
|
||
| С интернета | DNAT на | Порт |
|
||
|-------------|---------|------|
|
||
| HTTP/HTTPS | **HAProxy** `192.168.160.117` | **80**, **443** |
|
||
| SMTP | **KSMG** `192.168.160.57` | **25** |
|
||
|
||
На HAProxy с интернета **только 80 и 443**. Порт **25** на HAProxy **не проброшен**.
|
||
|
||
## Потоки
|
||
|
||

|
||
|
||
```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-сессию.
|