在我的服务器上检测垃圾邮件发送者


12

最近Undelivered Mail Returned to Sender,我在将新闻通讯发送给1500个客户之一时收到了一封。我的网站使用双重选择流程来确保用户明确希望接收我的新闻通讯。

错误信息:

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.

我收到了一个垃圾邮件示例(来自接收邮件服务器的邮件提供商):

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

该提供程序还指出,我的服务器似乎已被黑客入侵。他进一步指出,“在这种情况下,收件人邮件服务器只是记录了由连接IP呈现给它的rDNS mail.com ([94.130.34.42])”,这绝对不是,因为我为我的IP地址配置了rDNS条目(mail.lotsearch.de)。因此,如果我正确理解了rDNS,则接收邮件服务器会向发件人IP查询一个rDNS条目(94.130.34.42 =>应该解析为=> mail.lotsearch.de,当我通过本地计算机对其进行测试时,它肯定会做到这一点$ host 94.130.34.42)。

如何欺骗rDNS?我无法想象这在技术上如何工作(仅在接收邮件服务器和我的服务器之间的基础结构中的中间人攻击时)。

提供者还提到,“很可能是从我的IP连接的计算机受到了损害,并通过直接连接到收件人邮件服务器(也称为直接MX)发送这些消息”。什么direct MX意思 有人窃取或发现泄漏的邮件凭据到我的一个邮件帐户中,并将其用于邮件发送?

到目前为止,我所做的是确保我的服务器未/不会被黑客入侵:

  • 搜索邮件日志(var/log/mail*):那里没有什么特别的
  • 检查ssh登录日志(lastlastb):没有什么不寻常
  • 检查postfix是否可以中继:否,不可以(通过telnet检查)
  • 通过clamav检查了恶意软件:无结果
  • 为ssh,postfix和dovecot安装并配置了fail2ban
  • 为Ubuntu 16.04安装了最新补丁/更新(我每周这样做)
  • 检查我的IP地址是否在任何黑名单中:否
  • 我的托管服务提供商的管理控制台中已验证的rDNS条目:已正确设置为mail.lotsearch.de
  • 更改所有邮件帐户的密码
  • 更改了用于shell访问的公共密钥

更重要的是:posteitaliane@test123.it日志中没有有关的信息。因此,如果我的服务器被垃圾邮件发送者滥用(例如,由于邮件帐户之一的smtp凭证泄漏),我将在日志文件中看到它。

我能想到的最后一种可能性是,入侵者将恶意软件放置在我尚未发现的服务器上。

如何监视外发邮件流量(每个进程和每个端口)?

仅监视传出端口25将无济于事,因为这只会捕获通过后缀发送的不规则邮件,而不是由潜在的恶意软件感染引起的邮件流量(如果恶意软件使用25以外的其他端口直接发送邮件/与收件人邮件服务器通信) 。如果我监视所有端口上的传出流量,则将获得通往巨大日志文件的方法,该文件无法有效地搜索可疑活动。

编辑-添加了针对开放继电器的测试:

$ 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

编辑-运行webapps


“如果我监视所有端口上的传出流量” ...为什么?该邮件服务器还会发送什么其他流量?您确定没有配置开放式继电器吗?而且没有人可以在服务器上发送邮件的凭证泄漏了吗?
丹尼尔·威德里克'18

@DanielWidrick邮件服务器也用作Web服务器,因此443和80处的流量也是可能的。我想到了放置在我的服务器上的某种恶意软件,该恶意软件直接与外部邮件服务器通信(而不是通过默认邮件服务器后缀)。关于开放中继:我通过执行检查来编辑问题,以确保没有开放中继。你的最后一个问题是很难回答,因为我不知道在我的客户的电脑(我的服务器的电子邮件帐户被配置)“健康”做,或者如果他们感染了恶意软件/键盘记录器,其获得的证书等
mfuesslin

磁盘便宜。在您的情况下,有一个有效的理由可以保留一年的原木价值。考虑使用syslog等直接将它们从服务器中寄出。
Criggie '18

Answers:


13

在我提出建议之前,我想对您的提供者对您说的话发表一些评论:

 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

并不表示94.130.34.42的反向DNS是(或曾经是)mail.com。相反,它表示SMTP客户端mail.com在其HELO(或EHLO)行中发送。(配置良好的邮件服务器将完全拒绝此连接,但这是在Swisscom上,而不是您...)。此行并不表示任何反向DNS条目。如果确实如此,它将出现在括号内。例如:

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

在这种情况下,第一个主机名是邮件服务器在中标识自己的名称EHLO。第二个主机名是建立连接时记录的反向DNS。

RFC 5321第4.4节使用正式的语法说明了Received:行的格式。

在您的情况下,没有记录反向DNS。由于您的IP地址具有PTR记录,这可能是因为他们没有查找它,或者是暂时的DNS故障。


