惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
Scott Helme
Scott Helme
D
DataBreaches.Net
人人都是产品经理
人人都是产品经理
N
Netflix TechBlog - Medium
美团技术团队
T
Tailwind CSS Blog
博客园 - 叶小钗
小众软件
小众软件
云风的 BLOG
云风的 BLOG
S
SegmentFault 最新的问题
爱范儿
爱范儿
博客园 - Franky
量子位
I
InfoQ
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Microsoft Azure Blog
Microsoft Azure Blog
博客园 - 【当耐特】
博客园_首页
Recorded Future
Recorded Future
The Register - Security
The Register - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Recent Announcements
Recent Announcements
Martin Fowler
Martin Fowler
C
CERT Recently Published Vulnerability Notes
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
A
About on SuperTechFans
阮一峰的网络日志
阮一峰的网络日志
Cisco Talos Blog
Cisco Talos Blog
腾讯CDC
WordPress大学
WordPress大学
NISL@THU
NISL@THU
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
The GitHub Blog
The GitHub Blog
T
The Blog of Author Tim Ferriss
The Hacker News
The Hacker News
N
News and Events Feed by Topic
Y
Y Combinator Blog
T
Troy Hunt's Blog
A
Arctic Wolf
V
V2EX
S
Secure Thoughts

Qiwi说说

让爱回来 - 子夜集 密码、键盘与背单词 - 子夜集 新域名迁移 -Leo 的小屋 2026.07.03 博客样式丢失通知 -Leo 的小屋 向死而生 -Leo 的小屋 向死而生 -Leo 的小屋 Louie Wang:来之不易的教训 -蓝莓奥利奥 Blue Berry Oreo Louie Wang:来之不易的教训 -Leo 的小屋 浅谈十万字 -蓝莓奥利奥 Blue Berry Oreo 浅谈十万字 -Leo 的小屋 奥利奥工坊 -蓝莓奥利奥 Blue Berry Oreo 奥利奥工坊 -Leo 的小屋 为他立传 -Qiwi说说 为他立传 -Qiwi说说 为他立传 -Leo 的小屋 浅谈自由写作 浅谈自由写作 -Qiwi说说 浅谈自由写作 -Leo 的小屋 喜欢一个人 喜欢一个人 -Qiwi说说 喜欢一个人 -Leo 的小屋 海兰游纪行 海兰游纪行 -Qiwi说说 海兰游纪行 -Leo 的小屋 在路上,风景独好 在路上,风景独好 -Qiwi说说 在路上,风景独好 -Leo 的小屋 优越感 优越感 -Qiwi说说 高敏感人 高敏感人 -Qiwi说说 写作与效率 写作与效率 -Qiwi说说 The Anthropocene Reviewed: FreeCell and Spider Solitaire The Anthropocene Reviewed: FreeCell and Spider Solitaire -Qiwi说说 DeepSeek V4 发布:不诱于誉,不恐于诽 DeepSeek V4 发布:不诱于誉,不恐于诽 -Qiwi说说 速记服务器被攻击 我应该怎么交易?量化和主观交易利弊分析 Pay Your Screen Time:职业、交易和人生选择
服务器被攻击后续
祁闵 MaxQi · 2026-03-22 · via Qiwi说说

昨天刚消杀完病毒,今天服务器又出问题了。

发现异常

早上登录服务器,发现系统又开始卡顿,服务器占用100%。

不会又中毒了吧?赶紧打开终端查看,执行 top 命令后,画面让我有些困惑。

top - 10:04:54 up 13:33,  2 users,  load average: 9.36, 9.66, 9.77
Tasks: 12281 total,   9 running, 192 sleeping,   0 stopped, 12080 zombie
%Cpu(s): 50.5 us, 49.5 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

12080 个僵尸进程,系统负载飙到 9.7,CPU 直接拉满了。

但是这一次和昨天。但这次和昨天不太一样——没有看到明显的恶意进程疯狂占用 CPU,只有一个 Docker 容器和 Next Server 在运行,但内存占用很高。

我一度以为是内存溢出或者应用本身的问题,但继续往下看进程列表,果然又看到了熟悉的身影。

30316 1001  20  0  1616  256  204 R  11.9  0.0  0:00.89 strings
30317 1001  20  0  1612  400  340 R  11.9  0.0  0:01.33 grep xmrig
30391 1001  20  0  1624  384  324 D   4.5  0.0  0:00.03 pkill

又是 1001 用户,又是 grep xmrig,这不就是昨天的病毒吗?

定位感染源

在 AI 的帮助下,我开始逐步排查。首先检查了 Docker 容器状态:

docker stats --no-stream

结果一目了然:

e5c23165954e   1Panel-umami-yQto   173.22%   ...   12157

Umami 容器 CPU 占用 173%,进程数 12157 个。一个正常的 Node.js 应用(umami)应该只有几个到十几个进程,但这个容器里居然有 12157 个进程,CPU 占用 173%。病毒藏在 umami 容器里!

原来昨天我只是删除了宿主机上的恶意进程,但病毒的源头——被感染的 Umami 容器——还在运行。它就像一个"毒瘤",不断向外释放恶意进程,导致系统反复中毒。

彻底清理

这次也不管数据了,直接断舍离(当然在此之前我已经备份了MySQL数据库了)。

1. 停止并删除被感染的容器

docker stop e5c23165954e
docker rm e5c23165954e

2. 杀死所有残留的恶意进程

pkill -9 -f "strings"
pkill -9 -f "xmrig"
pkill -9 -f "kinsing"

3. 删除 Umami 相关的所有数据和镜像

rm -rf /opt/1panel/apps/umami
docker rmi ghcr.io/umami-software/umami:mysql-v2.19.0

清理完成后,再次查看系统状态:

top - 10:09:36 up 13:38,  2 users,  load average: 0.47, 5.43, 8.13
Tasks: 179 total,   1 running, 178 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni,100.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

僵尸进程清零,负载恢复正常,CPU 空闲 100%。Umami服务下次再重建吧。

复盘与反思

这次事件反映了几件事:

1. 容器逃逸的威胁
病毒通过 Umami 容器的漏洞入侵,然后在容器内疯狂创建进程。由于我没有给容器设置资源限制,病毒几乎可以无限制地消耗系统资源。

2. 清理要彻底
昨天只清理了宿主机上的进程,却没有检查 Docker 容器,导致病毒源头依然存在。

3. Umami v2.19.0 可能存在已知漏洞
这个版本发布于 7 个月前,很可能已经有公开的 CVE 漏洞被攻击者利用。我应该升级,或者最起码检查一下安全公告。

4. 防护措施不到位

  • 容器没有设置 CPU、内存、进程数限制
  • 没有及时更新镜像版本
  • 端口暴露过多,缺少防火墙规则

后续加固

为了避免再次中毒,我决定:

  1. 不再使用 Umami v2.19.0,更新到最新的v3版本
  2. 给所有 Docker 容器加上资源限制
  3. 定期检查容器进程数docker stats 应该成为日常巡检项目

网络安全这事儿,真的不能掉以轻心。

好在有 AI 辅助排查,不然光靠我自己,估计得折腾一整天。

希望这次是最后一次了。🤞