前言:
作为一个站长,你是否经常收到来自香港 IDC 的各种端口扫描?
是否厌倦了看到日志里满屏的 UCLOUD INFORMATION TECHNOLOGY (HK) LIMITED?
是否试过封 IP,但总有新的 IP 来骚扰?
今天,我要分享一个暴力但优雅的解决方案…
正文:
🤔 事情是这样的…
某天深夜,我照例查看服务器日志,发现又双叒叕被 UCLOUD 香港的 IP 扫描。这些 IP 就像打不完的小怪,封了这个又来那个…
看看我的日志:
Failed password for root from 43.xxx.xxx.xxx port 48526 ssh2
Failed password for root from 43.xxx.xxx.xxx port 48892 ssh2
Failed password for root from 43.xxx.xxx.xxx port 49106 ssh2
...(省略 1000 条类似记录)
😠 忍无可忍,无需再忍
在封了第 108 个 IP 后,我终于忍不住了:
“为什么要一个个 IP 封禁?直接封掉整个 ASN 不就完事了?”
一查发现这些 IP 都来自 AS135377,也就是 UCLOUD HK 的 ASN。
ASN查询:https://ping0.cc/as/AS135377
🎯 解决方案
于是我写了这个脚本,只需要:
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/asn-blocker.sh && chmod +x asn-blocker.sh && ./asn-blocker.sh
选择菜单1,输入:AS135377 一键封禁,干净利落!从此再也不用看到这些烦人的扫描了~
😎 效果立竿见影
注意要选择菜单5:安装系统服务 然后启动服务,使其生效,再添加ASN
可以在一段时间后查看数据包:
iptables -L INPUT -v -n | grep "blocked-asn" | awk '{match($0,/blocked-asn-([0-9]+)/,a); printf "ASN %-12s packets: %-4s bytes: %-6s\n", a[1], $1, $2}'
🤓 技术原理
这个脚本会:
- 自动获取指定 ASN 的所有 IP 段
- 使用 ipset 高效管理 IP 列表
- 配置防火墙规则一键封禁
- 还可以随时优雅地解除封禁
📝 小贴士
- 不建议随意封禁 ASN,要谨慎使用
- 建议先查清楚 ASN 的身份,避免误伤
- 如果是正常业务相关的 ASN,要三思而后行
🤪 彩蛋
其实还有个更暴力的操作,一次性封禁多个 ASN
sudo ./asn-blocker.sh --add AS135377 AS202306 AS14061
🔚 结语
工具的诞生往往源于需求。
这个脚本虽然简单,但确实解决了我的烦恼。
希望也能帮助到同样被困扰的你!