事情的起点其实非常日常。
那天我只是随手点开 VPS 面板,看了一眼状态,然后整个人停住了。
Bandwidth Used:738.62 GB
不是那种“哎呦用多了点”,
而是那种——我根本不记得我什么时候干过任何配得上 700GB 的事。
第一反应不是慌,而是有点不服:
不可能吧?我最近也没跑模型,也没下什么东西。
先别急着怪世界,看看系统自己怎么说
我做的第一件事很简单,上服务器,直接问内核:
ip -s link
我想看的不是“感觉”,而是系统账本。
结果很干净:
- RX / TX 加起来,只有几十 MB
- 和面板上的 738GB 完全对不上
这一步直接把问题缩小到了一个范围:
700GB 不是“现在正在发生的事”
而是某个我没注意到的过去
这时候,事情就已经开始不对劲了。
接下来,系统自己开始“说漏嘴”
我重新 SSH 登录了一次。
然后终端里开始冒出一些不该出现的东西:
- 登录就报错
/etc/profile里反复尝试执行一个隐藏程序- 失败了就
sleep,然后又被 kill - 输出里还有一句怎么看都不像 Ubuntu 的话
那一刻其实不用再查太多了。
经验告诉我,这已经不是:
- “我之前装了什么忘了”
- “环境有点乱”
而是:
这台系统,本身已经不干净了
一个当下不太爽,但事后很庆幸的决定
我没有继续深挖 cron、systemd、隐藏进程。
原因很简单:
我不是在做安全取证
我是要用这台机器继续干活
被入侵过的 VPS,有一个很残酷的事实:
你永远无法 100% 确定你清干净了
所以我直接做了一个决定:
不清理了,直接重装系统
说实话,点下“Reinstall OS”的那一刻,人反而轻松了。
重装之后,我做的第一件事:先止血
我干的第一刀:不再用 22 端口
我以前也知道 22 会被扫,但总觉得:
“我密码也不弱,应该没事吧。”
现在回头看,这就是侥幸。
我上来就改 SSH 端口:
nano /etc/ssh/sshd_config
加一行:
Port 30222
然后重启:
systemctl restart sshd
注意:这时候我没断开当前连接。
我在本机新开一个窗口试了一下:
ssh -p 30222 root@<IP>
能进,才继续。
接着,才把 22 真正关掉。
第二刀,才是真正的分水岭:我关掉了密码登录
说实话,这一步我以前是拖着不做的。
但这次 700GB 直接给我上了一课。
先在本地生成 key(Windows)
ssh-keygen -t ed25519
把公钥贴到服务器
mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
然后,我在本机重新连了一次:
ssh -p 30222 root@<IP>
没有要密码,直接进。
这一步确认完,我才动手关密码:
nano /etc/ssh/sshd_config
改成:
PasswordAuthentication no
ChallengeResponseAuthentication no
重启:
systemctl restart sshd
那一刻的感觉很明确:
这台机器,终于只认“我这把钥匙”了
中间踩了个小坑:vnstat
我想把“流量到底去哪了”这件事,从此变成可追溯的,所以装了 vnstat。
apt install -y vnstat
结果我习惯性敲了句:
vnstat -u
系统回我:
-u is not supported in this version
我当时:“???”
后来才发现,这是 Ubuntu 22.04 + vnstat 2.x 的正常行为——
新版根本不需要初始化,服务一跑就开始记账。
确认它在跑就行:
systemctl status vnstat
vnstat
vnstat -d
从这一刻开始,我知道:
以后再出现 700GB,我至少知道它是怎么来的
回头看,这次事故其实一点都不神秘
现在再复盘,组合拳非常经典:
- root + password
- 22 端口暴露
- 没防火墙
- 没 fail2ban
- 没任何流量监控
每一条单看都“好像还能用”,
但叠在一起,就是一个迟早会被扫到的配置。
现在我初始化每一台 VPS,几乎是条件反射
后来我发现,我已经不需要“提醒自己”了。
新机器一来,我几乎是肌肉记忆地做这些事:
# 改端口
# 上 key
# 关密码
# ufw allow 新端口
# fail2ban
# vnstat
这些命令本身不复杂,
但它们带来的变化很实在:
我重新对机器有了掌控感
最后说一句,可能比技术更重要
这次 700GB 教会我的,其实不是某条命令,而是一个判断原则:
当一个系统已经不可信时,修修补补只是在安慰自己
真正理性的选择,往往是推倒重来
这不只适用于 VPS。
对架构、对项目、甚至对人生决策,都是一样的。