我的问题是关于防止 php 脚本发送邮件。它已被标记为另一个关于服务器安全的更一般问题的副本,但这不是这个问题的意义所在。
在与以某种方式将流氓 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)
在每个条目旁边看到。通过查看 mailq 中的垃圾邮件中的行来确定 RAT 的位置后
X-PHP-Originating-Script
,我可以找到并销毁有问题的文件,这可以在 5 天到数月之间的任何时间解决问题。如何完全阻止任何 php 脚本发送邮件?如果我进入disable_functions = mail
我的 php.ini 文件,我知道这会阻止使用内部函数,但不会阻止垃圾邮件发送者可以利用的自定义函数。我还有什么做错的?
警告:我知道 #2 并不能从根本上解决我的问题,但是在我了解了几年以来,我已经听取了建议并以我所了解的许多方式加强了我的服务器的安全性,我正在努力“处理邮件信誉问题”而不是“解决所有安全问题期间”。
这是我关于 ServerFault的最后一个相关问题的后续。
你有选择
但是,垃圾邮件发送者仍然可以编写自己的 SMTP 代码。
检查 SMTP 是否真的像这样被阻止
端口 25 的防火墙控制仍然是您的最佳选择,然后您可以告诉任何有效用户通过经过身份验证的服务器(如 mandrill 或其他 smtps (tcp/587) 上的服务器)发送电子邮件,或使用 3rd 方 ESP 的电子邮件 API
除非您使用防火墙方法,否则您仍然可以编写将通过套接字直接连接到 MX 服务器的 php 代码。
您还可以将 TCP/25 重定向到一个包罗万象的系统,这样您就可以监控谁受到了威胁或滥用。