脚本1(推荐)
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/asn-blocker.sh && chmod +x asn-blocker.sh && ./asn-blocker.sh
可以在一段时间后查看数据包:
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?
ASN(Autonomous System Number)是互联网上的自治系统编号,相当于网络服务商的唯一标识符。通过ASN,我们可以:
- 快速识别流量来源
- 批量封禁特定服务商的IP段
- 有效防御来自特定IDC的恶意扫描
常见的ASN示例:
- AS14061 (DigitalOcean) - 知名云服务提供商
- AS135377 (UCLOUD) - 国内云服务商
- AS202306 (Hostinger) - 国际虚拟主机提供商
脚本2
脚本2适用范围:宝塔面板,如果你的不是,唯一区别就是路径改改即可
每次查看服务器负载,发现高的离谱,一看是IDC的大量恶意IP扫描我的站点,因此根据网友的脚本制作了一版基于ASN的IP封禁。
1. 下载脚本
curl -sS -O https://raw.githubusercontent.com/woniu336/open_shell/main/nginxasn.sh && chmod +x nginxasn.sh && ./nginxasn.sh
2. 添加需要封禁的ASN列表
这一步可选,因为默认的ASN基本足够,尤其是AS135377
nano nginxasn.sh
编辑下方的部分,添加想要屏蔽的ASN号码即可,一行一个,不加AS字符
asnlist="135377
14061
202306
9318
12737"
3. 在Nginx配置中启用
在你的网站配置文件中添加:例如屏蔽AS135377
则站点配置文件写
include asnblock135377.conf;
其中135377是ASN号码的数字部分。
include asnblock135377.conf; # UCLOUD
include asnblock14061.conf; # DigitalOcean
include asnblock202306.conf; # Hostinger
include asnblock9318.conf; # SK Broadband
include asnblock12737.conf; # Netfinity
测试
例如我要封禁本地ip:192.168.1.106
echo "deny 192.168.1.106;" >> /www/server/nginx/conf/asnblock202306.conf
nginx -s reload
然后再访问你的网站,返回403,封禁生效。
移除测试ip
sed -i '/192.168.1.106/d' /www/server/nginx/conf/asnblock202306.conf
nginx -s reload
脚本功能介绍
自动下载和更新ASN对应的IP段,保存路径
/www/server/nginx/conf
下载为独立的配置文件,如
asnblock135377.conf
下载的规则文件内容类似:
deny 103.21.244.0/22; deny 103.22.200.0/22; deny 103.31.4.0/22; # ... 更多IP段
一键配置Nginx封禁规则
支持批量管理多个ASN
定时任务
添加下面这行,每天凌晨3点更新ip段
(crontab -l ; echo "0 3 * * * /bin/bash /root/nginxasn.sh >/dev/null") | crontab -
删除任务:
crontab -l | grep -v 'nginxasn.sh' | crontab -
脚本工作原理
初始化检查
- 检测并安装必要工具
- 确保文件格式正确
下载规则
- 从ipinfo.app获取最新IP列表
- 自动生成Nginx配置文件
配置管理
- 自动清理旧规则
- 生成新的封禁配置
- 重载Nginx服务
常用命令
./nginxasn.sh # 更新所有规则
./nginxasn.sh --delall # 清空所有规则
./nginxasn.sh -d 14061 # 删除指定ASN规则
./nginxasn.sh -a 14061 # 添加指定ASN规则
注意事项
- 确保Nginx配置目录有写入权限
- 建议先测试后部署到生产环境
- 定期检查规则更新情况