fix(haproxy): Autodiscover на :80 и точный fail2ban для Zabbix
Outlook при настройке ext.kalinamall.ru слал GET /autodiscover/autodiscover.xml на порт 80; старый fe_http_zabbix отвечал 403 всем не-zabbix Host, fail2ban банил клиента на сутки. fe_http проксирует Autodiscover на Exchange :80, 403 только для zabbix вне allowlist, ignoreregex для /autodiscover/.
This commit is contained in:
@@ -67,7 +67,7 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
|
||||
**Полный план:** [docs/security/README.md](security/README.md) — UFW, бэкенды, чеклист, скрипты `scripts/security/`.
|
||||
|
||||
Порт **80** используется для **`http://zabbix.kalinamall.ru`** (allowlist `zabbix-allowed`). Для ACME на других именах см. [letsencrypt-acme.md](letsencrypt-acme.md) — потребуется расширить `fe_http_zabbix` маршрутизацией по Host/пути.
|
||||
Порт **80**: **`fe_http`** — Exchange Autodiscover (`autodiscover`, `ext` + `/autodiscover/*`) и **`http://zabbix.kalinamall.ru`** (allowlist `zabbix-allowed`). Для ACME на других именах см. [letsencrypt-acme.md](letsencrypt-acme.md).
|
||||
|
||||
## SAC и Seaca (sac-api)
|
||||
|
||||
@@ -90,6 +90,13 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg
|
||||
curl -sI --resolve zabbix.kalinamall.ru:80:ПУБЛИЧНЫЙ_IP http://zabbix.kalinamall.ru/
|
||||
```
|
||||
|
||||
Проверка Autodiscover (без allowlist, как Outlook):
|
||||
|
||||
```bash
|
||||
curl -sI --resolve autodiscover.kalinamall.ru:80:ПУБЛИЧНЫЙ_IP http://autodiscover.kalinamall.ru/autodiscover/autodiscover.xml
|
||||
# ожидается не 403 (обычно 301/302 на HTTPS или 401 от Exchange)
|
||||
```
|
||||
|
||||
## Synology DSM (heap, exchange)
|
||||
|
||||
| Имя | NAS | Порт DSM |
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
### Через HAProxy (80/443)
|
||||
|
||||
- **443**: reject неизвестного SNI; allowlist — git, sac-web, rds, erp, syno; без allowlist — Exchange, sac-api.
|
||||
- **80**: только `Host: zabbix.kalinamall.ru` + `zabbix-allowed`.
|
||||
- **80**: `autodiscover.kalinamall.ru` и `ext.kalinamall.ru/autodiscover/*` → Exchange (без allowlist); `zabbix.kalinamall.ru` + `zabbix-allowed`; прочие Host → 404.
|
||||
|
||||
Прокси и health-check идут **с IP `.117`**. Бэкенды должны разрешать этот источник (UFW на бэкендах — **позже**, см. [backend-hosts.md](backend-hosts.md)).
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
| Git (Gitea) | 192.168.160.129 | 443 | be_git |
|
||||
| SAC | 192.168.160.145 | 443 | be_sac |
|
||||
| Zabbix | 192.168.160.53 | 80 | be_zabbix |
|
||||
| Exchange (HTTP Autodiscover) | 192.168.160.42 | 80 | be_exchange_http |
|
||||
| Synology heap | 192.168.160.185 | 5001 | be_syno_heap |
|
||||
| Synology exchange | 192.168.160.35 | 5001 | be_syno_exchange |
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
|------|--------|------------------------|---------------------|
|
||||
| 22 | sshd | нет DNAT | только `SSH_ALLOWED` |
|
||||
| 25 | fe_smtp → KSMG | **нет** (25 → `.57`) | **закрыт** |
|
||||
| 80 | fe_http_zabbix | да | все |
|
||||
| 80 | fe_http (Autodiscover + Zabbix) | да | все |
|
||||
| 443 | fe_https_sni | да | все |
|
||||
| 8404 | stats (закомментирован) | нет | только `SSH_ALLOWED` |
|
||||
|
||||
@@ -94,7 +94,7 @@ Inbound-почта с интернета идёт на **KSMG `.57`**, не на
|
||||
| Jail | Что ловит |
|
||||
|------|-----------|
|
||||
| `haproxy-reject` | JSON: `"be":"fe_https_sni","srv":"<NOSRV>"` — сканеры, чужой SNI, allowlist reject |
|
||||
| `haproxy-zabbix-403` | httplog: `fe_http_zabbix` + `403` |
|
||||
| `haproxy-zabbix-403` | httplog: `fe_http` + **403** только при доступе к Zabbix с IP вне `zabbix-allowed` (не Autodiscover) |
|
||||
|
||||
```bash
|
||||
sudo apt install -y fail2ban
|
||||
|
||||
Reference in New Issue
Block a user