From 85b50a3f42dd826cb1169e13fc0454ac3b5f17c0 Mon Sep 17 00:00:00 2001 From: estorozhenko Date: Sat, 19 Sep 2026 06:02:45 +0000 Subject: [PATCH] =?UTF-8?q?Security=20docs:=20=D1=80=D0=B5=D0=B0=D0=BB?= =?UTF-8?q?=D1=8C=D0=BD=D1=8B=D0=B9=20=D1=85=D1=8D=D1=88=20=D0=BF=D0=B0?= =?UTF-8?q?=D1=80=D0=BE=D0=BB=D1=8F,=20=D1=82=D0=BE=D1=87=D0=BD=D1=8B?= =?UTF-8?q?=D0=B9=20=D1=84=D0=B8=D0=BB=D1=8C=D1=82=D1=80=20fail2ban=20(md2?= =?UTF-8?q?vk.access.log)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/security.md | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/docs/security.md b/docs/security.md index 61eda59..e075eb5 100644 --- a/docs/security.md +++ b/docs/security.md @@ -6,7 +6,7 @@ - Весь https://md2vk.nixg.ru закрыт HTTP Basic Auth. - Пользователь: **estorozhenko**; пароль — у пользователя, в конфиге только bcrypt-хэш. -- Хэш в Caddyfile: `admin $2a$14$uzlQxJdcRZJ5gDpGG5B26OXnudIme1IYe7xh0WtDwFtbB6XiiDYTS` +- Хэш в Caddyfile: `estorozhenko $2a$14$uzlQxJdcRZJ5gDpGG5B26OXnudIme1IYe7xh0WtDwFtbB6XiiDYTS` (сгенерирован 2026-09-18 `docker exec caddy caddy hash-password --plaintext '<пароль>'`). - Без basic auth сервис наружу не отдаётся. @@ -20,15 +20,13 @@ ## Блокировка после 5 неудачных попыток (fail2ban на vps02) -- На vps02 установлен fail2ban, jail `md2vk`: - - следит за логами Caddy (JSON: `/var/log/caddy/access.log`), - - фильтр: basic auth failure (`401` с `"err"`, absence of `"user_id"`): - ``` - ^.*"status":401.* - ``` - - правило: ban IP после **5 неудачных попыток подряд** (`maxretry=5`, `findtime=600`), +- На vps02 установлен fail2ban (v1.0.2), jail `md2vk`: + - следит за site-логом Caddy: `/opt/caddy/caddy_data/logs/md2vk.access.log` (JSON, все запросы включая 401), + - фильтр `filter.d/caddy-md2vk.conf`: `^.*"request":\{"remote_ip":""[^}]*"host":"md2vk\.nixg\.ru"[^}]*\}.*"status":401`, + - правило: ban IP после **5 неудачных попыток** (`maxretry=5`, `findtime=600`; на 6-й срабатывает), - наказание: **ban до ручного снятия** (`bantime = -1`), - - действие: `iptables-allports` (ban на уровне ядра, DROP). + - действие: `iptables-allports` (цепочка `f2b-md2vk`, REJECT; на Debian 12 транслируется в nftables), + - ignoreip: `127.0.0.1/8 ::1 10.8.0.0/24` (не баним bigbox/vps02). - **Ручная разблокировка** (на vps02, sudo): ```bash fail2ban-client -c /etc/fail2ban unban