У fail2ban есть maxretry 3, но я вижу ошибки аутентификации, повторенные 5 раз

937
Bucket Mouse

Я использую Ubuntu 16.04 с включенным ssh через ufw и настроил fail2ban для включения джейлов [sshd] и [sshd-ddos] с максимальным значением 3 (т.е. я хочу запретить любые ips, которые не могут аутентифицироваться 3 раза). Когда я просматриваю журнал авторизации, я вижу несколько разных ips, которые не смогли пройти аутентификацию 5 раз и поэтому были отключены из-за слишком большого количества ошибок аутентификации. Почему эти ips не запрещены? Я полностью ожидаю, что у меня либо неверно настроен fail2ban, либо я неправильно понял его предполагаемое поведение, но из прочитанных мною учебных пособий (digitalocean, другие результаты поиска) эта конфигурация должна делать то, что я ожидаю. Также обратите внимание, что fail2ban успешно запрещает некоторые ips, так как я вижу запреты (и отмены) в журнале fail2ban.

Вот соответствующие строки журнала для одного из IP-адресов с проблемой (ip и хост отредактированы):

"/Var/log/fail2ban.log"

2017-02-17 13:23:36,148 fail2ban.filter [24793]: INFO [sshd] Found [ip address] 2017-02-17 13:23:38,153 fail2ban.filter [24793]: INFO [sshd] Found [ip address] 

"/Var/log/auth.log"

Feb 17 13:23:36 [host] sshd[15498]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=[ip address] us er=root Feb 17 13:23:38 [host] sshd[15498]: Failed password for root from [ip address] port 9498 ssh2 Feb 17 13:23:49 [host] sshd[15498]: message repeated 5 times: [ Failed password for root from [ip address] port 9498 ssh2] Feb 17 13:23:49 [host] sshd[15498]: error: maximum authentication attempts exceeded for root from [ip address] port 9498 ssh2 [preauth] Feb 17 13:23:49 [host] sshd[15498]: Disconnecting: Too many authentication failures [preauth] Feb 17 13:23:49 [host] sshd[15498]: PAM 5 more authentication failures; logname= uid=0 euid=0 tty=ssh ruser= rhost=[ip address] user=root Feb 17 13:23:49 [host] sshd[15498]: PAM service(sshd) ignoring max retries; 6 > 3 

Вот соответствующие (без комментариев) строки из моей конфигурации fail2ban, которая в основном представляет собой прямую копию из jail.conf с измененными значениями по умолчанию bantime, findtime и maxretry, а также jails [sshd], [sshd-ddos] и [recidive] включено:

"/Etc/fail2ban/jail.local"

[DEFAULT]  ignoreip = 127.0.0.1/8 bantime = 21600 findtime = 3600 maxretry = 3 backend = auto usedns = warn logencoding = auto enabled = false filter = %(__name__)s destemail = root@localhost sender = root@localhost mta = sendmail protocol = tcp chain = INPUT port = 0:65535 banaction = iptables-multiport action_ = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] action_mw = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois[name=%(__name__)s, dest="%(destemail)s", protocol="%(protocol)s", chain="%(chain)s"] action_mwl = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"] action_xarf = %(banaction)s[name=%(__name__)s, bantime="%(bantime)s", port="%(port)s", protocol="%(protocol)s", chain="%(chain)s"] xarf-login-attack[service=%(__name__)s, sender="%(sender)s", logpath=%(logpath)s, port="%(port)s"] action_cf_mwl = cloudflare[cfuser="%(cfemail)s", cftoken="%(cfapikey)s"] %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s"] action_blocklist_de = blocklist_de[email="%(sender)s", service=%(filter)s, apikey="%(blocklist_de_apikey)s"] action_badips = badips.py[category="%(name)s", banaction="%(banaction)s"]  [sshd]  enabled = true port = ssh logpath = %(sshd_log)s  [sshd-ddos] # This jail corresponds to the standard configuration in Fail2ban. # The mail-whois action send a notification e-mail with a whois request # in the body. enabled = true port = ssh logpath = %(sshd_log)s  [recidive]  enabled = true logpath = /var/log/fail2ban.log banaction = iptables-allports bantime = 604800 ; 1 week findtime = 86400 ; 1 day maxretry = 5 

Дальнейшее расследование:

sudo fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d

файл журнала корректен как /var/log/auth.log Строки: 1127 строк, 0 игнорируется, 125 соответствует, 1002 пропущено [обработано за 1.77 с]

sudo iptables -L -n | Меньше

Я вижу некоторые заблокированные ips (с REJECT) в "Chain f2b-sshd (1 ссылки)" "

2

1 ответ на вопрос

2
Jakuje

Fail2ban видит только журналы в стандартном формате и подсчитывает, сколько журналов появилось за определенный период времени. Также ваш системный журнал объединяет те же журналы в агрегированную форму, что предотвращает этот анализ:

Feb 17 13:23:49 [host] sshd[15498]: message repeated 5 times: [ Failed password for root from [ip address] port 9498 ssh2] 

Обычно ошибка аутентификации рассматривается как соединение, которое не может аутентифицироваться. Но это единственное соединение может состоять из нескольких «попыток аутентификации по паролю» (сколько зависит от конфигурации клиента NumberOfPasswordPromptsи сервера MaxAuthTries).

Когда вы настраиваете fail2ban, полезно знать, как все работает, и когда вы устанавливаете политику, знать, что это значит. В этом случае это ожидаемое поведение, и если вы хотите еще больше ограничить попытки аутентификации, вам необходимо настроить конфигурацию sshd.

Спасибо, это проясняет мою путаницу :) Это была агрегированная форма регистрации, предотвращающая синтаксический анализ, который приводил меня в замешательство - что при отражении должно показаться очевидным, но это не так! Частично из-за (на другом сервере) блокировки после 3 неудачных попыток аутентификации. Bucket Mouse 7 лет назад 0

Похожие вопросы