2

Я использую 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 ссылки)" "

1 ответ1

2

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 .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .