Detectar spammers no meu servidor


12

Recentemente, recebi uma Undelivered Mail Returned to Senderao enviar meu boletim para um dos meus 1500 clientes. Meu site usa um procedimento de inscrição dupla para garantir que o usuário deseje explicitamente receber meu boletim.

A mensagem de erro:

smtp; 554 ...
    Swisscom AG IP: 94.130.34.42, You are not allowed to send us mail. Please
    refer to xyz.com if you feel this is in error.

Eu recebi um exemplo de email de spam (do provedor de email do servidor de recebimento):

Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100
From: "Servizi online - Poste Italiane" <posteitaliane@test123.it>
Subject: Abbiamo ricevuto una segnalazione di accredito
Date: Mon, 12 Feb 2018 11:32:03 -0500

O provedor também declarou que meu servidor parece estar hackeado. Ele afirmou ainda que "o servidor de email do destinatário simplesmente registrou o rDNS apresentado pelo IP de conexão, neste caso mail.com ([94.130.34.42])" - o que definitivamente não é como eu configurei minha entrada de rDNS (mail.lotsearch.de) para o meu endereço IP. Portanto, se eu entendi o rDNS corretamente, o servidor de email que solicita uma consulta ao IP do remetente solicita uma entrada do rDNS (94.130.34.42 => deve resolver para => mail.lotsearch.de, o que definitivamente acontece quando eu testá-lo na minha máquina local via $ host 94.130.34.42)

Como é possível falsificar rDNS? Não consigo imaginar como isso funcione tecnicamente (apenas com um ataque intermediário em algum lugar da infraestrutura entre o servidor de recebimento e o meu servidor).

O provedor mencionou também que "é provável que uma máquina conectando-se ao meu IP tenha sido comprometida e enviando essas mensagens por meio de conexões diretas ao servidor de email do destinatário (também conhecido como MX direto)". O que direct MXsignifica isso ? Alguém roubou ou encontrou credenciais de correio vazadas em uma das minhas contas de correio e as usou para o envio de correio?

O que fiz até agora para garantir que meu servidor NÃO seja / não será invadido:

  • procurou os logs de correio ( var/log/mail*): nada de especial lá
  • verificou os logs de login do ssh ( last, lastb): nada de anormal
  • verificado se o postfix é retransmitido: não, não (verificado via telnet)
  • verificado quanto a malware via clamav: nenhum resultado
  • fail2ban instalado e configurado para ssh, postfix e dovecot
  • instalou os patches / atualizações mais recentes para o Ubuntu 16.04 (eu faço isso toda semana)
  • verifiquei se meu endereço IP está em qualquer lista negra: não está
  • entrada rDNS verificada no console de gerenciamento do meu provedor de hospedagem: está definido corretamente como mail.lotsearch.de.
  • senhas alteradas de todas as contas de email
  • chaves públicas alteradas para acesso ao shell

Mais importante: não havia informações sobre posteitaliane@test123.itos logs. Portanto, se meu servidor fosse mal utilizado por um remetente de spam (por causa de credenciais de smtp vazadas em uma das contas de email), eu veria isso nos arquivos de log.

A última possibilidade em que consigo pensar é que um invasor colocou malware no meu servidor que ainda não encontrei.

Como posso monitorar o tráfego de mensagens enviadas (por processo e por porta)?

Monitorar apenas a porta de saída 25 não ajudaria, pois só interceptaria emails irregulares enviados via postfix, mas não o tráfego de email causado por uma possível infecção por malware (se o malware usar outra porta que 25 para enviar emails diretamente / se comunicar com os servidores de email destinatários) . Se eu monitorar o tráfego de saída em todas as portas, receberei um caminho para um arquivo de log enorme, no qual não posso procurar atividades suspeitas com eficiência.

EDIT - Adicionado teste para relé aberto:

$ telnet mail.lotsearch.de 25
$ HELO test@test.de
250 mail.lotsearch.de
$ MAIL FROM: test@test.com
250 2.1.0 Ok
$ RCPT TO:<realEmail@gmail.com>
454 4.7.1 <realEmail@gmail.com>: Relay access denied

EDIT - Executando webapps


