Привет!
Я изучал новую функцию bantime.increment
и теперь у меня есть пара вопросов:
jail.conf
прежнему содержит часть [recidive]
которая использовалась для проверки selflog, чтобы запретить ранее запрещенные IP-адреса, но новый bantime.incement
как раз для этого. Разве это не лишнее сейчас?bantime.increment
не говорят о том, как это связано с findtime
и maxretry
. Если первый бан закончился, то второй будет сразу же установлен, как только он будет обнаружен, или он должен произойти в findtime
для maxretry
а затем он будет установлен с увеличенным время?banTime * 1, 2, 4, 8, 16, 32...
что для меня означает, что это может продолжаться бесконечно, но #bantime.formula = ban.Time * (1<<(ban.Count if ban.Count<20 else 20)) * banFactor
показывает, что он будет максимальным на 2 ^ 20. Какая из них верна?bantime.multipliers
иметь неопределенное количество множителей или только 20?1h
) даже с коэффициентом 1 уже после 13-го бана вырастет до почти 1 года, после 15-го это 4 года, после 18-й - 30 лет, после 19-го - 60 лет, а 20-й бан вызовет 1h * 2<sup i="10">20</sup>
, что соответствует примерно 120 годам. С учетом всех запретов, злоумышленника забанили почти на 240 лет!bantime.maxtime
на несколько недель или 1 месяц. Более длительные запреты просто увеличивают iptables / ipsets, поэтому излишне загружают сетевую подсистему и вообще неосуществимы.Я изменил sendmail-whois.conf, чтобы он содержал <bantime>
и <bancount>
следующим образом:
actionban = printf %%b "Subject: [Fail2Ban] <name>: banned <ip> from <fq-hostname> for <bantime> seconds # <bancount> time(s)
и получаю странные результаты:
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 2 seconds # 1 time(s)
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 2 seconds # 2 time(s)
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 8 seconds # 3 time(s)
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 2 seconds # 4 time(s)
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 32 seconds # 5 time(s)
[Fail2Ban] ssh: banned 192.168.56.1 from localhost.localdomain for 2 seconds # 6 time(s)
Могу подтвердить, что время бана увеличивается каждый раз, но в почте не всегда. Я что-то упустил или это ошибка?
но по почте это происходит не всегда.
Поскольку продление выполняется полностью асинхронно (злоумышленник должен быть заблокирован как можно скорее), бан может произойти до того, как время запрета действительно увеличится.
Если это ожидается, для этих целей был добавлен другой параметр действия actionprolong
, поэтому используйте его вместо actionban
.
Самый полезный комментарий
вкратце - одна и та же экспоненциальная формула будет использоваться для обоих (увеличивает время блокировки и уменьшает максимальное количество попыток);
1h
) даже с коэффициентом 1 уже после 13-го бана вырастет до почти 1 года, после 15-го это 4 года, после 18-й - 30 лет, после 19-го - 60 лет, а 20-й бан вызовет1h * 2<sup i="10">20</sup>
, что соответствует примерно 120 годам. С учетом всех запретов, злоумышленника забанили почти на 240 лет!Такие длительные баны (а также постоянные баны) некрасивы по нескольким причинам, поэтому рекомендуется даже установить
bantime.maxtime
на несколько недель или 1 месяц. Более длительные запреты просто увеличивают iptables / ipsets, поэтому излишне загружают сетевую подсистему и вообще неосуществимы.Если (известный как плохой) злоумышленник сделает 1 попытку после бана на 1 месяц, он будет немедленно заблокирован (снова на 1 месяц), так почему же следует использовать более длительный бан? Как бы то ни было, я использую его несколько лет и очень редко наблюдаю некоторые попытки после 2-3 месяцев бана (либо они были «исправлены», меняли IP / провайдера, либо просто удаляли мои защищенные хосты из списка целей атаки).