По соглашению с @tilman-schmidt, всего несколько центов с моей стороны (относительно fail2ban и т. д.)...
Люди OpenSSH постоянно меняют поведение ведения журнала, поэтому он может не учитываться fail2ban по умолчанию (это также зависит от того, где происходит отключение, например.на этапе предварительной аутентификации или после ввода имени пользователя, а также какие методы аутентификации разрешены в вашем sshd, а также при поведении «нарушителя»).
Я бы хотя бы установил LogLevel VERBOSE в sshd_config, как описано в /etc/fail2ban/filter.d/sshd.conf
Также обратите внимание на этот ответ на аналогичный вопрос - https://unix.stackexchange.com/questions/662946/fail2ban-regex-help-for-banning-sshd-connection-attempts/663002#663002
не раньше, чем через 24 часа, злоумышленники переключились на ротацию сотен уникальных IP-адресов.
Это никак не связано с использованием fail2ban — сканеры, найдя прослушиватель sshd, «опубликовали» его в каком-то из своих списков, чтобы можно было начать более глубокое сканирование (например, с распределенными ботнетами). Это печальная участь любого сервера с открытыми портами наружу.
Вы можете попробовать изменить порт ssh на что-то другое, но это просто избежит половины скриптовых детишек (если вы запретите попытки сканирования портов) и, по сути, вообще не панацея.
Но вы можете резко сократить количество злоумышленников хотя бы на короткое время, до нескольких месяцев.
Что может определенно помочь, так это включить bantime.increment
в fal2ban (для джейла sshd или по умолчанию).
fail2ban, похоже, не признает повторные попытки, которые приводят к закрытию соединения
Это не совсем правильно.
Вы должны установить режим = агрессивный
за sshd
тюрьма в тюрьма.местный
чтобы позволить fail2ban рассмотреть любые виды «атак» (не только проблемы аутентификации), также происходящие с помощью сканеров портов и подобных DoS-вещей.
И вы можете увидеть, что именно найдет fail2ban с вашим текущим фильтром с помощью этой команды (примечание совпало
в последней строке результата):
fail2ban-regex /var/log/auth.log 'sshd [режим = агрессивный]'