Back to Blog

900+ 个恶意 IP 之后,我做了第三步:让 OpenClaw 对公网“不可见”

林小卫很行

前阵子我写了两篇“服务器被攻击”的小记录:

那两次我做了两件事:

一件是把 SSH 端口改掉、把 root 的密码登录关掉。

另一件是装了 Fail2ban,让它在门口当门卫,谁撞得太狠就拉黑谁。

说实话,那两步已经够用了。

但这次实在太狠了,我几乎 24 小时都在收到“被攻击”以及“异常 IP 被封禁”的通知。

那种“门口一直有人敲门”的感觉,太让人烦躁了。

我就在想:有没有一种安全,是“我不用一直看着门口”?

后来我找到了答案:把门藏起来。

image.png|400

发生了什么:异常攻击通知刷屏

这一周,每次打开手机都有一种被惊到的感觉。

飞书上全是失败登录记录,密密麻麻,从全球各地来的 IP 不停试用户名和密码。

b3a3c8842abc8a240299cd7e6d476bdf.jpg|400

高峰期大概是每秒几十次,而且 24 小时不间断。截至昨天已经封禁了 936 个 IP,有 700 多个是这周新增的。

先说结论:最省心的安全,是让对方找不到门

很多防护方案的思路是:

你来撞门,我把你打回去。

Fail2ban 就是这种。

它很有用,但它有一个副作用:你还是会“看见”攻击一直在发生。

image.png|400

我后来做的升级,是把思路换了一下:

你来扫门?让你扫不到。

最省心的安全不是被攻击了再防守,而是让对方根本找不到门。

3. 我的做法:两层防护(外加几条兜底)

第一层:白名单防火墙,把 SSH 变成“无响应”

我做了一件有点“狠”的事。

SSH 端口只允许我自己的 IP 访问。

除此之外,其他所有人访问这个端口,一律丢弃,不回应。

对方扫描的时候,很多时候看到的会是“被防火墙过滤/丢弃(filtered)”。

对我来说,这就够了。

它摸不到门把手。

如果你问我现在更推荐哪条路:先从云安全组开始。

路线 A:先用云安全组(更不容易翻车)

以腾讯云为例,你可以在控制台里找到安全组入站规则,把 SSH 端口改成“仅你的 IP 可访问”。

这一步最大的好处是:就算你配错了,也还有控制台能救。

路线 B:iptables 白名单(更彻底,但要更谨慎)

我用的是 iptables。

如果你也想走这条路,我会把话说得直接一点:

先确认你有 VNC/Console 兜底入口。

先把“放行”写对。

最后才写“丢弃”。

下面是“思路示例”,里面的 IP 和端口都需要你按自己的情况替换。任何一步不确定,就先停在云安全组那一层:

# 以 SSH 端口 2222 为例
# 强烈建议先确保你有 VNC/Console 兜底,否则可能把自己锁在门外

# 允许已建立连接(避免把正在用的连接直接掐断)
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

# 允许本机回环
iptables -A INPUT -i lo -j ACCEPT

# 只允许你的管理 IP 访问 SSH
iptables -A INPUT -p tcp --dport 2222 -s <YOUR_IP>/32 -j ACCEPT

# 其他所有访问 SSH 的,一律丢弃(不回应)
iptables -A INPUT -p tcp --dport 2222 -j DROP

我当时的目标只有一个:让 SSH 不再“对公网亮着”。

另外提醒一句:iptables 规则“重启后是否还在”,跟系统和你的持久化方式有关。

如果你不确定怎么持久化,就别急着在这一步折腾,先把云安全组白名单做好,已经能让世界安静很多。

第二层:Fail2ban,作为第二张网

我没有因为做了白名单就把 Fail2ban 关掉。

理由也很简单:

人总有手滑的时候。

你可能哪天临时开放了端口,或者哪条规则写错了。

Fail2ban 就像第二张网。

它会盯着 SSH 日志,发现连续输错多次的 IP,就自动封禁。

我当时配得比较严:10 分钟内错 5 次,就直接拉黑。

服务器里当时已经有 900+ 个被封的 IP,而且这个数字还在涨。

额外几层:给自己留后路

除了上面两层,我还做了几件“让自己睡得更踏实”的小事:

第一,之前已经把 SSH 从默认的 22 改到 2222。

这更多是为了减少随机扫描带来的噪音,不是为了“神奇地更安全”。

第二,只允许密钥登录,把密码登录关掉。

这样“撞密码”这件事就变成了无效劳动。

第三,确认腾讯云 VNC 随时能用。

这条真的很重要。

你做防火墙时,最怕的不是被黑,是把自己锁在门外。

VNC 就是那把备用钥匙。

效果:世界安静了

升级之后,我再去看日志,心态跟以前不一样了。

不在白名单里的 IP 根本碰不到 SSH。

Fail2ban 还在跑,但基本没什么新 IP 能让它出手。

从攻击者视角看,这台服务器像是不存在。

image.png|400

如果你也在被撞门:一个低风险的起步顺序

如果你现在也在被 SSH 暴力破解刷屏,我建议你按这个顺序来:

第一步,先用云安全组把 SSH 改成“仅你的 IP 可访问”。

第二步,确认 VNC/Console 兜底能救你。

第三步,再考虑要不要用 iptables 做到“无响应”。

Fail2ban 可以一直留着,作为第二道保险。


云服务器被扫是常态,不是你的错。

如果你愿意在评论区留一句:你用的是哪家云、什么系统、SSH 端口是多少,我也可以按你的环境把顺序写得更稳一点。