宝塔面板IP黑名单批量导入导出,批量封禁恶意IP
当服务器频繁遭遇恶意扫描或暴力破解时,手动在宝塔面板逐个添加IP黑名单效率极低。
本文介绍如何通过文件批量导入导出IP黑名单,实现快速封禁大量恶意IP,适合零基础运维人员操作。
操作前的必要准备
宝塔面板的IP黑名单功能依赖系统防火墙(如iptables或firewalld),不同版本界面略有差异,建议先确认面板版本。
- 登录宝塔面板,进入安全页面,查看当前是否有已封禁的IP记录。
- 准备一个文本文件,每行一个IP地址,格式如
192.168.1.100,支持单个IP或CIDR格式(如192.168.1.0/24)。 - 确保你有服务器SSH权限,部分操作可能需要命令行辅助。
批量导出已有IP黑名单
如果面板中已有封禁记录,可先导出备份,便于迁移或分析。
- 进入宝塔面板安全页面,找到IP黑名单区域。
- 点击右上角导出按钮(部分版本显示为“导出规则”),浏览器会下载一个
.txt或.json文件。 - 打开文件检查内容,通常每行一个IP,若为JSON格式则需提取
ip字段。
若无导出按钮,可通过SSH执行以下命令手动导出iptables规则:
sudo iptables -L INPUT -n --line-numbers | grep DROP | awk '{print $4}' > /root/blacklist_backup.txt
该命令将当前丢弃(DROP)的源IP保存到/root/blacklist_backup.txt。
批量导入IP黑名单的两种方法
方法一:通过面板导入文件
- 在安全页面点击导入按钮。
- 选择准备好的文本文件,确保编码为UTF-8,每行一个IP。
- 点击确认导入,面板会逐条添加规则,页面会显示成功或失败数量。
导入后立即生效,无需重启服务。
方法二:命令行批量添加(适合大量IP)
若IP数量超过500个,面板导入可能超时,建议使用脚本:
while read ip; do
iptables -I INPUT -s $ip -j DROP
done < /root/blacklist.txt
执行前将/root/blacklist.txt替换为你的IP列表路径。注意:-I INPUT表示插入到规则链顶部,优先级最高。
避坑指南与常见问题
- 避免误封:导入前用
grep检查文件是否包含服务器自身IP或网关IP,例如grep -v '你的服务器IP' blacklist.txt > clean.txt。 - 规则持久化:命令行添加的规则重启后会丢失,需执行
iptables-save > /etc/iptables.rules并配置开机还原,或改用面板导入。 - 性能影响:单次导入超过2000条可能拖慢网络,建议分批次操作,每批500条。
- 面板兼容性:宝塔7.x与8.x的导入界面位置不同,若找不到按钮,尝试在安全页面搜索“黑名单”。
验证封禁是否生效
导入完成后,通过以下方式确认:
- 在面板安全页面刷新,查看IP黑名单列表是否包含新导入的IP。
- 使用
iptables -L INPUT -n | grep DROP查看规则计数,确认IP已加入。 - 从被封禁的IP尝试访问服务器(如ping或SSH),应显示超时或拒绝连接。
若发现规则未生效,检查防火墙服务状态:systemctl status iptables或systemctl status firewalld,确保服务运行中。
用户常见疑问
导入后为什么部分IP没有生效?
可能是IP格式错误(如多了空格或换行),或面板未刷新缓存。建议重新导出检查格式,或手动在面板添加一个测试IP验证功能。
如何批量删除黑名单中的IP?
面板支持勾选多个IP后点击删除。命令行可用iptables -D INPUT -s IP -j DROP逐条删除,或清空所有规则:iptables -F INPUT(谨慎操作,会清空所有防火墙规则)。
导入的IP会占用面板资源吗?
黑名单规则由系统防火墙处理,对面板性能影响极小,但规则过多可能增加网络延迟,建议定期清理无效IP。
能否直接编辑面板的数据库来导入?
不推荐。宝塔面板的IP黑名单存储在SQLite数据库中,直接修改可能导致面板异常,应使用官方导入功能或命令行。
完成以上步骤后,你的宝塔面板即可高效管理IP黑名单,批量封禁恶意IP不再繁琐。
建议定期导出备份,并关注服务器日志中的新攻击源,动态更新黑名单。