Por que o Fail2ban não envia e-mails para uma cadeia particular?

4

O Fail2ban está fazendo seu trabalho e fail2ban-client status está me mostrando que todos estão funcionando bem e que os endereços ofensivos são bloqueados.

Quando um endereço é bloqueado, gosto de receber um email. Isso está funcionando para todas as cadeias, exceto por uma. Por quê?

Aqui estão as partes relevantes de /etc/fail2ban/jail.local:

# My own domain is here, not example.com, obviously.
sender = [email protected]

banaction = iptables-multiport
mta = sendmail

action_mwl = %(banaction)s[name=%(__name__)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", sendername="%(sendername)s"]

action = %(action_mwl)s

# This one is working. Others are as well.
[postfix]
enabled  = true
port     = smtp,ssmtp,submission
filter   = postfix
logpath  = /var/log/mail.log

# This one is not working.
[recidive]
enabled  = true
filter   = recidive
logpath  = /var/log/fail2ban.log
bantime  = 604800  ; 1 week
findtime = 86400   ; 1 day
maxretry = 5

Aqui está a saída de fail2ban-client status recidive (um pouco anonimizado):

Status for the jail: recidive
|- filter
|  |- File list:        /var/log/fail2ban.log
|  |- Currently failed: 34
|  '- Total failed:     270
'- action
   |- Currently banned: 9
   |  '- IP list:       195.154.237.*** 91.200.12.*** 195.154.255.***
   '- Total banned:     12

Postfix:

Status for the jail: postfix
|- filter
|  |- File list:        /var/log/mail.log
|  |- Currently failed: 0
|  '- Total failed:     1058
'- action
   |- Currently banned: 0
   |  '- IP list:
   '- Total banned:     162

postfix.conf:

[INCLUDES]
before = common.conf
[Definition]

_daemon = postfix/smtpd

failregex = ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 554 5\.7\.1 .*$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from \S+\[<HOST>\]: 450 4\.7\.1 : Helo command rejected: Host not found; from=<> to=<> proto=ESMTP helo= *$
            ^%(__prefix_line)sNOQUEUE: reject: VRFY from \S+\[<HOST>\]: 550 5\.1\.1 .*$
            ^%(__prefix_line)simproper command pipelining after \S+ from [^[]*\[<HOST>\]:?$
            ^%(__prefix_line)sNOQUEUE: reject: RCPT from (.*)\[<HOST>\]: 454 4\.7\.1\.*
ignoreregex =

recidive.conf:

[INCLUDES]
before = common.conf

[Definition]
_daemon = fail2ban\.actions
_jailname = recidive

failregex = ^(%(__prefix_line)s|,\d{3} fail2ban.actions%(__pid_re)s?:\s+)WARNING\s+\[(?!%(_jailname)s\])(?:.*)\]\s+Ban\s+<HOST>\s*$

Em /var/log/fail2ban.log:

2016-12-15 08:01:52,620 fail2ban.actions[18430]: WARNING [wordpress-soft] Unban 160.202.163.***
2016-12-15 08:01:59,649 fail2ban.actions[18430]: WARNING [wordpress-soft] Ban 160.202.163.***
2016-12-15 08:02:00,610 fail2ban.actions[18430]: WARNING [recidive] Ban 160.202.163.***
2016-12-15 08:12:00,587 fail2ban.actions[18430]: WARNING [wordpress-soft] Unban 160.202.163.***

Então, eu estou certo que a função de email do Fail2ban está funcionando. E todas as cadeias estão funcionando. Parece não haver diferença entre recidiva e as outras cadeias. O que estou perdendo?

    
por Forkbeard 15.12.2016 / 09:41

1 resposta

2

Eu tive o mesmo problema. Eu tenho 2 cadeias indo, o ssh e recidive. A cadeia ssh estava me enviando e-mails perfeitamente, mas nada de recidiva. Eu estou correndo:

Fail2Ban v0.8.13

Minha configuração global relevante é idêntica ao que você postou:

 banaction = iptables-multiport
 mta = sendmail

 action_mwl = %(banaction)s[name=%(__name__)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", sendername="%(sendername)s"]

 action = %(action_mwl)s

Minha configuração jail recidiva inicial (que não estava enviando e-mails):

[recidive]

enabled  = true
filter   = recidive
logpath  = /var/log/fail2ban.log
#action   = iptables-allports[name=recidive]
#           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]

bantime  = 604800  ; 1 week
findtime = 604800
#findtime = 86400   ; 1 day
maxretry = 3

Observe que eu havia comentado a ação recidiva padrão. Pelo menos para mim, foi o que veio como padrão. Eu fiz isso porque queria que os e-mails de recidiva funcionassem como o ssh, que também usava a ação padrão. Com essa configuração ... não tenho nada. Grilos Mas a prisão recidiva funcionou. Eu não sei exatamente qual era o problema, mas eu sabia que tinha que consertar. Então, eu primeiro tentei descomentar a ação. Então, ainda funcionou, mas sem e-mails. Ou então eu pensei. Acabou que os e-mails estavam indo para a conta raiz local. Eu os encontrei na caixa de correio / var / mail / [user], para a qual eu enviei o email root. Então, percebi que era porque estemail não estava sendo usado nessa ação padrão. Então, o que acabei fazendo foi apenas copiar o padrão global action_mwl & ajustou para tirar o port.

Então minha configuração final de jail recidiva, que funcionou:

enabled  = true
filter   = recidive
logpath  = /var/log/fail2ban.log
#action   = iptables-allports[name=recidive]
#           sendmail-whois-lines[name=recidive, logpath=/var/log/fail2ban.log]
action = %(banaction)s[name=%(__name__)s, protocol="%(protocol)s", chain="%(chain)s"]
               %(mta)s-whois-lines[name=%(__name__)s, dest="%(destemail)s", logpath=%(logpath)s, chain="%(chain)s", sendername="%(sendername)s"]

Talvez seja tudo por design ou um bug antigo - não sei. Mas é assim que consegui que funcionasse. Isso pode ser tarde demais para ajudá-lo, mas talvez ajude o próximo no mesmo barco ...

    
por 23.03.2017 / 01:16