Description
Что происходит
Два дефолта тулкита, заданные ОДНИМ И ТЕМ ЖЕ модульным набором, конфликтуют по объёму:
protect.sh:675логирует анти-скан с лимитом 5 записей в секунду:
... ct state new limit rate 5/second log prefix "[na portscan] " level infooptimize.sh(«journald (ограничение логов)») ставитSystemMaxUse=300M.
5/с — это до 432 000 строк в сутки (~50 МБ). На ноде, которую активно сканируют, [na portscan] вытесняет из journald всё остальное, и глубина журнала падает ниже суток. Разбор любого инцидента старше вчерашнего дня становится невозможен — а на Debian 13 minimal, где нет ни rsyslog, ни wtmp, journald это ЕДИНСТВЕННЫЙ источник истории входов.
Наблюдалось
2026-09-02, флот из 8 хостов (v4.0.1, SystemMaxUse=300M везде, все ребутнуты 31.08 ~18:30 UTC):
| хост | [na portscan] строк за буту |
журнал | самая старая запись |
|---|---|---|---|
| cdn1 (CDN-origin, публичный :443) | 405 822 | 291.8M | 2026-09-01 09:50 (≈20 ч) |
| nl1 (selfsteal) | 357 659 | 286.7M | 2026-09-01 11:55 (≈17 ч) |
| ru1 | 160 100 | 289.0M | 2026-08-29 |
| панель | 128 970 | 281.8M | 2026-08-27 |
| it1 | 20 460 | 178.0M | 2026-08-03 |
| fr1 | 14 932 | 202.1M | 2026-07-27 |
| us1 (хостер режет всё, кроме 22/80/443/8443) | 167 | 28.9M | 2026-07-27 |
Зависимость прямая: чем доступнее нода снаружи, тем короче её память. На us1, где скан до порта просто не доходит, журнал живёт месяц с лишним при том же кап-лимите.
Почему это именно дефект тулкита, а не «так и надо»
Оба параметра ставит тулкит, и он же обещает в diagnose сенсоры по логам. Сейчас он одной рукой включает поток на 50 МБ/сутки, другой ограничивает хранилище тремя сотнями мегабайт — и не предупреждает, что вместе это даёт ретеншен меньше суток. Оператор узнаёт об этом, только когда лезет за историей и не находит её.
Предлагаемый фикс
- Понизить дефолт лога анти-скана до
5/minute(или1/secondсburst) — для «увидеть, что скан идёт», этого более чем достаточно: сам бан работает по счётчикам сета, а не по строкам лога. Вынести в knobPORTSCAN_LOG_RATE(по аналогии с уже существующимиPORTSCAN_RATE/PORTSCAN_BURST). - Считать бюджет журнала: при
ENABLE_PORTSCAN_BAN=1оценитьPORTSCAN_LOG_RATE × 86400 × ~120 Би, если это больше ~30 % отSystemMaxUse, печататьwarnс обоими числами и предложением поднять кап или снизить рейт. - Сенсор в
diagnose: «журнал вмещает менее N часов» (по разнице между самой старой записью иnow) — сейчас есть только сенсор лог-флуда по объёму, а ретеншен во времени, который и важен для форензики, не измеряется.
Activity
jestivald commentedon Sep 2, 2026
Подтверждаю на втором флоте (4 Remnawave-ноды, Ubuntu/Debian с
rsyslog, v4.0.1, ребут 31.08) — таму этого же потока есть второй приёмник, который капом journald не ограничен вообще.
[na portscan]попадает не только в journald, но и в/var/log/kern.logчерезrsyslog, а егопакетная станса —
weeklyбезmaxsize:[na portscan]за 24 чkern.logИсточник потока — распределённый скан с AS209334 (
85.217.140.0/24,85.217.149.0/24): ~50 адресовпо ~4 хита в час каждый. Каждый по отдельности ниже порога
PORTSCAN_RATE=15/мин, поэтомуban-once не срабатывает ни на одном (
autoban_v4пуст), а лог пишется на все.Из этого два следствия к предложенному фиксу:
PORTSCAN_LOG_RATEлечит оба приёмника сразу — это аргумент за пункт 1, а не только заподъём
SystemMaxUse.NA_LOG_PATHS="/var/log/nginx/*.log /var/log/remnanode/*.log"на Remnawave-ноде не существует(nginx не ставится,
remnanodeпишет в docker json-file), а растётkern.log, который принадлежитчужой стансе. То есть на целевом для тулкита типе ноды фича ротации не защищает ни одного реально
растущего файла. Возможно, дефолт стоит расширить до
/var/log/kern.log /var/log/syslogсявной уступкой rsyslog'у и предупреждением (см. optimize: уступив маски чужой стансе, тулкит не создаёт свою и рапортует зелёным — diagnose показывает ✔ ротацию, которой нет #40).
jestivald commentedon Sep 2, 2026
Исправлено в v4.1 (PR #42, merge 427b13f): https://github.com/jestivald/node-accelerator/releases/tag/v4.1 — разбор в CHANGELOG, секция v4.1.
optimize: TTY-гейт курсора, RPS без гонки с маршрутом, ручки ENABLE_P…
protect: счётчики наборов, рейт лога анти-скана, гигиена whitelist (#…
merge v4.1-protect: #32 #35 #38 — счётчики наборов, PORTSCAN_LOG_RATE…
diagnose: датчики меряют тот же срез, что и правила + честный --json …
merge v4.1-diagnose: #27 #30 #31 #32 #34 #35 #37 #38 #39 — датчики ме…