![发送邮件并缩小执行该操作的脚本](https://linux22.com/image/1415577/%E5%8F%91%E9%80%81%E9%82%AE%E4%BB%B6%E5%B9%B6%E7%BC%A9%E5%B0%8F%E6%89%A7%E8%A1%8C%E8%AF%A5%E6%93%8D%E4%BD%9C%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我正在使用一台非常老旧的 Ubuntu 服务器,它以前是邮件服务器,后来被感染了。不幸的是,该服务器上有一个正在运行的网页。一些脚本/页面/恶意软件试图发送大量垃圾邮件 - 我知道,因为 /var/spool/postfix/maildrop 很快就满了。
我以为将 php5/cli/php.ini sendmail_path 更改为无效的内容会阻止这种情况。遗憾的是,这并没有阻止(我已重新加载 Apache)。服务器太旧了,甚至 iotop 都无法工作。(需要升级内核 + 软件包,但这不会发生)。
有什么方法可以缩小这里的主要问题吗?有没有办法检查哪个文件试图发送垃圾邮件,以便我可以删除它?
答案1
我怀疑不是你的邮件服务器被感染了。你的服务器上可能运行着一个垃圾邮件机器人,它直接发送电子邮件。如果你的电子邮件日志中没有记录垃圾邮件,那么很可能就是这种情况。
以下 IP 表规则将阻止垃圾邮件机器人和以其他用户 ID 身份运行的程序发送电子邮件。
iptables -A OUTPUT --dport 25 -m owner --uid-owner XX -j ACCEPT # Where XX is the UID of the Email server
iptables -A OUTPUT --dport 25 -j LOG --log-level 6 --log-prefix "Outgoing SMTP blocked:"
iptables -S OUTPUT --dport 25 -j DROP
您可能需要以 root 身份运行几次 netstat 命令,以查看哪些程序正在发送消息。我会使用类似这样的命令:
netstat -antp | grep :25
保持发行版的更新非常重要。使用 LTS,您可以每 2 年进行一次版本升级,而正常的发布周期是每 6 个月。像这样的软件包unattended-upgrades
可以在更新可用时应用更新。
答案2
感谢@BillThor 的帮助——非常感谢,超级用户这里有几个类似的问题,我设法做到了这一点:
1)禁用25端口(smtp)的输入和输出
iptables -A OUTPUT -p tcp --dport 25 -j DROP
iptables -A OUTPUT -p tcp --dport 25 -j LOG --log-level 6 --log-prefix "SMTP BLOCK:"
iptables -A INPUT -p tcp --dport 25 -j DROP
2)禁用服务器上的任何 imap/courier/pop/smtp 服务(它是旧的邮件服务器,现在已经不存在了,所以没有必要拥有这些服务)
3)我下载错误检测它立即向我显示了有问题的文件,例如 img23141243.php.jpg 或 img1321312.php.gif
清理这个旧的 Web 服务器帐户后,没有任何 apache2 连接到 :25。一直在通过记录端口 25 上的任何传出活动来监控这一点,并且
netstat -antp | grep :25
4)遗憾的是 LMD 没有发现服务器上所有的恶意软件,但我使用了HowToForge 文章关于如何将 sendmail 命令重定向到外部脚本,该脚本将记录每次发送邮件的尝试,并记录受感染文件文件夹的路径。多亏了它,我找到了被感染的 sql.php。