当你负责的服务器被黑了,怎么办?
没遭遇过如此大风大浪的运维人员:
哦,**!我该怎么办,点根香烟冷静一下。
Wait!小编请您先切断网络,再拿出你的打火机。
下面用一根烟的时间,和小编一起看看处理服务器遭受攻击事件的最佳思路。
开始之前,我们分析一下,服务器遭受恶意攻击后主要有哪几种情况。
攻击行为分类:
1)恶意的攻击行为,如拒绝服务攻击,网络病毒等等,这些行为旨在100%消耗服务器资源,影响服务器的正常运作,甚至服务器所在网络的瘫痪;
2)恶意的入侵行为,这种行为更是会导致服务器敏感信息泄露,入侵者可以为所欲为,肆意破坏服务器,窃取其中的数据信息并毁坏等。
1、深呼吸,不要紧张
首先,你需要在攻击者察觉到你已经发现他之前夺回机器的控制权。如果攻击者正在线上,他很可能发现你已经开始行动了,那么他可能会锁死你不让你登陆服务器,然后开始毁尸灭迹。
所以,如果技术有限,首先切断网络或者直接关机。
切断网络的方式:你可以拔掉网线,或者运行命令:
- systemctl stop network.service
以关闭服务器的网络功能。或者在服务器上运行以下两条命令之一来关机:
- shutdown -h now
- systemctl poweroff
2、备份重要的数据
在开始分析之前,备份服务器上重要的用户数据,同时也要查看这些数据中是否隐藏着攻击源。如果攻击源在用户数据中,一定要彻底删除,然后将用户数据备份到一个安全的地方。
3、修改root密码
因为很多情况下,攻击者高概率已经拿到你的root权限。
接着进行痕迹数据采集备份,痕迹数据是分析安全事件的重要依据,包括登录情况、进程信息、网络信息、系统日志等等。具体的一些查看方参考下文~
4、查看当前登录在服务器上的用户
- w
查看近期登陆过服务器的用户
- last | more
5、通过上述命令,假设发现可疑用户someone,锁定可疑用户someone
- passwd -l someone
6、查看攻击者有没有在自己的服务器上开启特殊的服务进程,比如后门之类的
- netstat -nl
类似22等是我们比较熟悉的端口,一些比较大的端口号,如52590等,就可以作为怀疑对象,用lsof -i命令查看详细信息:
- lsof -i :52590
7、检查有无异常进程并终止
- ps aux
- top
根据进程名称(以sshd为例)查看pid
- pidof sshd
查看对应pid目录下的exe文件信息
- ls -al /proc/7182/exe
查看该pid文件句柄
- ls -al /proc/7182/fd
指定端口,查看相关进程的pid
- fuser -n tcp 111
根据pid查看相关进程
- ps -ef|grep 6483
列出该进程地所有系统调用
- strace -p PID
列出该进程打开的文件
- lsof -p PID
8、如果攻击者依旧在线上,那么现在,把他踢!下!线!
根据w命令输出信息中的TTY,用以下命令,可以向攻击者发送消息并“杀死他”:
- write USER TTY
- pkill -kill -t TTY
如上图,小编把自己当小白鼠实验一下,write命令可以向对方发送消息”Goodbye!!”(小编给自己发了,所以屏幕上有两个Goodbye,第二个就是收到的),这里你就发送任何挑衅的语言,获得一丝丝满足感。最后Ctrl+d即可退出对话。然后用pkill命令就可以真的可以和对方say goodbye啦~
但是没有足够的技术把握,还是不要随意挑衅攻击者,气急败坏地回来在攻击一遍就糟了。
9、检查系统日志
查看命令历史
- history
能够看见攻击者曾经做过的事情,注意观察有没有用 wget 或 curl 命令来下载类似垃圾邮件机器人或者挖矿程序之类的非常规软件。如果发现没有任何输出,这也是十分不妙,很可能是攻击者删除了~/.bash_history文件,这意味着你的对手也许不容小觑。
查看日志是否还存在,或者是否被清空
- ll -h /var/log/*
- du sh /var/log/*
10、日志等信息备份
备份系统日志及默认的httpd服务日志
- tar -cxvf logs.tar.gz /var/html
备份
- last:last > last.log
备份在线用户
- w > w.log
系统服务备份
- chkconfig --list > services.log
进程备份
- ps -ef > ps.log
监听端口备份
- netstat -utnpl > port-listen.log
系统所有端口情况
- netstat -ano > port-all.log
通过以上这些分析,结合经验,能够帮助找到可疑的用户,将他踢下线;分析可疑的进程并关闭,检测是否存在木马等。
但是小编建议,不要尝试完成这些修复然后接着用,因为敌人在暗处,我们无法确切知道攻击者做过什么,也就意味着无法保证我们修复了所有问题。