fail2ban tem maxretry de 3, mas vejo falhas de autenticação repetidas 5 vezes

2

Estou executando o Ubuntu 16.04 com o ssh habilitado pelo ufw e configurei o fail2ban para habilitar as cadeias [sshd] e [sshd-ddos] com um maxretry de 3 (ou seja, eu quero banir todos os ips que não autenticam 3 vezes) . Quando olho para o log de autenticação, vejo alguns ips diferentes que falharam na autenticação 5 vezes e, portanto, foram desconectados por muitas falhas de autenticação. Por que esses ips não estão sendo banidos? Eu estou totalmente esperando que eu tenha configurado mal o fail2ban ou que eu entenda mal o seu comportamento pretendido, mas a partir dos tutoriais que eu li (digitalocean, outros resultados de busca) essa configuração deve fazer o que eu espero. Observe também que o fail2ban está banindo com sucesso alguns ips, como eu posso ver as proibições (e não-autorizadas) no log do fail2ban.

Aqui estão as linhas de registro relevantes para um dos endereços IP com o problema (ip e host redigidos):

"/ 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

Aqui estão as linhas relevantes (sem comentário) da minha configuração do fail2ban, que é basicamente uma cópia direta do jail.conf com os padrões bantime, findtime e maxretry alterados, e o [sshd], [sshd-ddos] e [ recidiva] jaulas habilitadas:

"/ 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

Mais investigação:

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

o arquivo de log está correto como /var/log/auth.log Linhas: 1127 linhas, 0 ignoradas, 125 correspondidas, 1002 perdidas [processadas em 1,77 s]

sudo iptables -L -n | menos

Eu posso ver alguns ips banidos (com REJECT) em "Chain f2b-sshd (1 references)" "

    
por Bucket Mouse 17.02.2017 / 20:17

1 resposta

2

O Fail2ban vê apenas os logs no formato padrão e conta quantos registros apareceram durante um determinado período de tempo. Além disso, o seu syslog está mesclando os mesmos logs no formato agregado, o que evita essa análise:

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

Geralmente, a falha de autenticação é considerada como uma conexão que falhou na autenticação. Mas essa conexão única pode consistir em várias "tentativas de autenticação de senha" (quantas dependem da configuração do cliente NumberOfPasswordPrompts e servidor MaxAuthTries ).

Quando você configura fail2ban , é bom saber como as coisas funcionam e ao definir uma política, saiba o que isso significa. Nesse caso, esse é o comportamento esperado e, se você quiser limitar ainda mais as tentativas de autenticação, precisará ajustar a configuração de sshd .

    
por 17.02.2017 / 20:58

Tags