docs(security): периметр 80/443→HAProxy, 25→KSMG; UFW на .117

Переписаны docs/security под текущий этап: SSH/stats из SSH_ALLOWED,
80/443 для всех. Скрипт UFW дополнен правилом 8404.
This commit is contained in:
Andrey Lutsenko
2026-06-13 22:34:57 +10:00
parent e3201ae41b
commit 8e2a4ac1b9
9 changed files with 259 additions and 406 deletions
+24 -38
View File
@@ -1,54 +1,40 @@
# Безопасность периметра HAProxy (kalinamall.ru)
# Безопасность kalinamall.ru
План защиты хоста **haproxy.kalinamall.ru** и **бэкендов** за ним. HAProxy слушает **25**, **80**, **443**; с **интернета** (MikroTik DNAT) доступны только **80** и **443**. Фильтрация по SNI/Host и allowlist уже в `haproxy.cfg`, но **UFW на хосте inactive** — ниже поэтапное включение **defense in depth**.
Защита **haproxy.kalinamall.ru** (`192.168.160.117`) и бэкендов за ним.
## Модель угроз (кратко)
## Периметр
| Уровень | Что закрывает |
|---------|----------------|
| **MikroTik / провайдер** | DDoS, geo; DNAT на HAProxy только **80/443** |
| **UFW на HAProxy** | SSH с доверенных IP; **80/443****25** только если нужен с LAN) |
| **HAProxy ACL** | Неизвестный SNI, allowlist по сервисам |
| **UFW на бэкендах** | Сервисы доступны **только с IP HAProxy** (`192.168.160.117`) |
| **Приложение** | Auth OWA, RD Gateway, Gitea, SAC, 1С |
- **80/443** с интернета → HAProxy `.117` → бэкенды (ACL в `haproxy.cfg`).
- **25** с интернета → **KSMG** `.57` напрямую (мимо HAProxy).
Обход HAProxy (VPN в `192.168.160.0/24`, прямой RDP) — отдельная политика; см. [backend-hosts.md](backend-hosts.md).
## Сейчас: UFW на HAProxy
## Документы
| Документ | Назначение |
|----------|------------|
| [architecture.md](architecture.md) | Схема, зоны, матрица |
| [haproxy-host.md](haproxy-host.md) | **UFW и правила** — основной документ для внедрения |
| [deployment-plan.md](deployment-plan.md) | Пошаговый план (фаза 2 = UFW, стоп) |
| [checklist.md](checklist.md) | Проверки после UFW |
| Файл | Содержание |
|------|------------|
| [architecture.md](architecture.md) | Схема потоков, зоны, принципы |
| [haproxy-host.md](haproxy-host.md) | Hardening Ubuntu, UFW, SSH, fail2ban, HAProxy |
| [backend-hosts.md](backend-hosts.md) | Правила для каждого бэкенда |
| [deployment-plan.md](deployment-plan.md) | **Пошаговый план** внедрения (фазы 0–5) |
| [checklist.md](checklist.md) | Проверки после внедрения |
**Позже** (не в текущем scope): [backend-hosts.md](backend-hosts.md), UFW на KSMG и бэкендах.
## Скрипты
| Скрипт | Назначение |
|--------|------------|
| [scripts/security/haproxy-ufw-apply.sh](../../scripts/security/haproxy-ufw-apply.sh) | UFW на HAProxy (dry-run по умолчанию) |
| [scripts/security/haproxy-ufw.env.example](../../scripts/security/haproxy-ufw.env.example) | Пример env для HAProxy |
| [scripts/security/backend-ufw-from-haproxy.sh](../../scripts/security/backend-ufw-from-haproxy.sh) | UFW на бэкенде: порт только с HAProxy |
| [scripts/security/backend-ufw.env.example](../../scripts/security/backend-ufw.env.example) | Пример env для бэкенда |
## Быстрый старт (после чтения deployment-plan)
```bash
# на HAProxy — сначала dry-run
sudo mkdir -p /etc/haproxy/security
sudo cp ~/reverse-proxy/scripts/security/haproxy-ufw.env.example /etc/haproxy/security/haproxy-ufw.env
sudo nano /etc/haproxy/security/haproxy-ufw.env # SSH_ALLOWED, при необходимости порты
sudo bash ~/reverse-proxy/scripts/security/haproxy-ufw-apply.sh
sudo bash ~/reverse-proxy/scripts/security/haproxy-ufw-apply.sh --apply
sudo bash ~/reverse-proxy/scripts/security/haproxy-ufw-apply.sh # dry-run
sudo bash ~/reverse-proxy/scripts/security/haproxy-ufw-apply.sh --apply # вторая SSH-сессия!
```
На каждом бэкенде — [backend-hosts.md](backend-hosts.md) и `backend-ufw-from-haproxy.sh`.
| Скрипт | Назначение |
|--------|------------|
| [haproxy-ufw-apply.sh](../../scripts/security/haproxy-ufw-apply.sh) | UFW на HAProxy |
| [haproxy-ufw.env.example](../../scripts/security/haproxy-ufw.env.example) | `SSH_ALLOWED`, порты |
| [backend-ufw-from-haproxy.sh](../../scripts/security/backend-ufw-from-haproxy.sh) | Бэкенды — позже |
## Связь с конфигом HAProxy
## Allowlist HAProxy
Allowlist-файлы в `/etc/haproxy/` (**не** заменяют UFW):
Файлы в `/etc/haproxy/`: `git-sac-allowed`, `rds-allowed`, `1c-allowed`, `zabbix-allowed`, `syno-allowed`.
- `git-sac-allowed`, `rds-allowed`, `1c-allowed`, `zabbix-allowed`, `syno-allowed`
Сервисы **без** allowlist на 443: **Exchange** (`ext`, `autodiscover`), **sac-api**. **SMTP 25** с интернета на HAProxy **не проброшен** (см. [architecture.md](architecture.md)); `fe_smtp` — для LAN/внутреннего использования.
Без allowlist на 443: Exchange (`ext`, `autodiscover`), `sac-api`.