"Se eu monitorar o tráfego de saída em todas as portas" ... Por quê? Que outro tráfego este servidor de email está enviando? Tem certeza de que não configurou um relé aberto? E ninguém com acesso para enviar email no servidor vazou credenciais?
Daniel Widrick

@DanielWidrick O servidor de e-mail também é usado como servidor da web; portanto, o tráfego em 443 e 80 também é possível. Pensei em algum tipo de malware colocado no meu servidor se comunicando diretamente com servidores de correio externos (não pelo postfix padrão do servidor de correio). Sobre o relé aberto: editei minha pergunta com a verificação que realizei para garantir que não haja relé aberto. Sua última pergunta é difícil de responder, pois eu não sei sobre a "integridade" dos computadores dos meus clientes (onde as contas de email do meu servidor estão configuradas) ou se eles infectaram com malware / keylogger que obteve credenciais etc.
mfuesslin

Disco é barato. Na sua situação, existe um argumento válido para manter um ano de registros. Considere usar o syslog etc para enviá-los diretamente do servidor.
Criggie

Respostas:


13

Antes de chegar à minha sugestão, quero comentar um pouco sobre o que seu provedor disse a você:

 Received: from mail.com ([94.130.34.42])
        by smtp-27.iol.local with SMTP
        id itOWeYZ6O42IFitOWe35TR; Tue, 13 Feb 2018 03:54:09 +0100

Isso não indica que o DNS reverso para 94.130.34.42 é (ou era) mail.com. Em vez disso, indica que o cliente SMTP enviou mail.comem sua HELO(ou EHLO) linha. (Um servidor de email bem configurado teria rejeitado completamente essa conexão, mas isso é na Swisscom, não você ...) Esta linha não indica nenhuma entrada DNS reversa. Se tivesse, teria aparecido entre parênteses. Por exemplo:

Received: from mail-io0-f197.google.com (mail-io0-f197.google.com [209.85.223.197])

Nesse caso, o primeiro nome do host é o que o servidor de email se identificou como no seu EHLO. O segundo nome do host é o DNS reverso registrado no momento em que a conexão foi estabelecida.

A seção 4.4 da RFC 5321 explica o formato da linha Received:, com uma gramática formal.

No seu caso, nenhum DNS reverso foi registrado. Como o seu endereço IP tem um registro PTR, isso pode ocorrer porque eles não o consultaram ou porque houve uma falha temporária no DNS.


Agora, parece que você executa um serviço de hospedagem na web e possui vários aplicativos da web. Se um deles estiver comprometido, ele poderá começar a enviar spam. Geralmente, eles fazem conexões diretas com servidores de correio remoto, pesquisando seus registros MX e conectando-se à porta 25, como se fossem um servidor de correio, em vez de entregarem correio ao spool de correio local ou a um serviço de correio autenticado nas portas 587 ou 465 como aplicativos da web legítimos.

Uma maneira de parar isso é implementando uma regra de firewall que impede conexões de saída na porta 25, a menos que o usuário seja o usuário do servidor de email. Por exemplo:

iptables -I OUTPUT -m owner ! --uid-owner postfix -m tcp -p tcp --dport 25 -j REJECT

Os aplicativos da Web não podem mais entregar emails diretamente para servidores SMTP remotos, mas devem usar o spool de email local ou um serviço de email autenticado.


Obrigado pela sua resposta. Como preciso especificar a iptablesregra para permitir que o usuário do postfix e do plesk envie e-mails (como eu acho que o Painel Plesk envia e-mails diretamente e não via postfix). Também é possível configurar o crondaemon (meus cronjobs) para enviar e-mails via smtp via postfix? Eu não quero adicionar o usuário cron ao iptables (como outra exceção), pois seria mais seguro permitir que o tráfego de mensagens, sempre que possível, passe pelo postfix. É possível deixar o crontab usar o postfix para enviar logs de erro? Devo colocar isso em uma nova pergunta aqui no serverfault?
Mfuesslin


Ok, mas se eu quiser especificar vários usuários que permitam enviar dados pela porta 25, posso apenas copiar a regra iptables e adicionar uma segunda com o outro usuário ou preciso especificá-la em uma regra?
22418 mfuesslin

