导航首页 » 计算机 » Linux服务器被黑了怎么办?从发现到处理的完整排查流程
Linux服务器被黑了怎么办?从发现到处理的完整排查流程

上个月有台服务器被入侵了,当时吓出一身冷汗。好在之前学过一些应急响应的知识,处理得还算及时,没造成太大损失。今天就把整个排查过程写下来,给没遇到过这种情况的朋友参考参考。

 

一、怎么发现被黑的?

 

说起来挺丢人的,我是收到云厂商的告警短信才知道的。说我的服务器在往外发送大量流量,疑似中了挖矿木马。我赶紧登上服务器一看,CPU占用率99%,一个叫kworkerds的进程在疯狂挖矿。

 

其实早点留意的话是有迹象的,比如前几天服务器偶尔会卡一下,我以为是正常负载波动,没当回事。所以大家平时一定要多关注服务器的监控数据,异常早发现。

 

二、紧急处理步骤

 

发现被入侵后,千万别慌,按照步骤来:

 

1. 先断网

 

不是拔网线,是先把对外的服务停掉,或者直接在安全组里把端口都封了。这样就算黑客还在里面,也没法继续搞事,也没法把你的数据传出去。

 

2. 保留现场

 

这是很多人忽略的一步。别急着清理,先把当前的状态记录下来:

 

- 用ps把所有进程列表保存下来

- 用netstat把网络连接保存下来

- 把/var/log下的日志打包备份

- 用last命令查看登录记录

- 查看crontab有没有被篡改

 

这些信息对后续分析入侵路径很重要。

 

3. 杀掉可疑进程

 

我那个案例里,挖矿进程很明显,直接kill掉就行。但有些木马会伪装成系统进程,要仔细辨别。注意看进程的启动路径,系统进程一般在/usr/bin、/usr/sbin这些目录,如果发现一个系统进程从/tmp或/var/tmp启动的,那基本就是有问题的。

 

三、排查入侵路径

 

杀掉进程只是治标,找到入侵路径才能治本。我排查了以下几个方面:

 

1. 查看登录日志

 

last -f /var/log/wtmp

lastb -f /var/log/btmp

 

看有没有异常的登录记录,特别是异地IP。我那台服务器就发现有个海外IP用root账号登录过,但我从来没在海外登录过。

 

2. 检查SSH配置

 

一看/etc/ssh/sshd_config,发现PermitRootLogin被改成了yes,而且authorized_keys里多了一个我不认识的公钥。这是典型的SSH密钥后门。

 

3. 查看crontab

 

crontab -l一看,果然被加了一条定时任务,每隔几分钟从远程下载脚本执行。这就是为什么杀掉进程后会重新出现的原因。

 

4. 检查启动项

 

ls /etc/init.d/ 和 systemctl list-unit-files 都要看,看看有没有可疑的开机启动服务。

 

5. 查看最近修改的文件

 

find / -mtime -7 -type f | head -100

 

这个命令可以找到最近7天内被修改的文件,帮你想缩小排查范围。

 

四、修复和加固

 

找到问题后,就是修复和加固了:

 

1. 删除黑客添加的SSH密钥和定时任务

2. 修改所有密码,包括root密码、数据库密码等

3. 禁止root远程登录,改用密钥认证

4. 修改SSH默认端口

5. 安装fail2ban防暴力破解

6. 配置防火墙,只开放必要端口

7. 开启系统自动更新

 

五、预防措施

 

事后我总结了几个预防要点:

 

- 密码一定要复杂,最好用密钥认证

- 端口别用默认的,至少改掉SSH的22端口

- 及时更新系统补丁

- 安装入侵检测工具,如rkhunter、chkrootkit

- 重要服务器配好监控告警

- 定期检查登录日志和crontab

 

被入侵这种事,不遇到的时候觉得离自己很远,遇到了才知道后悔。希望这篇文章能帮到你,别像我一样等到出了问题才重视安全。

 

有什么问题欢迎留言,也可以分享你遇到过的安全事件,大家互相学习。