现在,您似乎正在运行网络托管服务,并且拥有大量的Web应用程序。如果其中之一遭到破坏,则可能开始发送垃圾邮件。它们通常通过查找它们的MX记录并连接到端口25来直接连接到远程邮件服务器,就好像它们本身实际上是邮件服务器一样,而不是将邮件传递到本地邮件后台处理程序或通过端口587或465进行身份验证的邮件服务就像合法的网络应用一样。

我阻止这种情况的一种方法是实施防火墙规则,除非用户是邮件服务器用户,否则它会阻止端口25上的传出连接。例如:

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

Web应用程序不再可以将邮件直接直接传递到远程SMTP服务器,而必须使用本地邮件后台打印程序或经过身份验证的邮件服务。


谢谢您的回答。我需要如何指定iptables规则以允许postfix和plesk用户发送电子邮件(因为我认为Plesk Panel确实是直接发送邮件,而不是通过postfix发送邮件)。是否还可以将crondaemon(我的cronjobs)配置为通过postfix通过smtp发送电子邮件?我不想将cron用户添加到iptables中(作为另一个例外),因为在可能的情况下让邮件流量通过后缀会更安全。是否可以让crontab使用postfix发送错误日志?我是否应该在serverfault上将其添加到新问题中?
mfuesslin

我不知道如何用Plesk做到这一点。无论如何,我们在这里不处理有关Plesk的问题
迈克尔·汉普顿

好的,但是如果我想指定允许通过端口25发送数据的多个用户,我可以只复制iptables规则并与其他用户添加第二个规则,还是必须在一个规则中指定它?
mfuesslin

可能不会; 我认为您必须创建一个用户链。
迈克尔·汉普顿

关于提供的iptables规则的一件事:您确定我们不需要为用户设置规则root吗?因为root在大多数情况下,后缀的主进程由运行。还是postfix主进程使用postfix-user来发送电子邮件/执行其他操作来生成子进程?我尝试了您的iptables规则,无法发送电子邮件...如果我ps -ef | grep "postfix"看到了postfix-user 运行的一些子进程和运行root...的一个主进程
mfuesslin

7

在当今时代,尝试创建自己的邮件服务器在很大程度上是一场松懈的战斗,您最好能找到负担得起的服务。话说回来..

  • 查看前往阻止您的提供商的日志,看看您是否发现任何可疑的东西。某人忘记并订阅了您的时事通讯并将您标记为垃圾邮件的可能性很可能并且经常发生。然后,根据提供者的不同,即使您没有做错任何事情,您也可以进入提供者的黑名单。

  • 将群发邮件从您所有其他电子邮件中分离到两个服务器中。

  • 将日志至少保留数周,最好保留几个月。因此,只要有事情发生,您就可以进行研究。

  • 每天都要从任何提供商处检查日志,以查找类似情况,并每天或更快速地进行检查。第二秒钟,您将被阻止,如果继续尝试发送,则可能会变得更糟。您可以从一个临时性阻止变为一个永久性阻止。

  • 不确定他们如何实现它,但是我知道许多提供商都对出站邮件服务进行了操作,第二件事是提供商/ IP阻止了一封电子邮件,然后没有其他电子邮件试图发送。理想情况下,您想要这样的东西。由于第二个被阻止,发送更多只会加剧问题。


4
@mfuesslin Mailchimp将是错误的平台。Mailchimp是电子邮件营销服务,您需要的是事务性电子邮件服务。查看Mandrill(由拥有Mailchimp的同一个人拥有)。每个25,000封电子邮件每月20美元。不是很贵。每天从您自己的IP地址发送这么多电子邮件,只会导致垃圾邮件箱率很高……这是一场失败的战斗。您可以雇用整个团队什么也不做,只是每天都倾向于提高您的可交付性率,但仍然不如使用事务处理服务好。
SnakeDoc

1
使用serverfault.com的用户应该能够运行邮件服务器;这并不难。话虽如此,看来邮件服务器似乎没有故障,它看起来像是某些被入侵的网页直接发送了垃圾邮件。
wurtel '18

1
@wurtel仅仅因为有人知道如何做某事,并不意味着这样做就有意义。如果您能找到X / month的服务来完成所需的工作,而您却需要4个月/月的时间/精力来自己做,那么您自己做就没有任何意义。
Francisco1844

1
@wurtel有能力吗?是。始终如一地传递到收件箱,每天发送1500多封电子邮件?这是有问题的,甚至可能是问题。没有人说您做不到……仅是长期,出色地做到这一点,每月将花费您20多美元。
SnakeDoc '18

2
我已经在这样的服务器上维护了15年以上,除了为多个域每天发送大量邮件之外,还定期发送30-5万封邮件列表邮件,而且我每月很少花费一个小时以上(除了常规能力升级)。该服务器仍在为多个网站提供服务,因此没有额外的投资。对于人们提倡购买服务来做您可以轻松完成的事情,我感到有些难过。沿途学习一点都没错。
wurtel
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.