# 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 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 проброшены только **80/443** — inbound SMTP **не** приходит на **HAProxy:25**. Почта с периметра идёт **напрямую на KSMG** (или иным маршрутом), минуя HAProxy. `fe_smtp` в `haproxy.cfg` — для **LAN** (прокси на KSMG с `.117`). На KSMG в `EXTRA_ALLOWED` укажите **192.168.160.117**, если этот путь используется. IP внешних MTA, шлющих **напрямую** на `.57`, тоже нужно явно разрешить — иначе после 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**.