linux如何判断服务器是否被入侵

实验几个步骤,借鉴网友资料,分享给网友。非常感谢网上提供资料帮助的网友。

1-当时谁登录。

W (查看以往登录信息,注意SHELL窗口最大化,才不会报错:68 column is too narrow)

这里写图片描述
[拓展使用#whois IP地址(追查IP所注册的组织的所有信息,当然包括国家信息)]
1、Linux 下 whois 命令行的安装
CentOS 下安装命令如下:
yum install -y jwhois
Debian/Ubuntu 下安装命令如下:
apt-get install -y whois
2、Linux 下 whois 命令行的配置文件
这里以 CentOS 6.6 x64 为例,默认的配置文件是 /etc/jwhois.conf ,默认支持顶级通用域名以及国别域名,如果要查询其他后缀的域名,则要修改此配置文件。
我们以作者 Github 页面的最新配置来替换掉该配置文件。命令如下:
这里写图片描述

替换完成后,我们来查询一下试试看。比如查询 com.google,如下图所示:
这里写图片描述

本例:搜索IP地址的注册地:
这里写图片描述

2- 查看以往谁登录过

last (查看以往的登录情况,查看哪些IP地址停留时间过长,留意未授权的IP地址)

登录后历史记录会保留在 /var/log/wtmp 文件中
这里写图片描述

2- 回顾命令历史

history (显示他们曾经做过的所有事情,一定留意有没有wget 或 curl命令下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件)

命令历史存储记录在 ~/.bash_history 文件中,攻击者会删除内部信息,如果运行history 命令没有输出东西,就要当心了
这里写图片描述

3- 哪些进程在消耗CPU?

top (运行top然后查看最前面的那几个进程就了解,或者通过losf和strance来看出他们在做什么事情)

这里写图片描述

例如:
1.#strance –p PID
这里写图片描述
2.#lsof –p PID
(losf缺少依赖包,我的系统里面找不到指令,这里不做讲解。)

4- 检查所有的系统进程
使用ps auxf 就能足够显示清晰的信息。
这里写图片描述
5- 检查进程的网络使用情况
Iftop 的功能类似top ,他会排列显示收发网络数据的进程以及他们的源地址和目的地址。
(引荐:http://blog.csdn.net/jiangguilong2000/article/details/12529317
这里写图片描述

6- 哪些进程在监听网络连接
攻击者会安装一个后门程序专门监听网络端口接受指令。进程等待期间是不会消耗CPU和宽带,我通常会让他们带上下面这些参数
1. lsof –I
2. netstat –plunt
需要留意listen和established的状态进程,这些进程要么正在等待连接,要么已经连接(ESTABLISHED.)如果遇到不认识的进程,使用strace 和 lsof.
(strace用法:https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316692.html

7- 终极办法
关机拔网线 运行#shutdown –h now 或者 systemct1 poweroff.
如果你对自己颇有自信,而你的主机提供商也有提供上游防火墙,那么你只需要以此创建并启用下面两条规则就行了:

☉ 只允许从你的 IP 地址登录 SSH。
☉ 封禁除此之外的任何东西,不仅仅是 SSH,还包括任何端口上的任何协议。
这样会立即关闭攻击者的 SSH 会话,而只留下你可以访问服务器。

如果你无法访问上游防火墙,那么你就需要在服务器本身创建并启用这些防火墙策略,然后在防火墙规则起效后使用 kill 命令关闭攻击者的 SSH 会话。( 译注:本地防火墙规则 有可能不会阻止已经建立的 SSH 会话,所以保险起见,你需要手工杀死该会话。)

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

重夺服务器的控制权后,也不要以为就万事大吉了。

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

最好的方法就是拷贝出所有的数据,然后重装系统。(译注:你的程序这时已经不可信了,但是数据一般来说没问题。)