Provavelmente não; você teria que criar uma cadeia de usuários, eu acho.
Michael Hampton

Uma coisa sobre a regra do iptables fornecida: Você tem certeza de que não precisamos definir a regra para o usuário root? Como o processo mestre do postfix é executado rootna maioria dos casos. Ou o processo mestre do postfix gera subprocessos usando postfix-user para enviar e-mails / fazer coisas? Eu tentei descartar seus iptables, e-mails não pôde ser entregue ... Se eu fizer ps -ef | grep "postfix"eu vejo alguns subprocessos rodando pelo postfixprocesso mestre -user e um correndo por root...
mfuesslin

7

Hoje em dia, tentar criar seu próprio servidor de correio é, na maior parte, uma batalha perdida e é melhor encontrar um serviço acessível. Tendo dito isto..

  • Olhe para os seus logs indo para o provedor que o bloqueou e veja se você pode encontrar algo suspeito. É possível, e acontece com frequência, que alguém esqueça que se inscreveu no seu boletim informativo e o marque como spam. Então, dependendo do provedor, você pode entrar na lista negra do provedor, mesmo que não tenha feito nada de errado.

  • Separe as correspondências em massa de todos os seus outros emails em dois servidores.

  • Mantenha os registros por semanas, no mínimo e nos meses melhores. Então, sempre que algo acontece, você pesquisa.

  • Verifique seus logs diariamente em busca de situações semelhantes em qualquer provedor e examine-os diariamente ou mais rapidamente. O segundo em que você é bloqueado e se continuar tentando enviá-lo pode piorar. Você pode passar de um bloqueio temporário para um permanente. A ser denunciado a uma lista negra.

  • Não tenho certeza de como eles o implementam, mas uma coisa que sei que muitos provedores fazem para serviços de correio de saída é que, no segundo em que um provedor / IP bloqueia um email, nenhum outro email é tentado a ser enviado. Idealmente, você quer algo assim. Como o segundo fica bloqueado, o envio de mais agravará o problema.


4
@mfuesslin Mailchimp seria a plataforma errada para usar. O Mailchimp é um Serviço de Marketing por Email, o que você precisa é um Serviço de Email Transacional. Veja Mandrill (de propriedade das mesmas pessoas que possuem o Mailchimp). São US $ 20 por mês para um bloco de 25.000 e-mails. Nao muito caro. Enviar tantos e-mails diariamente a partir do seu próprio endereço IP resultará apenas em uma alta taxa de caixa de spam ... é uma batalha perdida. Você pode contratar uma equipe inteira para não fazer nada além de atender às suas taxas de entrega o dia todo, todos os dias, e ainda assim não ser tão bom quanto usar um Serviço Transacional.
SnakeDoc

1
As pessoas que usam serverfault.com devem ser capazes de executar um servidor de correio; não é tão difícil de fazer. Dito isto, não parece que o servidor de email esteja com defeito, parece uma página da Web comprometida que está enviando diretamente o spam.
wurtel

1
@ Wurtel só porque se tem conhecimento de como fazer algo, isso não significa que faz sentido fazê-lo. Se você pode encontrar um serviço por X / mês para fazer o que você precisa e leva 4X / mês em tempo / esforço para fazer você mesmo, então realmente não faz sentido fazê-lo.
Francisco1844

1
@wurtel Capaz? Sim. Entregar consistentemente na caixa de entrada, enviar mais de 1500 e-mails por dia? Questionável e provavelmente não. - Ninguém está dizendo que você não pode fazer isso ... apenas que fazê-lo bem, de forma consistente e por um longo período de tempo, custará muito mais do que US $ 20 por mês .
SnakeDoc 15/0218

2
Eu mantenho esse servidor há mais de 15 anos, enviando regularmente de 30 a 50 mil mensagens de lista de emails, além de centenas de mensagens diariamente para vários domínios, e raramente passo mais de uma hora por mês (além das atualizações regulares de aptidão). O servidor está servindo vários sites de qualquer maneira, portanto, não há investimento extra lá. Estou um pouco triste que as pessoas estejam advogando a compra de serviços para fazer coisas que você pode fazer facilmente. Nada de errado com um pouco de aprendizado ao longo do caminho.
Wurtel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.