Exim recebendo tentativas de login com HELO ylmf-pc? Veja o que é esse ataque de força bruta e como bloqueá-lo por ACL no WHM e no firewall CSF.
ylmf-pc é o nome de máquina que uma família antiga de robôs usa ao se apresentar para servidores de e-mail (o comando HELO ou EHLO do SMTP). Esses robôs rodam em computadores infectados no mundo todo e passam o dia tentando adivinhar senhas de contas de e-mail para depois usá-las no envio de spam. Nenhum servidor de e-mail legítimo se apresenta com esse nome, então é seguro recusar a conexão logo no HELO, antes de qualquer tentativa de senha.
Como saber se o seu servidor está sendo atacado
Conte quantas vezes o nome aparece no log do Exim:
grep -ci 'ylmf-pc' /var/log/exim_mainlog
E veja alguns exemplos, com o IP de origem:
grep -i 'ylmf-pc' /var/log/exim_mainlog | tail -n 5
As linhas típicas trazem authenticator failed for (ylmf-pc), seguido do IP entre colchetes e do código 535 Incorrect authentication data. Cada linha é uma senha errada.
grep 'A=dovecot' /var/log/exim_mainlog | grep '[email protected]'. Se aparecerem envios autenticados de IPs que o cliente não reconhece, troque a senha na hora e veja como rastrear envio de spam.Antes de começar
- Acesso root ao WHM e ao SSH.
- Faça um backup da configuração do Exim em WHM » Service Configuration » Exim Configuration Manager, aba Backup.
Como bloquear o HELO ylmf-pc no Exim
- Crie a lista de nomes bloqueados. Um nome por linha; assim você pode incluir outros no futuro sem mexer no Exim:
echo "ylmf-pc" >> /etc/heloblocks chmod 644 /etc/heloblocks - Abra o editor avançado do Exim. No WHM, vá em Service Configuration » Exim Configuration Manager e clique na aba Advanced Editor.
- Localize a caixa
custom_begin_smtp_helo, dentro da seção da ACL de HELO (acl_smtp_helo). Use a busca do navegador (Ctrl+F) para achar. - Cole a regra:
Não acrescente uma linhadrop condition = ${lookup{$sender_helo_name}lsearch{/etc/heloblocks}{yes}{no}} log_message = HELO bloqueado pela lista /etc/heloblocksacceptdepois dela. Umacceptnesse ponto encerra a ACL e faz o Exim pular as verificações de HELO que o cPanel aplica em seguida. - Clique em Save no fim da página. O WHM valida a sintaxe, recria o
/etc/exim.confe reinicia o Exim. Se houver erro, ele mostra e não aplica.
Como testar
De um computador fora do servidor, abra uma conexão na porta 25 e se apresente com o nome bloqueado:
nc servidor.seudominio.com.br 25
EHLO ylmf-pc
A conexão deve ser encerrada na hora. No servidor, a recusa aparece nos logs com a mensagem que você definiu:
grep -i 'heloblocks' /var/log/exim_mainlog /var/log/exim_rejectlog | tail -n 3
Muitos provedores de internet residencial bloqueiam a saída pela porta 25. Se o teste não conectar de jeito nenhum, faça a partir de outro servidor.
Reforço no firewall: CSF e cPHulk
O bloqueio no HELO derruba esse robô específico. Para os outros ataques de senha no e-mail, deixe o firewall bloquear o IP:
- CSF: a opção
LF_SMTPAUTH(padrão 5) bloqueia o IP depois de 5 falhas de autenticação no envio, eLF_POP3DeLF_IMAPDfazem o mesmo na leitura. Veja como configurar o CSF. - cPHulk: a proteção contra força bruta do próprio cPanel, em WHM » Security Center » cPHulk Brute Force Protection, também protege o e-mail. Use um dos dois como principal, para não ter clientes bloqueados em dois lugares.
Botnets como essa trocam de IP o tempo todo, por isso o bloqueio por IP sozinho nunca resolve: a regra no HELO corta o ataque antes de ele gastar recursos do servidor.
Problemas comuns
Salvei e o Exim não reiniciou
A regra provavelmente foi colada com erro (aspas tipográficas, por exemplo, quando copiada de um editor de texto). O WHM mostra a mensagem de erro; corrija e salve de novo. Em último caso, restaure o backup pela aba Restore.
Quero bloquear outros nomes
Acrescente uma linha por nome em /etc/heloblocks. Não precisa salvar de novo no WHM: o Exim lê o arquivo a cada conexão. Nunca inclua nomes genéricos, como localhost, sem ter certeza: alguns programas legítimos se apresentam assim.