diff --git a/.gitignore b/.gitignore index 863ed52..1e40553 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,3 @@ -# Локальные копии списков с реальными IP (не коммитьте секреты) -trusted/rdp.lst +# Секреты и ключи *.pem *.key diff --git a/README.md b/README.md index 48776cd..84f0a91 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # reverse-proxy -Периметровая конфигурация **HAProxy** для сети **kalinamall.ru**: Exchange, RDS, 1С, почтовый шлюз KSMG, ограниченный RDP (SSH через HAProxy не публикуется). +Периметровая конфигурация **HAProxy** для сети **kalinamall.ru**: Exchange, RDS (веб/шлюз по HTTPS), 1С, почтовый шлюз KSMG. Прямой RDP (3389) через HAProxy не используется — клиенты идут через RDS на **443** (`rds.kalinamall.ru`). TLS: на целевых серверах используются **wildcard-сертификаты GlobalSign**; HAProxy на **443** работает в режиме **TCP + SNI** и **не терминирует** TLS — сертификаты остаются на бэкендах. @@ -141,9 +141,7 @@ git config --global credential.helper 'cache --timeout=28800' | RDS | `rds.kalinamall.ru` (**443** на HAProxy) | k6a-dc3.b26.kalinamall.ru — **192.168.160.40**, служба **4430** | 443 (SNI → внутр. **4430**) | | 1С | `erp.kalinamall.ru` | hp-serv.b26.kalinamall.ru — **192.168.160.150** | 443 | | Почтовый шлюз (KSMG) | `ksmg.kalinamall.ru` | ksmg.kalinamall.ru — **192.168.160.57** | 25 | -| RDP | (публичный IP / DNS при необходимости) | itis.b26.kalinamall.ru — **192.168.160.198** | 3389 | - -DNS: записи **A** для `ext`, **`autodiscover`**, `rds`, `erp`, `ksmg` (и при необходимости для RDP) должны указывать на **публичный IP** хоста с HAProxy. Имя `autodiscover.kalinamall.ru` должно быть в **SAN** wildcard `*.kalinamall.ru` или отдельно в сертификате на Exchange. +DNS: записи **A** для `ext`, **`autodiscover`**, `rds`, `erp`, `ksmg` должны указывать на **публичный IP** хоста с HAProxy. Имя `autodiscover.kalinamall.ru` должно быть в **SAN** wildcard `*.kalinamall.ru` или отдельно в сертификате на Exchange. Доступ по **SSH** к внутренним хостам (например Ubuntu **192.168.160.85**) в этом репозитории **не** настраивается через HAProxy — организуйте отдельно (прямой проброс, VPN, бастион и т.д.). @@ -197,14 +195,7 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg sudo cp ~/reverse-proxy/haproxy.cfg /etc/haproxy/haproxy.cfg ``` -3. Белый список IP для RDP: - ```bash - sudo mkdir -p /etc/haproxy/trusted - sudo cp trusted/rdp.lst.example /etc/haproxy/trusted/rdp.lst - ``` - Отредактируйте `rdp.lst`: укажите свои подсети и IP (по одному адресу или CIDR на строку). Удалите заглушку `127.0.0.1/32`, когда появятся реальные адреса. - -4. Проверка и перезапуск: +3. Проверка и перезапуск: ```bash sudo haproxy -c -f /etc/haproxy/haproxy.cfg sudo systemctl reload haproxy @@ -216,7 +207,7 @@ sudo haproxy -c -f /etc/haproxy/haproxy.cfg ## Порты на фаерволе -На хосте с HAProxy с интернета обычно открывают только то, что слушает конфиг: **25**, **3389**, **443** (и при использовании — **8404** для stats). Остальной трафик — по политике безопасности. +На хосте с HAProxy с интернета обычно открывают только то, что слушает конфиг: **25**, **443** (и при использовании — **8404** для stats). Остальной трафик — по политике безопасности. ## Лицензия diff --git a/haproxy.cfg b/haproxy.cfg index 3fe96f4..4a1ea35 100644 --- a/haproxy.cfg +++ b/haproxy.cfg @@ -2,7 +2,7 @@ # Режим: TCP + SNI на 443 (TLS end-to-end, сертификаты GlobalSign wildcard на бэкендах) # # Проверка синтаксиса: haproxy -c -f haproxy.cfg -# Установка: скопируйте в /etc/haproxy/haproxy.cfg и подставьте пути к trusted/*.lst +# Установка: скопируйте в /etc/haproxy/haproxy.cfg global log stdout format raw local0 @@ -71,20 +71,6 @@ frontend fe_smtp backend be_ksmg_smtp server ksmg 192.168.160.57:25 check -# ----------------------------------------------------------------------------- -# RDP (3389): itis.b26.kalinamall.ru → 192.168.160.198 -# Доступ только с адресов из trusted/rdp.lst (одна сеть или IP на строку) -# ----------------------------------------------------------------------------- - -frontend fe_rdp - bind *:3389 - acl trusted_rdp src -f /etc/haproxy/trusted/rdp.lst - tcp-request connection reject if !trusted_rdp - default_backend be_rdp - -backend be_rdp - server itis 192.168.160.198:3389 - # ----------------------------------------------------------------------------- # Опционально: статистика (раскомментируйте и задайте пароль) # ----------------------------------------------------------------------------- diff --git a/trusted/rdp.lst.example b/trusted/rdp.lst.example deleted file mode 100644 index 26fe2b0..0000000 --- a/trusted/rdp.lst.example +++ /dev/null @@ -1 +0,0 @@ -127.0.0.1/32