使用 iptables 阻止 PHP 邮件垃圾邮件

使用 iptables 阻止 PHP 邮件垃圾邮件

我托管了一个面向公众的 Web 服务器,该服务器运行 Debian Wheezy 以及最新版本的 Postfix、Apache、PHP、Spamassassin、ClamAV 和 rootkit hunter。Apache 配置了一些虚拟主机,每个虚拟主机都与一个用户绑定,并使用 suExec 和 Suhosin 进行保护。这些网站运行 Wordpress 和 ModX,根据平均规律,考虑到这台服务器上的安装数量,至少 20% 的网站在任何给定时间都会存在某种漏洞,无论是来自 CMS 本身还是来自过时的插件。

我收到了来自优秀的 MX Toolbox 网站的通知,该网站可以根据 100 多个黑名单监控 IP 地址。

当我听说我的 IP 地址再次被添加到黑名单时,我立即 ssh 进入,暂停 Postfix

postfix stop

等待几秒钟,查看邮件队列

mailq

由此我可以立即判断垃圾邮件的源用户/虚拟主机,因为所有邮件都来自“[电子邮件保护]",其中“mywebsite.com”是导致问题的虚拟主机上托管的域。

然后我运行手册恶意软件检测扫描使用优秀的 maldet,问题就会消失。如果我修补网站上所有已知的插件和软件,问题就会消失约 6 个月。如果我不这样做,它会在大约一周内再次出现。

为了测试目的,我让 Postfix 停用了好几个月,但有些木马显然绕过了邮件服务器并直接发送邮件。(我从服务器资源监控、黑名单监视和退回到我的域的垃圾邮件中了解到这一点。更不用说 Postfix mailq 中塞满了例如 65,000 封未发送的邮件。)

由于我更关心邮件的真实性,而不是通过我托管的网站发送电子邮件的能力,因此我采取了一些措施,即确保每个域的 SPF 记录不会将我自己的服务器识别为该域的权威邮件来源。至少这意味着我的域名不会被自动列入黑名单。

我的问题。有没有一种巧妙的方法,可以使用 IPTABLES 简单地阻止所有外发电子邮件?我的意思不仅仅是阻止使用电子邮件服务器 Postfix 发送的邮件,而是阻止所有可能导致我的服务器被列入黑名单的流量?

在我找到其他方法解决这个问题之前,我不介意禁止网站发送任何邮件。这不是理想的选择,因为我使用一些网站来开展自己的业务,但我可以同时找到其他解决方案。

答案1

您可以使用一条简单规则阻止所有传出的 SMTP 流量:

iptables -I OUTPUT -p tcp --dport 25 -j DROP

您可以扩展此功能以仅丢弃由www-data运行网站的用户发送的数据包:

iptables -I OUTPUT -p tcp --dport 25 -m owner --uid-owner www-data -j DROP

解决你的主要问题(网站首先被感染)的方法是阻止所有不需要的传入端口,以及传出端口,例如在发现你的防御系统存在最小漏洞后通常用于下载额外 rootkit 等的端口 80。

答案2

hazymat,我肯定你不想听到这个但是......

问题出在你身上,而不是 Postfix 身上

等到有人检测到垃圾邮件并不是管理计算机系统的可行方法。如果你有一支步枪,并把它放在家门口,你会等到警察来找你,然后才检查它是否丢失吗?

至少 20% 的网站会存在某种漏洞……如果我修补网站上所有已知的插件和软件,问题就会消失

这并不是说设置自动补丁检查和安装,而基本的 IDS 实际上需要您做出任何持续的承诺。

是的,您应该更加主动地管理外发电子邮件流量,但这是在基本安全实践的基础上进行改进。

相关内容