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