跨境独立站宝塔面板服务器防火墙批量拦截扫描IP
为什么跨境独立站需要批量拦截扫描IP
运营跨境独立站时,服务器日志里经常出现大量陌生 IP 的连续请求,这些扫描 IP 会消耗带宽、拖慢网站速度,甚至尝试漏洞探测。
手动一个个拉黑太慢,本文教你用宝塔面板的防火墙功能,实现批量拦截扫描 IP,一步到位提升安全性。
准备工作
- 宝塔面板已安装:确保你的服务器已安装宝塔面板(版本不限,操作逻辑通用)。
- SSH 权限:能通过 SSH 登录服务器执行命令。
- 扫描 IP 列表:可以从服务器日志(如 /www/wwwlogs/ 下的 Nginx 日志)提取,也可以使用常见的威胁 IP 库。
提取日志中高频访问且返回 404 的 IP 示例:
awk '{print $1}' /www/wwwlogs/your-site.log | sort | uniq -c | sort -nr | head -50
将需要拉黑的 IP 保存到一个文本文件(如 block.txt),每行一个 IP。
批量拦截扫描IP的两种方法
方法一:宝塔后台手动导入 IP 规则
- 登录宝塔面板,点击左侧「安全」→「防火墙」。
- 在「IP 规则」页签下,点击「添加 IP 规则」。
- 类型选择「拒绝」,将 block.txt 里的 IP 逐行复制粘贴到「IP 地址」输入框(每行一个 IP,框内支持批量粘贴)。
- 备注写“扫描 IP 批量拦截”,点击「添加」即可。
- 重复以上步骤,直到所有 IP 添加完成。
注意:一次最多添加 200 个 IP,如果列表很大,建议分批或使用方法二。
方法二:SSH 命令行批量导入(推荐)
快速高效,适合大量 IP 的场景:
- 上传 block.txt 到服务器,例如 /root/block.txt。
- 执行以下命令,将 IP 写入 iptables(宝塔防火墙底层兼容 iptables):
while read ip; do
ufw deny from "$ip"
done < /root/block.txt
如果你用的是 firewalld,替换为:
while read ip; do
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="'$ip'" drop'
done < /root/block.txt
firewall-cmd --reload
- 回到宝塔面板「安全」→「防火墙」,点击「刷新」即可看到新增的 IP 规则。
额外技巧:自动屏蔽单一来源高频访问
在 Nginx 配置里加入限制,自动拉黑短时内请求过多的 IP(无需手动干预):
http {
limit_req_zone $binary_remote_addr zone=scan:10m rate=30r/m;
server {
location / {
limit_req zone=scan burst=5 nodelay;
}
}
}
保存后重载 Nginx 即可。
避坑指南
- 注意 IP 来源:只屏蔽确定的扫描 IP,不要误拦搜索引擎爬虫(如 Googlebot)。建议先验证 IP 归属,可使用
whois命令查询。 - 防火墙规则优先级:宝塔面板的 IP 规则优先级高于系统防火墙,但要避免与已有白名单冲突。如果客户或你们公司的 VPN IP 也在列表中,务必先排除。
- 批量添加后检查:规则过多可能影响 iptables 性能,建议定期清理。添加后使用
iptables -L -n | wc -l查看数量,正常几千条以下没问题。 - 日志持续监控:拦截后仍需观察日志,因为扫描 IP 会不断更换。可以编写脚本每日自动更新黑名单。
如何验证拦截是否生效
- 从被拉黑的 IP 访问你的独立站,应返回 403 或连接超时。
- 在宝塔「安全」→「防火墙」→「日志」页签,可以看到该 IP 的拦截记录。
- 也可以从 SSH 执行
tail -f /var/log/ufw.log或journalctl -u firewalld查看实时日志。
高频问题解答
Q:批量导入后宝塔面板显示规则不全怎么办?
A:刷新页面或重启防火墙服务:宝塔后台「安全」→「防火墙」点击「重启防火墙」。
Q:能否自动更新扫描 IP 列表?
A:可以编写 cron 任务,每日从日志提取高频 IP 并执行批量添加。但需谨慎,防止误伤正常 IP。
Q:扫描 IP 用 CDN 掩盖,还能拦截吗?
A:如果开启了 CDN,真实 IP 可能被隐藏。建议在 Nginx 开启 realip 模块,读取 X-Forwarded-For 字段。
如果你正在处理跨境独立站宝塔面板服务器防火墙批量拦截扫描IP,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。