Para criar o sistema de proteção contra bruteforce no Zimbra vamos utilizar o Fail2ban #
1 – Em seu servidor Zimbra (estamos utilizando o Centos7), digite o seguinte comando para instalar o fail2ban:
# yum install fail2ban -y
.
.
2 – Em seguida, crie o arquivo /etc/fail2ban/jail.local ,
.
3- Dentro dele adicione o seguinte conteúdo (dentro da linha ignoreip = 127.0.0.1/8 seuip/32… substitua seuip pelo número de ip dos servidores que deseja excluir da verificação do fail2ban):
[DEFAULT] # "ignoreip" can be a list of IP addresses, CIDR masks or DNS hosts. Fail2ban will not ban a host which matches an address in this list. # Several addresses can be defined using space (and/or comma) separator. # ignoreip = 127.0.0.1/8 ::1 10.137.26.29/32 ignoreip = 127.0.0.1/8 seuip/32 seuip2/24 banaction = route # A host is banned if it has generated "maxretry" during the last "findtime" seconds. # 10 minute (in seconds) # findtime = 600 # "bantime" is the number of seconds that a host is banned. # 10 hour (in seconds) # bantime = 3600 # "maxretry" is the number of failures before a host get banned. # maxretry = 5
.
.
4 – Em seguida, crie o arquivo /etc/fail2ban/jail.d/zimbra.local e dentro dele coloque (a linha maxretry refere-se ao número máximo de tentativas de acesso antes de banir o ip):
[zimbra-smtp] enabled = true filter = zimbra-smtp port = 25,465,587 logpath = /var/log/zimbra.log maxretry = 3 findtime = 600 bantime = 3600 [zimbra-webmail] enabled = true filter = zimbra-webmail port = 80,443 logpath = /opt/zimbra/log/mailbox.log maxretry = 3 findtime = 600 bantime = 3600 [zimbra-admin] enabled = true filter = zimbra-admin port = 7071,9071 logpath = /opt/zimbra/log/mailbox.log maxretry = 3 findtime = 600 bantime = 3600
Criando os filtros para os serviços do zimbra:
.
Webmail: Para a configuração do fail2ban no webmail, crie o arquivo /etc/fail2ban/filter.d/zimbra-webmail.conf e dentro dele coloque:
[Definition] # failregex = \[oip=<HOST>;.*SoapEngine - handler exception: authentication failed for .*, account not found$ INFO .*;oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, invalid password$ ignoreregex =
.
.
SMTP: Para a configuração do fail2ban no smtp, crie o arquivo /etc/fail2ban/filter.d/zimbra-smtp.conf e dentro dele coloque:
[Definition] # failregex = postfix\/submission\/smtpd\[\d+\]: warning .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$ postfix\/smtps\/smtpd\[\d+\]: warning: .*\[<HOST>\]: SASL \w+ authentication failed: authentication failure$ ignoreregex =
.
.
Painel admin Zimbra: Para a configuração do fail2ban painel de administração do zimbra, crie o arquivo /etc/fail2ban/filter.d/zimbra-admin.conf e dentro dele coloque:
[Definition] # failregex = INFO .*;ip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, invalid passsword$ INFO .*ip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$ ignoreregex =
.
.
Vamos Restartar o serviço e habilitá-lo com os comandos:
# systemctl restart fail2ban # systemctl status fail2ban # systemctl enable fail2ban
.
Trabalhando com o fail2ban
Com as configurações feitas, o fail2ban já está trabalhando sozinho, analisando os logs e bloqueando ips que estão tentando acessar os serviços com ataques de dicionário/bruteforce, porém, é possível trabalhar manualmente com ele:
Para validar as jails(conjunto de regras criadas):
# fail2ban-client status
.
.
Verificando as regras e bloqueios de cada Jail:
# fail2ban-client status nomedajail
.
.
Bloquear ip manualmente:
# fail2ban-client set nomedajail banip ip.para.bloquear.x
Desbanir um ip manualmente:
# fail2ban-client set nomedajail unbanip ip.para.desbloquear
Você pode conferir mais sobre nossos tutoriais na nossa pagina de Artigos e conhecer mais sobre nossas ferramentas no link abaixo.
Veja também em https://www.youtube.com/talkdata