O Zimbra Collaboration Suite Open-Source Edition possui em seu arsenal várias ferramentas poderosas para garantir a segurança das informações. Entre eles, o
Postscreen é uma solução para proteger o servidor de email de ataques de botnets, o ClamAV é um antivírus que pode verificar arquivos e cartas recebidos em busca de infecções por malware, e o
SpamAssassin é um dos melhores filtros de spam até o momento. No entanto, essas ferramentas não conseguem proteger o Zimbra OSE de uma forma de ataque, como força bruta. A enumeração de senhas mais elegante, mas ainda bastante eficaz, em um dicionário especial, é carregada não apenas com a probabilidade de um hack bem-sucedido com todas as conseqüências resultantes, mas também com a criação de uma carga significativa no servidor, que processa todas as tentativas mal-sucedidas de hackear o servidor com o Zimbra OSE.

Em princípio, você pode se proteger da força bruta usando as ferramentas padrão do Zimbra OSE. As configurações da diretiva de segurança da senha permitem definir o número de tentativas com falha de senha, após as quais a conta potencialmente atacada é bloqueada. O principal problema dessa abordagem é que surgem situações nas quais as contas de um ou mais funcionários podem ser bloqueadas devido a um ataque de força bruta, para o qual eles não têm nada a fazer, e o trabalho simples resultante dos funcionários pode trazer grandes prejuízos para a empresa. É por isso que essa opção de proteção contra força bruta é melhor não aplicar.

