我的问题是关于如何阻止 php 脚本发送邮件。它已被标记为另一个关于服务器安全的更一般问题的重复,但这不是这个问题的内容。
经过与 hackerspammers 的长期而激烈的斗争,他们以某种方式将恶意的 base64 编码的 php 文件注入到我的 Debian / Apache / PHP 服务器上的各个 Web 目录中,(这场激烈的斗争涉及首先修补现有脚本并更改 ftp 密码、Web 服务密码和 mysql 密码,然后从头开始重建站点,安装 maldet - 这虽然遏制了问题但并未完全消除它 - 最后通过停止服务(但不卸载)完全关闭 postfix,然后在防火墙处阻止来自服务器的端口 25 流量)我仍然遇到问题。
我的问题消失了好几个月,而且根据 mxtoolbox 的说法,服务器已自动从黑名单中删除。但今天我收到一封 mxtoolbox 电子邮件,说我的服务器再次被许多服务列入黑名单。我完全不明白这是怎么回事,因为我已经禁用了传出端口 25 流量。
当出现问题时,我的 postfix mailq 会充满来自服务器上特定网络用户的数十万封电子邮件。
我的问题是:
鉴于我已经使用禁用了端口 25 流量
iptables -A OUTPUT -p tcp --dport 25 -j REJECT
,mxtoolbox 为何会报告我的服务器仍在发送垃圾邮件? 当我检查 mailq 时,邮件已备份。当我启动 postfix 时,mailq 中的项目并未按我预期的那样发送,并且我看到(delivery temporarily suspended: connect to 127.0.0.1[127.0.0.1]:10024: Connection refused)
每个条目旁边都有。X-PHP-Originating-Script
通过查看mailq 中的垃圾邮件行确定了 RAT 的位置后,我可以找到并销毁相关文件,从而解决 5 天到数月内出现的问题。我如何完全阻止任何 php 脚本发送邮件?如果我进入disable_functions = mail
我的 php.ini 文件,我知道这会阻止使用内部函数但不会阻止自定义函数,垃圾邮件发送者可以利用这些函数。我还做错了什么?
警告:我知道 #2 不能从根本上解决我的问题,但是在过去的几年中,我已经听取了建议并以尽可能多的我所知道的方式加强了服务器的安全性,我正在努力“处理邮件信誉问题”而不是“解决所有安全问题”。
这是我的后续最后一个相关问题这里是 ServerFault。
答案1
您有选择
- 删除后缀
- 删除 php-mail(Ubuntu/Debian 软件包名称)
然而,垃圾邮件发送者仍然可以编写自己的 SMTP 代码。
检查 SMTP 是否确实被阻止,如下所示
telnet alt4.gmail-smtp-in.l.google.com 25
答案2
端口 25 的防火墙控制仍然是您的最佳选择,然后您可以告诉任何有效用户通过经过身份验证的服务器(如 mandrill 或 smtps(tcp/587)上的其他服务器)发送电子邮件,或者使用第三方 ESP 的电子邮件 API
除非使用防火墙方法,否则您仍然可以编写通过套接字直接连接到 MX 服务器的 php 代码。
您还可以将 TCP/25 重定向到一个捕获所有系统的系统,这样您就可以监视哪些人受到了损害或滥用。