可能重复:
我的服务器被黑了 紧急求助
我配置了 dovecot + postfix + mysql。几天前我收到 DC 的辱骂,说我发送了垃圾邮件。
而实际上,在 /var/log/mail.log 中,我发现了不是我本人或我的网站发送邮件的记录。我已阻止了 25 端口的发送,以防万一。首先,我已 greped 所有 PHP 脚本的 base64_decode、eval 等。没有成功。我还通过将 php 的邮件功能添加到 disable_function 列表来将其关闭。但垃圾邮件仍然从我的服务器发出,我不知道它来自哪里。哪个应用程序或哪个脚本导致这种情况。
在 /var/log/mail* 日志中,我只看到电子邮件已发送。我可以通过查看 /var/spool/postfix/... 来查看其内容。但我需要找到发送它的 PID 或 PHP 脚本。
您对如何操作有什么想法吗?我看到电子邮件来自“root@...”,所以可能是 root 级别运行后门或类似的东西。请帮忙。
答案1
这肯定像是有人在你的机器上做了一些相当恶意的事情。
首先,您可能需要检查 /tmp。攻击者经常将他们的“程序”放在那里,因为他们可以轻松访问那里。只需列出文件并查找任何异常即可。
接下来,获取进程列表“ps auxf”,它应该会为您提供嵌套概述。逐行查看,看看是否有您不知道的进程正在运行。如果有不熟悉的内容,请谷歌搜索名称,看看 interwebz 是否知道一些内容。
您还可以执行“netstat -nap”来查看网络连接及其所属的进程。
查找这个问题可能是一项相当艰巨的工作,但如果您在邮件日志中没有看到有关来自其他地方的连接的信息,那么听起来就像是您的服务器上的某个东西出了问题。
答案2
如果您在 netstat 中没有看到任何可疑连接并且已经关闭了端口 25,则垃圾邮件发送者很可能使用本地/usr/bin/sendmail
通过 php Mail() 发送,而不是从外部连接。
当所有其他方法都失败时,您还可以/usr/bin/sendmail
用打印其父进程的 PID 的脚本来替代,如下所示:
#!/bin/bash
echo $PPID > /tmp/parent_pids.log