Para proteger contra a força bruta, uma ferramenta especial chamada DoSFilter é muito melhor, incorporada ao Zimbra OSE e pode se desconectar automaticamente do Zimbra OSE via HTTP. Em outras palavras, o princípio de operação do DoSFilter é semelhante ao princípio de operação do PostScreen, usado apenas para outro protocolo. Originalmente projetado para limitar o número de ações que um único usuário pode executar, o DoSFilter também pode fornecer proteção contra força bruta. Sua principal diferença da ferramenta embutida no Zimbra é que, após um certo número de tentativas malsucedidas, ele bloqueia não o próprio usuário, mas o endereço IP a partir do qual são feitas várias tentativas para efetuar login em uma ou outra conta. Graças a isso, o administrador do sistema pode não apenas se proteger da força bruta, mas também evitar o bloqueio dos funcionários da empresa, simplesmente adicionando a rede interna da empresa à lista de endereços IP e sub-redes confiáveis.
A grande vantagem do DoSFilter é que, além de inúmeras tentativas de fazer login em uma ou outra conta, usando essa ferramenta você pode bloquear automaticamente os cibercriminosos que se apossaram dos dados de autenticação do funcionário e, em seguida, efetuou login com êxito em sua conta e começou a enviar centenas de solicitações ao servidor.
Você pode configurar o DoSFilter usando os seguintes comandos do console:
- zimbraHttpDosFilterMaxRequestsPerSec - Com este comando, você pode definir o número máximo de conexões permitidas para um usuário. Por padrão, esse valor é 30 conexões.
- zimbraHttpDosFilterDelayMillis - Usando este comando, você pode definir o atraso em milissegundos para conexões que excedem o limite definido pelo comando anterior. Além dos valores inteiros, o administrador pode especificar 0 para que não haja atraso e também -1 para que todas as conexões que excedam o limite especificado sejam simplesmente interrompidas. Por padrão, esse valor é -1.
- zimbraHttpThrottleSafeIPs - Usando este comando, o administrador pode especificar endereços IP e sub-redes confiáveis que não serão afetados pelas restrições acima. Observe que a sintaxe deste comando pode variar dependendo do resultado desejado. Portanto, por exemplo, digitando o comando zmprov mcf zimbraHttpThrottleSafeIPs 127.0.0.1 , você reescreve completamente a lista inteira e deixa apenas um endereço IP nela. Se você digitar o comando zmprov mcf + zimbraHttpThrottleSafeIPs 127.0.0.1 , o endereço IP digitado será adicionado à lista branca. Da mesma forma, usando um sinal de subtração, você pode remover qualquer IP da lista de permitidos.
Observe que o DoSFilter pode causar vários problemas ao usar as extensões do Zextras Suite Pro. Para evitá-las, recomendamos aumentar o número de conexões simultâneas de 30 para 100 usando o comando
zmprov mcf zimbraHttpDosFilterMaxRequestsPerSec 100 . Além disso, recomendamos adicionar a rede interna da empresa à lista de permitidos. Isso pode ser feito usando o comando
zmprov mcf + zimbraHttpThrottleSafeIPs 192.168.0.0/24 . Depois de fazer alterações no DoSFilter, reinicie o servidor de correio usando o comando
zmmailboxdctl restart .
A principal desvantagem do DoSFilter é que ele funciona no nível do aplicativo e, portanto, só pode limitar a capacidade dos invasores de executar várias ações no servidor, sem limitar a capacidade de se conectar ao norte. Por esse motivo, as solicitações de autenticação ou envio de cartas enviadas ao servidor, embora obviamente sejam falhas, ainda serão um bom ataque de DoS antigo, que não pode ser interrompido em um nível tão alto.
Para proteger completamente seu servidor corporativo com o Zimbra OSE, você pode usar uma solução como Fail2ban, que é uma estrutura que pode monitorar constantemente os logs do sistema de informações em busca de ações repetidas e bloquear o invasor alterando as configurações do firewall. O bloqueio em um nível tão baixo permite que você desabilite os invasores no estágio da conexão IP ao servidor. Assim, o Fail2Ban pode complementar perfeitamente a proteção criada com o DoSFilter. Vamos descobrir como você pode fazer amizade com o Fail2Ban Zimbra OSE e, assim, aumentar a segurança da sua infraestrutura de TI.
Como qualquer outro aplicativo de classe empresarial, o Zimbra Collaboration Suite Open-Source Edition mantém registros detalhados de seu trabalho. A maioria deles é armazenada na pasta
/ opt / zimbra / log / como arquivos. Aqui estão apenas alguns deles:
- mailbox.log - Logs do serviço de correio do Jetty
- audit.log - logs de autenticação
- clamd.log - logs do antivírus
- freshclam.log - registros de atualização de antivírus
- convertd.log - logs do conversor de anexos
- zimbrastats.csv - logs de desempenho do servidor
Os logs do Zimbra também podem ser encontrados no arquivo
/var/log/zimbra.log , onde são mantidos os logs do Postfix e do próprio Zimbra.
Para proteger nosso sistema da força bruta, monitoraremos o
mailbox.log ,
audit.log e
zimbra.log .
Para que tudo funcione, é necessário que Fail2Ban e iptables estejam instalados no seu servidor com o Zimbra OSE. Se você usa o Ubuntu, pode fazer isso usando os
comandos dpkg -s fail2ban , mas se você usa o CentOS, pode verificar isso usando os
comandos fail2ban instalados na lista yum . No caso de você não possuir o Fail2Ban instalado, instalá-lo não será um problema, pois este pacote está em quase todos os repositórios padrão.
Após a instalação de todo o software necessário, você pode configurar o Fail2Ban. Para fazer isso, crie um arquivo de configuração
/etc/fail2ban/filter.d/zimbra.conf , no qual escrevemos expressões regulares para os logs do Zimbra OSE que corresponderão a tentativas incorretas de login e acionarão os mecanismos Fail2Ban. Aqui está um exemplo do conteúdo do zimbra.conf com um conjunto de expressões regulares correspondentes a vários erros gerados pelo Zimbra OSE quando uma tentativa de autenticação falha:
# Fail2Ban configuration file [Definition] failregex = \[ip=<HOST>;\] account - authentication failed for .* \(no such account\)$ \[ip=<HOST>;\] security - cmd=Auth; .* error=authentication failed for .*, invalid password;$ ;oip=<HOST>;.* security - cmd=Auth; .* protocol=soap; error=authentication failed for .* invalid password;$ ;oip=<HOST>;.* security - cmd=Auth; .* protocol=imap; error=authentication failed for .* invalid password;$ \[oip=<HOST>;.* SoapEngine - handler exception: authentication failed for .*, account not found$ WARN .*;ip=<HOST>;ua=ZimbraWebClient .* security - cmd=AdminAuth; .* error=authentication failed for .*;$ ignoreregex =
Depois de compiladas as expressões regulares do Zimbra OSE, é hora de começar a editar a configuração do Fail2ban. As configurações deste utilitário estão localizadas no arquivo
/etc/fail2ban/jail.conf . Para o caso, faremos backup usando o comando
cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.conf.bak . Depois disso, vamos trazer esse arquivo para o seguinte formulário:
# Fail2Ban configuration file [DEFAULT] ignoreip = 192.168.0.1/24 bantime = 600 findtime = 600 maxretry = 5 backend = auto [ssh-iptables] enabled = false filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=admin@company.ru, sender=fail2ban@company.ru] logpath = /var/log/messages maxretry = 5 [sasl-iptables] enabled = false filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, dest=support@company.ru] logpath = /var/log/zimbra.log [ssh-tcpwrapper] enabled = false filter = sshd action = hostsdeny sendmail-whois[name=SSH, dest=support@ company.ru] ignoreregex = for myuser from logpath = /var/log/messages [zimbra-account] enabled = true filter = zimbra action = iptables-allports[name=zimbra-account] sendmail[name=zimbra-account, dest=support@company.ru ] logpath = /opt/zimbra/log/mailbox.log bantime = 600 maxretry = 5 [zimbra-audit] enabled = true filter = zimbra action = iptables-allports[name=zimbra-audit] sendmail[name=Zimbra-audit, dest=support@company.ru] logpath = /opt/zimbra/log/audit.log bantime = 600 maxretry = 5 [zimbra-recipient] enabled = true filter = zimbra action = iptables-allports[name=zimbra-recipient] sendmail[name=Zimbra-recipient, dest=support@company.ru] logpath = /var/log/zimbra.log bantime = 172800 maxretry = 5 [postfix] enabled = true filter = postfix action = iptables-multiport[name=postfix, port=smtp, protocol=tcp] sendmail-buffered[name=Postfix, dest=support@company.ru] logpath = /var/log/zimbra.log bantime = -1 maxretry = 5
Embora este exemplo seja bastante universal, vale a pena explicar alguns parâmetros que você pode querer alterar ao configurar o Fail2Ban:
- Ignoreip - com esse parâmetro, você pode especificar um ip ou sub-rede específica, os endereços dos quais Fail2Ban não deve verificar. Normalmente, a rede interna da empresa e outros endereços confiáveis são adicionados à lista ignorada.
- Bantime - O horário em que o invasor banirá . Medido em segundos. Um valor de -1 significa uma proibição ilimitada.
- Maxretry - O número máximo de vezes que um endereço IP pode tentar acessar o servidor.
- Sendmail - Uma configuração que permite enviar automaticamente alertas por email sobre a operação do Fail2Ban.
- Findtime - Uma configuração que permite definir o intervalo de tempo após o qual o endereço IP pode tentar novamente acessar o servidor após o número máximo de tentativas com falha ter sido esgotado (parâmetro maxretry)
Após salvar o arquivo com as configurações de Fail2Ban, resta apenas reiniciar este utilitário usando o
comando service fail2ban restart . Após a reinicialização, os principais logs do Zimbra começarão a ser constantemente monitorados quanto à conformidade com expressões regulares. Graças a isso, o administrador poderá eliminar virtualmente qualquer possibilidade de um invasor entrar não apenas nas caixas de correio do Zimbra Collaboration Suite, mas também proteger todos os serviços executados no Zimbra OSE, além de estar ciente de qualquer tentativa de obter acesso não autorizado.
Para todas as perguntas relacionadas ao Zextras Suite, você pode entrar em contato com o representante da Zextras, Ekaterina Triandafilidi, pelo e-mail katerina@zextras.com