如何判断服务器是否被黑

时间:2022-09-13 21:30:43

本文转自:http://blog.chinaunix.net/uid-31479382-id-5780833.html

如有不便,请及时告知。

本指南中所谓的服务器被入侵或者说被黑了的意思,是指未经授权的人或程序为了自己的目的登录到服务器上去并使用其计算资源,通常会产生不好的影响。然而,大多数被攻破的服务器都是被类似自动攻击程序这样的程序或者类似“脚本小子”这样的廉价攻击者,以及蠢蛋罪犯所入侵的。这类攻击者会在访问服务器的同时滥用服务器资源,并且不怎么会采取措施来隐藏他们正在做的事情.

检查 1 - 当前都有谁在登录?

其对应的命令是 w。运行 w 会输出如下结果:

	第一个 IP 是英国 IP,而第二个 IP 是越南 IP。这个不是个好兆头。

请参阅本文最后的“被入侵之后怎么办”这一章节来看找到了被入侵的证据后应该怎么办。

检查 2 - 谁曾经登录过?

输出类似这样:

	这里可以看到英国 IP 和越南 IP 交替出现,而且最上面两个 IP 现在还处于登录状态。如果你看到任何未经授权的 IP,那么请参阅最后章节。

如果没有登录历史的话,请一定小心,继续留意入侵的其他线索。

这个层次的攻击者通常不会注意掩盖命令的历史记录,因此运行 history 命令会显示出他们曾经做过的所有事情。 一定留意有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件。

检查 4 - 哪些进程在消耗 CPU?

这也能显示出那些未登录进来的攻击者。比如,可能有人在用未受保护的邮件脚本来发送垃圾邮件。

使用这些工具,第一步从 top 中拷贝出进程的 PID,然后运行:

	这会显示出该进程调用的所有系统调用。它产生的内容会很多,但这些信息能告诉你这个进程在做什么。

	这个程序会列出该进程打开的文件。通过查看它访问的文件可以很好的理解它在做的事情。

消耗 CPU 不严重的未授权进程可能不会在 top 中显露出来,不过它依然可以通过 ps 列出来。命令 ps auxf 就能显示足够清晰的信息了。

检查 6 - 检查进程的网络使用情况

检查 7 - 哪些进程在监听网络连接?

lsof 和 netstat 命令都会列出所有的联网进程。我通常会让它们带上下面这些参数:

	你需要留意那些处于 LISTEN 和 ESTABLISHED 状态的进程,这些进程要么正在等待连接(LISTEN),要么已经连接(ESTABLISHED)。如果遇到不认识的进程,使用 strace 和 lsof 来看看它们在做什么东西。

首先,不要紧张,尤其当攻击者正处于登录状态时更不能紧张。你需要在攻击者警觉到你已经发现他之前夺回机器的控制权。如果他发现你已经发觉到他了,那么他可能会锁死你不让你登陆服务器,然后开始毁尸灭迹。

如果你对自己颇有自信,而你的主机提供商也有提供上游防火墙,那么你只需要以此创建并启用下面两条规则就行了:

  1. 这样会立即关闭攻击者的 SSH 会话,而只留下你可以访问服务器。

最后还有一种方法,如果支持的话,就是通过诸如串行控制台之类的带外连接登录服务器,然后通过 systemctl stop network.service 停止网络功能。这会关闭所有服务器上的网络连接,这样你就可以慢慢的配置那些防火墙规则了。

不要试着修复这台服务器,然后接着用。你永远不知道攻击者做过什么,因此你也永远无法保证这台服务器还是安全的。

<p style="background-color: transparent; box-sizing: border-bottom: 10px; margin-left: 0px; margin-right: 0px; margin-top: 0px; orphans: 2; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px; t最好的方法就是拷贝出所有的数据,然后重装系统。(LCTT 译注:你的程序这时已经不可信了,但是数据一般来说没问题。)