900+ 个恶意 IP 之后,我做了第三步:让 OpenClaw 对公网“不可见”
前阵子我写了两篇“服务器被攻击”的小记录:
那两次我做了两件事:
一件是把 SSH 端口改掉、把 root 的密码登录关掉。
另一件是装了 Fail2ban,让它在门口当门卫,谁撞得太狠就拉黑谁。
说实话,那两步已经够用了。
但这次实在太狠了,我几乎 24 小时都在收到“被攻击”以及“异常 IP 被封禁”的通知。
那种“门口一直有人敲门”的感觉,太让人烦躁了。
我就在想:有没有一种安全,是“我不用一直看着门口”?
后来我找到了答案:把门藏起来。

发生了什么:异常攻击通知刷屏
这一周,每次打开手机都有一种被惊到的感觉。
飞书上全是失败登录记录,密密麻麻,从全球各地来的 IP 不停试用户名和密码。

高峰期大概是每秒几十次,而且 24 小时不间断。截至昨天已经封禁了 936 个 IP,有 700 多个是这周新增的。
先说结论:最省心的安全,是让对方找不到门
很多防护方案的思路是:
你来撞门,我把你打回去。
Fail2ban 就是这种。
它很有用,但它有一个副作用:你还是会“看见”攻击一直在发生。

我后来做的升级,是把思路换了一下:
你来扫门?让你扫不到。
最省心的安全不是被攻击了再防守,而是让对方根本找不到门。
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 能让它出手。
从攻击者视角看,这台服务器像是不存在。

如果你也在被撞门:一个低风险的起步顺序
如果你现在也在被 SSH 暴力破解刷屏,我建议你按这个顺序来:
第一步,先用云安全组把 SSH 改成“仅你的 IP 可访问”。
第二步,确认 VNC/Console 兜底能救你。
第三步,再考虑要不要用 iptables 做到“无响应”。
Fail2ban 可以一直留着,作为第二道保险。
云服务器被扫是常态,不是你的错。
如果你愿意在评论区留一句:你用的是哪家云、什么系统、SSH 端口是多少,我也可以按你的环境把顺序写得更稳一点。