Instale o fail2ban seguindo as instruções da sua distribuição – não irei detalhar esse procedimento nem configuração básica do fail2ban.
ATENÇÃO!!! CRIE SUAS PRÓPRIAS REGRAS! ESTE ARTIGO EXEMPLIFICA COMO UTILIZAR O FAIL2BAN E CRIAR SUAS REGRAS. VERIFIQUE SEMPRE A REGEX E O ARQUIVO QUE DEVERÁ SER PROCESSADO (LOGPATH)!
Este documento foi realizado utilizando o fail2ban 0.9.x – SE VOCÊ UTILIZA A VERSÃO 0.8.x Atualize o fail2ban ou deixe nos comentário a vontade de que a gente traduza esse documento para a versão 0.8.x (Não recomendo!!! – mas a gente faz o que a maioria pede! quando der).
crie o arquivo /etc/fail2ban/filter.d/zimbra-imap.conf
[Definition] failregex = .*;oip=<HOST>;.* protocol=imap; error=authentication failed for .* Seguindo um trecho do arquivo /opt/zimbra/log/audit.log, vamos analisar.
Separei a linha para caber direitinho na página
2018-10-09 20:56:08,791 WARN [ImapSSLServer-3] [ip=10.1.171.29;oip=177.27.216.244;via=10.1.171.29(nginx/1.7.1);
ua=Zimbra/8.8.9_GA_3019;cid=16;] security – cmd=Auth; account=ananias@dominio.com.br;
protocol=imap; error=authentication failed for [ananias@domino.com.br], invalid password;
Nossa regex irá testar se:
.*; >> qualquer coisa até o item a seguir
oip=<HOST>; >> se existe ‘oip=<HOST>’ onde ele irá transformar o <HOST> em uma variável que conterá o IP da conexão
.* >> qualquer coisa entre o item anterior e o próximo item
protocol=imap; error=authentication failed for >> procura por essa expressão inteira
.* >> qualquer coisa após a expressão anterior
Analisando nosso filtro, presumimos que a linha acima contem o que queremos. Ou seja, um oip com endereço público/origem da conexão oip=177.27.216.244
e em seguida, ele encontra a nossa próxima expressão: protocol=imap; error=authentication failed for [ananias@dominio.com.br]
Feito isso, podemos testar com o fail2ban-regex e verificar se é verdade!
fail2ban-regex /opt/zimbra/log/audit.log /etc/fail2ban/filter.d/zimbra-imap.conf
e o resultado será algo como:
root@zimbra:/etc/fail2ban# fail2ban-regex /opt/zimbra/log/audit.log /etc/fail2ban/filter.d/zimbra-imap.conf
Running tests
=============
Use failregex filter file : zimbra-imap, basedir: /etc/fail2ban
Use log file : /opt/zimbra/log/audit.log
Use encoding : UTF-8
Results
=======
Failregex: 14 total
|- #) [# of hits] regular expression
| 1) [14] .*;oip=<HOST>;.* protocol=imap; error=authentication failed for .*
`-
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [470] Year(?P<_sep>[-/.])Month(?P=_sep)Day 24hour:Minute:Second(?:,Microseconds)?
`-
Lines: 470 lines, 0 ignored, 14 matched, 456 missed [processed in 0.18 sec]
Missed line(s): too many to print. Use –print-all-missed to print all 456 lines
Agora, você pode adicionar o filtro ao seu fail2ban no arquivo /etc/fail2ban/jail.conf
[zimbra-imap] enabled = true filter = zimbra-imap action = iptables[name=imap, port=imap, protocol=tcp] sendmail-whois[name=imap, dest=kram3r@gmail.com] logpath = /opt/zimbra/log/audit.log
reinicie o fail2ban (cada um que saiba como reiniciar na sua distro! systemctl service initd rc.d etc)
verifique o status do fail2ban
root@zimbra:/etc/fail2ban# fail2ban-client status zimbra-imap Status for the jail: zimbra-imap |- Filter | |- Currently failed: 0 | |- Total failed: 5 | `- File list: /opt/zimbra/log/audit.log `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 177.27.216.244
Trackbacks/Pingbacks