当你负责的服务器被黑了, 怎么办?
没遭遇过如此大风大浪的运维人员:
哦,**! 我该怎么办, 点根香烟冷静一下.
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
通过以上这些分析, 结合经验, 能够帮助找到可疑的用户, 将他踢下线; 分析可疑的进程并关闭, 检测是否存在木马等.
但是小编建议, 不要尝试完成这些修复然后接着用, 因为敌人在暗处, 我们无法确切知道攻击者做过什么, 也就意味着无法保证我们修复了所有问题.
来源: http://server.51cto.com/sSecurity-595609.htm