宝塔面板防火墙IP黑名单批量导入导出
很多使用宝塔面板的站长在遇到恶意扫描或攻击时,会通过防火墙拉黑一批IP。
但面板默认只能一个个手动添加,效率很低。
如果你需要批量导入或导出IP黑名单,这篇文章会一步步带你完成,从准备文件到验证结果,零基础也能跟着做。
批量操作前需要确认的几个前提
宝塔面板的防火墙功能通常由btwaf或系统防火墙插件提供,不同版本操作位置略有差异。
建议先登录面板,在【软件商店】确认已安装【宝塔防火墙】或【系统防火墙】。
本文以面板自带防火墙为例,路径为:安全 -> 防火墙 -> IP黑名单。
批量导入导出本质上是对防火墙规则文件的直接操作,因此你需要SSH登录服务器,并拥有root权限。
提前准备好一个文本文件,每行一个IP地址,支持单个IP或CIDR格式,例如:
192.168.1.100
10.0.0.0/24
注意不要包含空行或多余空格,否则导入时可能报错。
导出当前黑名单的两种方式
如果只是想备份现有黑名单,可以直接在面板操作。
进入防火墙的IP黑名单页面,查看是否有“导出”按钮。
部分版本支持一键导出为CSV或TXT文件。
如果没有该按钮,则通过SSH执行命令导出。
宝塔防火墙的IP黑名单通常存储在/www/server/panel/data/firewall/ip_blacklist.json或类似路径下。
你可以用以下命令查看并导出:
cat /www/server/panel/data/firewall/ip_blacklist.json
如果文件不存在,可以尝试搜索:
find /www/server/panel/data -name "*black*"
找到文件后,用cp命令复制到安全位置,例如:
cp /www/server/panel/data/firewall/ip_blacklist.json /root/ip_blacklist_backup.json
导出后建议用文本编辑器检查内容格式,确保后续能正确导入。
批量导入IP黑名单的详细步骤
导入前先准备好你的IP列表文件,假设命名为ip_list.txt,每行一个IP。
如果你有大量IP需要封禁,建议先合并去重,避免重复规则影响性能。
第一步:将文件上传到服务器。
可以使用宝塔面板的文件管理,上传到/root/目录,或者用scp命令上传。
第二步:根据防火墙类型选择导入方法。
如果面板防火墙支持文件导入,直接在IP黑名单页面点击“导入”,选择你的ip_list.txt文件即可。
导入后刷新页面,检查列表是否新增了IP。
如果面板没有导入按钮,则通过命令行操作。
先确认防火墙服务类型,执行:
bt default
查看面板信息,或检查/www/server/panel/data/firewall/下的文件。
对于btwaf,可以使用其命令行工具:
btwaf add_ip_blacklist 192.168.1.100
但批量添加需要循环处理。
可以写一个简单的shell脚本:
while read ip; do
btwaf add_ip_blacklist "$ip"
done < /root/ip_list.txt
如果使用的是系统防火墙(如firewalld或ufw),则用对应命令。
例如firewalld:
while read ip; do
firewall-cmd --permanent --add-rich-rule="rule source address='$ip' drop"
done < /root/ip_list.txt
firewall-cmd --reload
第三步:验证导入结果。
在面板防火墙的IP黑名单页面刷新,查看是否出现新IP。
或者用命令检查:
iptables -L -n | grep DROP
如果看到对应IP的DROP规则,说明导入成功。
避坑指南:导入导出常见问题
文件格式错误:IP列表文件必须是纯文本,每行一个IP,不能有逗号、分号或表头。
如果从Excel复制,先粘贴到记事本去除格式。
权限不足:执行命令时确保使用root账户,或加sudo。
普通用户可能无法读写防火墙配置文件。
规则重复:批量导入前最好去重,否则可能产生大量重复规则,影响网络性能。
可以用sort -u ip_list.txt -o ip_list.txt去重。
面板版本差异:不同宝塔版本的防火墙界面和存储路径可能不同。
如果找不到对应文件,建议先查看官方文档或通过面板的“导出”功能获取当前规则格式,再参照修改。
导入后不生效:部分防火墙需要重载配置。
执行firewall-cmd --reload或重启防火墙服务。
如果使用btwaf,可以尝试重启面板:bt restart。
如何验证批量操作是否成功
验证分两步:先在面板界面查看IP黑名单列表,确认新增的IP已经显示。
然后从另一台机器尝试ping或访问被封锁的IP,观察是否被拒绝。
如果服务器本身有业务,可以查看防火墙日志:
tail -f /var/log/firewalld
或
tail -f /www/server/panel/logs/request.log
查看是否有对应IP的拦截记录。
另外,可以统计当前黑名单条目数:
iptables -L -n | grep DROP | wc -l
对比导入前后的数量,判断是否全部添加成功。
常见疑问
导入的IP会立即生效吗? 大多数情况下会立即生效,但部分防火墙需要重载规则。
如果发现不生效,先执行重载命令再测试。
导出的文件可以编辑后再导入吗? 可以,但必须保持格式一致。
推荐先导出一份作为模板,在此基础上增删IP,避免格式错误。
批量导入有数量限制吗? 理论上没有硬性限制,但一次性导入过多IP可能消耗较多内存和CPU。
建议分批次操作,每批不超过1000条。
如果误封了IP怎么快速解封? 在面板黑名单页面找到该IP,点击删除。
或者用命令行删除对应规则,例如firewall-cmd --permanent --remove-rich-rule=...,然后重载。
掌握批量导入导出后,你可以更高效地应对恶意流量。
操作前记得备份现有规则,避免误操作导致自己无法连接服务器。
如果遇到问题,优先检查文件格式和防火墙服务状态。