Previna-se contra o spam com o Exim + greylistd, parte 1

Spam prevention with Exim and greylistd – Part 1
Autor original: Ryan Cartwright
Publicado originalmente no:
https://www.freesoftwaremagazine.com
Tradução: Roberto Bechtlufft

Os meios tradicionais de proteção anti-spam envolvem o uso de regras de detecção bayesianas (geralmente com o SpamAssassin) nas mensagens depois delas serem aceitas pelo seu servidor. A maioria dos administradores de sistemas encarregados de servidores de email já tiveram que lidar com as constantes reclamações de usuários que perguntam: “você não pode impedir que esses spams sejam enviados?” Claro que você não pode impedir que alguém envie uma mensagem, mas pode impedir que essa mensagem seja aceita. É aí que entra a greylist, ou lista cinza.

De certa forma, estes dois artigos são uma continuação de meu artigo anterior sobre a prevenção do spam em servidores de email com o exim. Encare-o como um complemento. Se estiver começando do zero, pode ser uma boa idéia ler o artigo anterior primeiro.

O que é uma greylist?

As técnicas tradicionais contra o spam aplicam os conceitos de blacklists (listas negras) e whitelists (listas brancas). A blacklist é uma lista de remetentes dos quais o servidor sempre deve recusar os emails, a whitelist é o contrário. As duas listas costumam ser gerenciadas manualmente ao nível do usuário ou do administrador de sistemas.

A greylist é uma terceira lista, de natureza mais temporária. Quando o remetente tenta enviar uma mensagem ao servidor, o servidor recusa a mensagem e solicita que seja feita uma nova tentativa mais tarde. Então, o remetente é adicionado à greylist. A idéia é a de que servidores de email legítimos vão tentar novamente após um dado período de tempo. Os spammers costumam usar seus próprios servidores ou ter um instalado como parte de uma botnet. Eles usam agentes de entrega que fazem o estilo “bater e correr”, e que provavelmente não vão fazer uma segunda tentativa de entrega para o mesmo destinatário. O conceito de greylists já circula há algum tempo com algumas alterações, mas a maioria das implementações modernas segue o artigo de Evan Harris sobre o assunto.

O método de greylist no qual vou me focar, o greylistd, também tem duas configurações de tempo limite (o popular timeout). Qualquer remente que tentar um novo envio cedo demais será recusado, e aquele que não tentar novamente dentro do tempo determinado será movido da greylist para a blacklist. O remetente que obtiver sucesso na nova tentativa será adicionado à whitelist e não será recusado pelo greylistd na próxima entrega. Na figura 1 temos um diagrama resumindo o processo.

Veja que há outro método de prevenção contra spam que por vezes também é chamado de greylist. Ele consiste em um processo desafio-resposta, no qual novos remetentes (apenas endereços de email, neste caso) recebem uma reposta automática solicitando que visitem uma página na internet ou que respondam à resposta automática para confirmar que são remetentes autênticos. Não vou falar sobre isso aqui, nem defender que isso impede o spoofing (mascaramento) de emails. Nesse contexto, trata-se de uma solução um pouco melhor que aquelas respostas automáticas com avisos de “Você nos enviou spam”.


Figura 1: um típico processo de greylist

Sobre os “remetentes”

Quando falo em “remetentes”, não me refiro apenas ao email do emissor. Os spammers já usam o spoofing de email como disfarce faz tempo, e raramente usam um mesmo endereço de remetente duas vezes. É por isso que qualquer tentativa de filtragem baseada apenas no endereço do remetente não vai dar certo. Os métodos modernos de identificação de remetente associam o host e o endereço de envio. O greylistd mantém suas listas usando o host de envio, o endereço do remetente e o endereço do destinatário. Isso adiciona a dimensão de que só porque uma dobradinha remetente/host teve sucesso na entrega de email para um usuário local não deve necessariamente receber permissão de envio para todos os usuários. Se isso fosse permitido, bastaria que um spammer conseguisse enviar com sucesso um email para um endereço local.

Configuração

Presumo que você tenha o Exim instalado e em execução. Estou tomando como base um sistema Debian (Etch) com o Exim 4, para manter a consistência com os artigos anteriores. Caso use o Postfix, dê uma olhada no pacote postgrey. Este é o procedimento para usar uma greylist com o Exim 4 no Debian:

  1. Faça backup dos arquivos de configuração do Exim (um cp -R /etc/exim4 /etc/exim4.pre-greylist vai cuidar disso no Debian). Mesmo que você tenha muita experiência, não pule esta etapa.
  2. Instale o greylistd pelo seu gerenciador de pacotes favorito (apt-get install greylistd, no meu caso).
  3. Como era de se imaginar, configurar o greylistd consiste em editar o arquivo /etc/greylistd/config. Não será preciso mudar muita coisa, mas fique atento com a seção [timeouts], especialmente com o item retryMin. A idéia é garantir que spammers enviando várias mensagens em uma mesma leva para o mesmo endereço local sejam sempre rejeitados, mas se o valor for definido muito alto pode haver um atraso muito grande na entrega do email legítimo, o que pode desagradar a seus usuários. Eu diria que 300 segundos (5 minutos) é um valor razoável.

Também pode ser necessário adicionar o usuário Debian-exim ao grupo greylist: useradd Debian-exim greylist. Talvez isso já tenha sido feito na instalação do greylist – nesse caso, o debconf deve tê-lo alertado. Não esqueça de reiniciar o daemon greylistd quando acabar de editar a configuração (/etc/init.d/greylistd restart).

  1. Também será preciso reconfigurar o Exim para usar o greylistd. Se estiver usando a configuração padrão do Debian para o Exim4, use o script que vem com o pacote greylistd. Entre com um greylistd-setup-exim4 add para adicionar as opções de configuração à ACL adequada.

Caso não use a configuração multi-arquivo padrão do Debian para o Exim (ou caso não aprecie a idéia de confiar a configuração do seu MTA a um script) leia os arquivos do diretório /usr/share/doc/greylistd/examples/ para obter instruções sobre o que adicionar e onde. As instruções são bem diretas.

  1. Reinicie o Exim: um /etc/init.d/exim4 restart dá conta disso.

Acompanhe o log principal do exim (tail -f /var/log/exim4/mainlog) para saber se deu tudo certo. Deve haver entradas deste tipo no log:

2008-09-11 06:25:59 H=([117.4.26.192]) [117.4.26.192] F=<a.sender@somedomain.com> temporarily rejected RCPT <an.address@yourdomain.com>: greylisted.

Logo surgirão entradas com o mesmo host e os mesmos endereços de remetente e destinatário, mas dessa vez registradas como entregues normalmente.

Se tudo sair como planejado, a quantidade de SPAM nas caixas de correio dos usuários deve diminuir. Pode haver um pequeno atraso na entrega do email de seus usuários, mas nada muito significativo. E lembre a seus usuários que a idéia do email não é a de ser um meio de comunicação instantânea. As greylists podem se tornar menos eficiente conforme os spammers forem descobrindo maneiras de enganá-las, mas por enquanto elas funcionam e – ao menos em plataformas livres – são bem fáceis de configurar.

No próximo artigo, vou explicar como manter uma greylist e como acompanhar os itens da lista.

Confira a segunda parte em: https://www.hardware.com.br/dicas/spam-greylistd2.html

Créditos a Ryan Cartwrighthttps://www.freesoftwaremagazine.com
Tradução por Roberto Bechtlufft <robertobech at gmail.com>

Ver Mais

Postagem relacionada