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:
@@ -13,7 +13,7 @@ TLS: HAProxy на **443** в режиме **TCP + SNI**, **не терминир
|
||||
| Служба | Внешнее имя (клиенты) | Внутренний хост / IP | Порт | Allowlist |
|
||||
|--------|------------------------|----------------------|------|-----------|
|
||||
| Microsoft Exchange (OWA и т.д.) | `ext.kalinamall.ru` | fifth.kalinamall.ru — **192.168.160.42** | 443 | нет |
|
||||
| Autodiscover | `autodiscover.kalinamall.ru` | тот же Exchange — **192.168.160.42** | 443 | нет |
|
||||
| Autodiscover | `autodiscover.kalinamall.ru` | тот же Exchange — **192.168.160.42** | 443; **80** (HTTP Autodiscover → Exchange) | нет |
|
||||
| RDS | `rds.kalinamall.ru` | k6a-dc3 — **192.168.160.40**, служба **4430** | 443 → 4430 | **`rds-allowed`** |
|
||||
| 1С | `erp.kalinamall.ru` | hp-serv — **192.168.160.150** | 443 | **`1c-allowed`** |
|
||||
| Git (HTTPS) | `git.kalinamall.ru` | **192.168.160.129** | 443 | **`git-sac-allowed`** |
|
||||
@@ -26,7 +26,31 @@ TLS: HAProxy на **443** в режиме **TCP + SNI**, **не терминир
|
||||
|
||||
DNS: **A** для `ext`, `autodiscover`, `rds`, `erp`, `git`, `sac`, **`sac-api`**, **`zabbix`**, **`heap`**, **`exchange`** → публичный IP HAProxy. Inbound SMTP (**25**) с интернета на HAProxy **не** пробрасывается; `ksmg` / MX — отдельная схема (см. [security/architecture.md](docs/security/architecture.md)).
|
||||
|
||||
Снаружи Zabbix — **`http://zabbix.kalinamall.ru`**. Synology DSM — **`https://heap.kalinamall.ru`**, **`https://exchange.kalinamall.ru`** (TLS на NAS, wildcard `*.kalinamall.ru`). Имя **`exchange.kalinamall.ru`** — NAS, не OWA (**`ext.kalinamall.ru`**).
|
||||
Снаружи Zabbix — **`http://zabbix.kalinamall.ru`**. Outlook при настройке почты на **`ext.kalinamall.ru`** шлёт **HTTP Autodiscover** на `:80` (`/autodiscover/autodiscover.xml`) — HAProxy проксирует на Exchange **192.168.160.42:80**, без allowlist (как HTTPS OWA). Synology DSM — **`https://heap.kalinamall.ru`**, **`https://exchange.kalinamall.ru`** (TLS на NAS, wildcard `*.kalinamall.ru`). Имя **`exchange.kalinamall.ru`** — NAS, не OWA (**`ext.kalinamall.ru`**).
|
||||
|
||||
### Порт 80: Zabbix и Outlook (Autodiscover)
|
||||
|
||||
До **0.7.8** весь `:80` обрабатывался как «только Zabbix»: любой другой `Host` (в т.ч. Autodiscover при настройке Outlook) получал **403**, fail2ban jail **`haproxy-zabbix-403`** банил IP на сутки через UFW — пользователь мог не знать про Zabbix.
|
||||
|
||||
С **0.7.8** frontend **`fe_http`**:
|
||||
|
||||
| Host / путь | Куда | Allowlist |
|
||||
|-------------|------|-----------|
|
||||
| `autodiscover.kalinamall.ru` | Exchange `.42:80` | нет |
|
||||
| `ext.kalinamall.ru` + `/autodiscover/*` | Exchange `.42:80` | нет |
|
||||
| `zabbix.kalinamall.ru` | Zabbix `.53:80` | **`zabbix-allowed`** |
|
||||
| прочее | **404** (не 403) | — |
|
||||
|
||||
fail2ban **`haproxy-zabbix-403`**: только **403** на Zabbix с IP вне allowlist; в filter добавлен **`ignoreregex`** для `/autodiscover/`.
|
||||
|
||||
После деплоя на **192.168.160.117**:
|
||||
|
||||
```bash
|
||||
sudo haproxy -c -f /etc/haproxy/haproxy.cfg && sudo systemctl reload haproxy
|
||||
sudo cp ~/reverse-proxy/scripts/security/fail2ban/haproxy-zabbix-403.conf /etc/fail2ban/filter.d/
|
||||
sudo fail2ban-client reload
|
||||
sudo fail2ban-client set haproxy-zabbix-403 unbanip 5.143.32.177 # если ещё забанен
|
||||
```
|
||||
|
||||
Если после **Git** в том же браузере **SAC** показывает Gitea — см. [SAC, Seaca и coalescing](docs/sac-access.md).
|
||||
|
||||
|
||||
Reference in New Issue
Block a user