Files
reverse-proxy/docs/security/backend-hosts.md
T

89 lines
3.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Firewall на бэкендах
Цель: сервисный порт доступен **с HAProxy** (`192.168.160.117`) и при необходимости с **admin**-подсетей; **не** с произвольного LAN/Internet напрямую.
Скрипт: [backend-ufw-from-haproxy.sh](../../scripts/security/backend-ufw-from-haproxy.sh).
## Таблица бэкендов
| Сервис | IP | Порт | Протокол | HAProxy backend | Примечание |
|--------|-----|------|----------|-----------------|------------|
| Exchange | 192.168.160.42 | 443 | TCP | be_exchange | OWA, ActiveSync |
| RDS Gateway | 192.168.160.40 | **4430** | TCP | be_rds | не 443 |
| 1С ERP | 192.168.160.150 | 443 | TCP | be_erp | |
| Git (Gitea) | 192.168.160.129 | 443 | TCP | be_git | SSH Gitea 2222 — отдельно |
| SAC | 192.168.160.145 | 443 | TCP | be_sac | |
| Zabbix | 192.168.160.53 | **80** | TCP | be_zabbix | HTTP |
| Synology heap | 192.168.160.185 | **5001** | TCP | be_syno_heap | DSM HTTPS |
| Synology exchange | 192.168.160.35 | **5001** | TCP | be_syno_exchange | |
| KSMG | 192.168.160.57 | 25 | TCP | be_ksmg_smtp | см. ниже |
## Шаблон правил (логика)
```
allow from 192.168.160.117 to <PORT>
allow from ADMIN_ALLOWED to 22/tcp # SSH, если на этом хосте
allow from LAN to ... # только если нужен прямой доступ (минимизировать)
deny incoming (default)
```
### Пример env для Git (192.168.160.129)
```bash
HAPROXY_IP=192.168.160.117
BACKEND_PORT=443
ADMIN_ALLOWED="192.168.160.0/24"
UFW_EXTRA_SERVICES="2222/tcp" # если Gitea SSH с admin LAN
```
## Особые случаи
### KSMG (192.168.160.57:25)
Почта с интернета приходит на **HAProxy:25** → KSMG. На KSMG в `EXTRA_ALLOWED` укажите **192.168.160.117**. Если другие MTA шлют **напрямую** на `.57` (минуя HAProxy), их IP тоже нужно явно разрешить — иначе после UFW почта встанет.
### RDS (192.168.160.40)
Порт **4430**, не 443. VPN-клиенты с прямым RDP на `.3` / `.40` обходят HAProxy — ограничивать **3389/4430** на session hosts отдельной GPO/файрволом.
### Synology
DSM может требовать доп. порты (5000, 5001, relay). Для доступа **только через HAProxy** достаточно **5001** с `.117`. Прямой доступ к NAS с LAN — отключить или ограничить в DSM **Панель → Безопасность → Брандмауэр**.
### Exchange
Внутренние клиенты Outlook могут ходить **напрямую** на `.42` по LAN — UFW не сломать без списка подсетей Exchange. Варианты:
- разрешить `192.168.160.0/24` на 443 (шире);
- или только `.117` + подсеть Exchange DAG/clients (уже).
### Windows vs Linux
Скрипт UFW — для **Linux**. Для Windows (Exchange, RDS, 1С) — **Windows Firewall with Advanced Security**: inbound allow **Remote IP** `192.168.160.117`, порт сервиса.
## Развёртывание на Linux-бэкенде
```bash
sudo mkdir -p /etc/haproxy/security
sudo cp backend-ufw.env.example /etc/haproxy/security/backend-ufw.env
sudo nano /etc/haproxy/security/backend-ufw.env
sudo bash backend-ufw-from-haproxy.sh
sudo bash backend-ufw-from-haproxy.sh --apply
```
## Проверка
С **HAProxy** (или симуляция):
```bash
curl -kI --resolve git.kalinamall.ru:443:ПУБЛИЧНЫЙ_IP https://git.kalinamall.ru/
```
С **другого** LAN-хоста (не .117):
```bash
curl -kI --connect-timeout 3 https://192.168.160.129/ # ожидается timeout/refused
```
В логе HAProxy — backend **UP**.