feat(security): fail2ban для HAProxy JSON reject и Zabbix 403.

This commit is contained in:
PTah
2026-06-15 15:03:30 +10:00
parent 2ce71df1f8
commit cd14f0a1c4
8 changed files with 115 additions and 0 deletions
+28
View File
@@ -28,6 +28,14 @@ default outgoing: allow
`192.168.128.0/17` покрывает офисную/VPN-подсеть (в т.ч. `192.168.160.0/24`).
Ответный трафик с бэкендов (`.42`, `.129` → высокие порты на `.117`):
```
ufw allow from 192.168.160.0/24 comment 'LAN backends return'
```
(в [haproxy-ufw-apply.sh](../../scripts/security/haproxy-ufw-apply.sh) — `LAN_BACKENDS_CIDR`).
### Env
`/etc/haproxy/security/haproxy-ufw.env` (из [haproxy-ufw.env.example](../../scripts/security/haproxy-ufw.env.example)):
@@ -73,11 +81,31 @@ Inbound-почта с интернета идёт на **KSMG `.57`**, не на
|------|--------|
| SSH: ключи, `PermitRootLogin no`, `PasswordAuthentication no` | до/вместе с UFW |
| fail2ban на sshd | подстраховка SSH |
| fail2ban на HAProxy JSON | бан сканеров / reject SNI / Zabbix 403 |
| `unattended-upgrades` | патчи |
| Не открывать лишние listen | `ss -tlnp` |
Опционально позже: sysctl syncookies, rate-limit на frontend, allowlist для Exchange/sac-api.
## fail2ban (HAProxy JSON)
Скрипт: [fail2ban-install.sh](../../scripts/security/fail2ban-install.sh), конфиги в `scripts/security/fail2ban/`.
| Jail | Что ловит |
|------|-----------|
| `haproxy-reject` | JSON: `"be":"fe_https_sni","srv":"<NOSRV>"` — сканеры, чужой SNI, allowlist reject |
| `haproxy-zabbix-403` | httplog: `fe_http_zabbix` + `403` |
```bash
sudo apt install -y fail2ban
sudo bash ~/reverse-proxy/scripts/security/fail2ban-install.sh
sudo fail2ban-client status haproxy-reject
```
Порог: **15** reject за **10 мин** → бан **24 ч** через UFW. `ignoreip`: LAN, VPN, admin.
После `systemctl restart fail2ban` подождите 1–2 с перед `fail2ban-client status` (сокет).
### SSH (пример)
`/etc/ssh/sshd_config.d/99-hardening.conf`: