可能重复:
如何找出我的服务器是否被入侵?
最近,我收到了一个.ru域的“无法发送的邮件返回给发件人”的消息,这个消息是我确信不是由我或我写的任何代码发送的。 我正在使用Google Apps发送电子邮件,而服务器是云托pipe提供商的vanilla Ubuntu 10.04.1服务器。 我正在寻找我可以做的事情的清单,以确定我的服务器是否已经被入侵。 到目前为止,我已经通过Open Relaytesting (不是开放中继)运行域,运行netstat -an和ps aux来确定只有我想要监听端口的程序正在运行(SSH,Tomcat,MySQL,后缀(我不认为我可以禁用Avahi,因为我的云服务提供者如何工作))。 而且我运行了cat /etc/passwd来确保没有任何未知的用户。 还有什么我该做的?
您收到的邮件可能是“反向散射” ,即使用您的电子邮件地址发送的垃圾邮件以及.ru SMTP服务器反弹的结果。 不一定是因为你的服务器已经被盗用,并且从它发送的电子邮件。
运行wireshark等嗅探器,寻找可疑的连接,但我不认为你已经被入侵。
很可能有人只是欺骗你的电子邮件地址作为“发件人”。 这很容易做到这一点。 当他们发送垃圾邮件时,任何拒绝都会回到你身上(又名反向散射)。 许多电子邮件服务器将在NDR(反弹)中返回带有完整标题的电子邮件,以便确定是否属于这种情况。
如果您发现可疑邮件来自不属于您的服务器,那么我build议您向您的电子邮件中继添加发件人身份validation。 在这种情况下,你会希望你的logging引用谷歌的SPFlogging。
第一步是看看是否有人从你的服务器发送垃圾邮件。
首先通过你的邮件日志! 我已经习惯了,但我确定步骤是一样的。 看看你的邮件队列,看看是否有消息排队。 一个大的垃圾邮件运行总是会给你留下一天无法发送的邮件,因为垃圾邮件列表总是有无效的条目。
还parsing邮件日志。 对于exim,我使用grep'<='/ var / log / exim_mainlog | awk'{print $ 5}'| grep \ @ | sorting| uniq -c | sort -nk1查看各种人发送的邮件数量。
最后,检查退回邮件中的标题以查看邮件是否确实来自您的某个机器/实例。 你可能只需要SPFlogging。
不pipe你的服务器是否到处都在出血,你现在有机会得到一个好主意。
如果您发现垃圾邮件,请尝试查看他们作为哪个邮件用户发送。 更改该用户的密码。 通常随机垃圾邮件来自php脚本,php通常在邮件完整标题中包含一个X-Script-Sentby:(或什么)标题,您可以使用它来查找负责任的脚本。
大多数情况下,你会发现一些随机的PHP脚本,在任何地方发送邮件。 偶尔我会看到人们通过部落(这有点难以追踪)或Outlook,或者使用其他只需要密码的客户端发送垃圾邮件。
如果邮件来自你的服务器,你不知道在哪里,你也可以把你的php.ini中的disable_function = mail
根植是最不可能的情况,更可能是一些随机的PHP应用程序被黑客攻击。 如果你确实已经开始尝试rkhunter或者其他的东西,那么黑客往往会使用奇怪的脚本名称,而黑客留下的PHP脚本往往是eval(base64_decode(gunzip(压缩的),所以如果你grep -r eval $ docroot,你通常可以find恶意脚本最后,clamav是不是太糟糕在挑起恶意的PHP黑客脚本。
没有物理访问系统或周围的基础设施,你没有太多的select。 第一个假设是受损系统上的任何工具都可能受到危害。 现在,攻击系统通常会安装一个rootkit或远程控制软件(我已经退出游戏一段时间了),这会使识别和经常颠覆常见的操作系统实用程序和命令变得更加困难。
1)使用外部工具扫描系统端口2)您可以尝试移动一些静态链接的二进制文件(ps,netstat等的额外副本),并使用它们来validation端口,帐户和进程(静态链接意味着它不会使用二进制文件外部的任何东西(如系统中的共享库)。
3)你有没有考虑过有人可能使用指向你的返回地址发送了一条消息? (反向散射……有一个术语!)