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 -31
View File
@@ -1,44 +1,37 @@
# Чеклист после внедрения защиты
# Чеклист
## HAProxy (192.168.160.117)
## UFW на HAProxy (текущий этап)
- [ ] `ufw status verbose` — active; есть 22 из admin, **80/443** open (25 — только если явно включён для LAN)
- [ ] SSH с admin-IP работает; с random IP — **нет** (или только ключ + fail2ban)
- [ ] `ss -tlnp` — нет лишних listen (8404, 3000, …)
- [ ] `ufw status verbose` — active
- [ ] **22/tcp** только `5.100.81.121`, `192.168.128.0/17`
- [ ] **8404/tcp** — только тот же список (если stats включён)
- [ ] **80/tcp**, **443/tcp**`Anywhere`
- [ ] **25/tcp** — нет правила allow (default deny)
- [ ] SSH с admin-IP — OK; с чужого IP — refused
- [ ] Сервисы через HAProxy (git, zabbix, rds, …) — OK
- [ ] `haproxy -c -f /etc/haproxy/haproxy.cfg` — OK
- [ ] С allowlist IP: git, rds, zabbix, erp, syno — **OK**
- [ ] С чужого IP: git/rds/erp — **reject** (нет TCP reset или обрыв на ACL)
- [ ] `fail2ban-client status sshd` — active
- [ ] Логи: `grep -E 'SC|NOSRV|reject' /var/log/haproxy.log | tail`
- [ ] `/etc/haproxy/security/haproxy-ufw.env` — backup
## MikroTik / периметр
## MikroTik
- [ ] С интернета на публичный IP: открыты только **80, 443**
- [ ] Нет DNAT 3389, 5001, 4430 на внутренние хосты
- [ ] HAProxy health-check не блокируется
- [ ] DNAT **80/443**`192.168.160.117`
- [ ] DNAT **25**`192.168.160.57` (не на HAProxy)
- [ ] Нет DNAT 3389, 5001, 4430 на внутренние IP
## Бэкенды (каждый)
## После UFW (опционально, не блокер)
- [ ] UFW/firewall active
- [ ] С `.117` на сервисный порт — OK
- [ ] С другого LAN IP на сервисный порт — **closed** (если так задумано)
- [ ] HAProxy backend **UP** в stats/log
- [ ] Прикладной smoke-test (OWA, RD Web, Gitea login, …)
- [ ] fail2ban sshd
- [ ] `unattended-upgrades`
## KSMG (.57)
---
- [ ] Inbound-почта с интернета **не** идёт через HAProxy:25 (DNAT на MikroTik только 80/443)
- [ ] На KSMG в `EXTRA_ALLOWED`**192.168.160.117** (если используется `fe_smtp` из LAN) и прямые MTA
## Позже — бэкенды
## Документация и runbook
- [ ] UFW: сервисный порт только с `.117`
- [ ] KSMG: UFW под прямой **25** с интернета
- [ ] `/etc/haproxy/security/*.env` — backup в password store
- [ ] Откат UFW: `ufw disable` + процедура задокументирована
- [ ] Ответственный и дата внедрения фикс
## Регулярно (ежемесячно)
## Регулярно
- [ ] `apt upgrade` на HAProxy
- [ ] Проверка актуальности allowlist / `rds-allowed` cron
- [ ] Review fail2ban / auth.log
- [ ] Тест restore конфига из git
- [ ] Актуальность allowlist / `rds-allowed`
- [ ] `ufw status`, auth.log