Доброго дня сообществу!
Кто-нибудь тестил
f2b 10-й ветки?
Собственно, на что я наткнулся.
Тест на виртуалке Centos 6.8 x64, Python 2.6.6. Jail sshd. Инкремент пока что выключен.
С баном проблем нет, но или банит неправильно, или у меня с руками что-то.
Итак:
fail2ban-client -d:
...
['set', 'dbpurgeage', '86400']
['add', 'sshd', 'pyinotify']
['set', 'sshd', 'maxlines', 1]
...
['set', 'sshd', 'maxretry', 2]
['set', 'sshd', 'bantime', '300']
['set', 'sshd', 'findtime', '600']
...
Само собой, стартую с чистой базы:
rm /var/lib/fail2ban/fail2ban.sqlite3
service fail2ban restart
В ssh авторизация ключами, root запрещен. Специальных фэйлов типа авторизации рутом или без ключа не воспроизвожу, просто подключение в штатном режиме. В итоге, на втором подключении в пределах 'findtime' попадаю в бан с соответствующей записью в БД и созданием правила в цепочке f2b-sshd.
Соответственно, если 'maxretry = 3' - бан на третьем подключении.
Возникает вопрос: что означает 'maxretry'? Получается, это не количество фэйлов, а просто количество подключений к контролируемому порту?
Ладно, жду 'bantime'. Происходит разбанивание с записью в лог, удаляется правило из f2b-sshd, но остается запись в БД о факте бана. Все правильно, на случай рецидива с тем же ip.
Подключаюсь - снова бан. Хочу подчеркнуть, речь идет не о 'ignoreip', а о отработке бана просто по факту появления в логе sshd (или secure, не важно) ip, который уже засветился в БД, т.е без фактического фэйла.
Отдельная тема 'dbpurgeage = 86400'
Судя по описанию, время хранения банов в БД. Т.е. запись о бане должна удаляться из БД, если за период времени 'dbpurgeage' не было рецидива с тем же ip.
Первый вариант у меня был 'dbpurgeage = 600', чтобы не ждать сутки. Второй - 'dbpurgeage = 4000'.
Само собой, service fail2ban restart.
Результат один и тот же: сообщение 'Purge database event occured' появляется в логе каждый час, независимо от фактически выставленного значения. Запись о бане при этом из БД не удаляется.
Удалить ее можно только руками: fail2ban-client set sshd unbanip ....
Забанюсь перед выходными и подожду сутки, может что и произойдет.