docs(security): периметр 80/443→HAProxy, 25→KSMG; UFW на .117
Переписаны docs/security под текущий этап: SSH/stats из SSH_ALLOWED, 80/443 для всех. Скрипт UFW дополнен правилом 8404.
This commit is contained in:
+24
-38
@@ -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`.
|
||||
|
||||
Reference in New Issue
Block a user