宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

前言

在服务器运维过程中,我们经常遇到恶意扫描、CC攻击、刷流量等安全威胁。宝塔面板作为国内最流行的服务器管理面板,提供了多种封禁恶意IP的方法。本文将系统介绍三种主流方案,从最直观的图形界面操作到底层命令配置,帮助你根据实际场景选择最合适的防护策略。

适用版本:宝塔面板 7.x / 8.x 版本,Linux系统(CentOS/Ubuntu等)

一、方法对比:哪种方式最适合你?

方法防护范围生效速度操作难度适用场景
系统防火墙(推荐)全端口(SSH/面板/网站全封)即时生效⭐ 简单封禁扫站、爆破类恶意IP
Nginx防火墙插件仅HTTP/HTTPS网站即时生效⭐ 简单网站层精准拦截,需专业版
手动修改Nginx配置仅当前站点重载后生效⭐⭐ 中等单站点精细化控制

核心原则:如果要封的IP正在扫描你所有端口(SSH、面板、网站等),务必使用系统防火墙——它在网络层直接丢包,恶意IP连连接都建立不起来。如果只涉及网站访问层面的封禁,用Nginx防火墙插件更灵活。

宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

二、方法一:通过系统防火墙封禁IP(最彻底、最推荐)

系统防火墙(基于iptables/firewalld)是宝塔面板内置的最核心安全模块,规则写入底层防火墙,对整个服务器所有端口生效,包括面板、网站、SSH等。它不依赖Nginx配置,也不需要重启服务,保存即刻拦截

操作步骤

第1步:登录宝塔面板,点击左侧导航栏的「安全」。

第2步:找到「系统防火墙」模块,确认状态为「已启动」。

第3步:点击「屏蔽IP」按钮(部分版本显示为「添加IP规则」)。

第4步:在IP输入框中填入要封禁的IP或IP段:

  • 封单个IP:直接输入IP地址,如 203.203.203.203
  • 封IP段(CIDR格式) :输入网段,如 203.203.203.0/24(封C段256个IP)
  • 封多个IP:换行分隔,每行一个

第5步:在「备注」栏填写来源说明,如「高频扫描IP段」,方便后续排查。

第6步:点击「提交」,规则立即生效。

封禁IP段的CIDR速查

要封的范围CIDR写法包含IP数
单个IP203.203.203.203/321个
C段(256个)203.203.203.0/24256个
B段(65536个)203.203.0.0/1665536个
A段(1677万个)203.0.0.0/81677万个

⚠️ 重要提醒:封A段/B段时要特别注意——千万别把自己IP也封了!曾有用户封了 112.0.0.0/8 后发现自己IP也是112开头的,导致无法登录面板。封大段之前,务必先确认自己的IP不在该范围内。

如何解封

在「安全」→「系统防火墙」→「IP规则」列表中,找到对应规则,点击「删除」即可。

宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

三、方法二:通过Nginx防火墙插件封禁IP(专业版/网站层)

宝塔的「Nginx防火墙」插件是目前最灵活的网站层IP封禁方式,支持单IP、IP段、批量导入,规则直接注入Nginx的http或server块,优先级高且无需重启

📌 注意:此插件为宝塔专业版专属功能,免费版用户需登录宝塔账号授权使用。

操作步骤

第1步:在宝塔面板左侧点击「软件商店」,搜索「Nginx防火墙」,点击安装并启用。

第2步:安装完成后,进入「安全」→「Nginx防火墙」→「IP黑名单」。

第3步:点击「添加黑名单IP」,输入要封禁的IP或IP段:

  • 单个IP:直接写 203.0.113.45
  • C段:写 203.0.113.0–203.0.113.255(注意:部分版本不支持CIDR格式如/24,只认起始+结束IP)
  • 批量导入:支持多条换行添加

第4步:点击「提交」,立即生效,无需重载Nginx。

第5步:被封IP访问任意站点会返回 403 Forbidden,可在插件「访问日志」页查看拦截记录。

自动封禁配置(进阶)

Nginx防火墙还支持自动封禁高频恶意IP:

  1. 进入「Nginx防火墙」→「全局设置
  2. 开启「自动封禁」开关
  3. 设置触发条件:如「单位时间内触发次数」设为5次,「封禁时长」设为86400秒(24小时)
宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

四、方法三:手动修改Nginx配置文件(灵活但易出错)

如果你不想安装额外插件,可以直接在网站配置文件中添加 deny 指令来封禁IP。但请注意:这种方式仅对当前站点生效,且容易被其他配置覆盖或绕过

操作步骤

第1步:在宝塔面板进入「网站」列表,点击目标站点右侧的「设置」。

第2步:切换到「配置文件」选项卡。

第3步:在 server { ... } 块中找到合适位置(通常在server块开头),添加以下规则:

# 封禁单个IP
deny 203.0.113.45;

# 封禁IP段(CIDR格式)
deny 192.168.100.0/24;
deny 203.0.113.0/28;

第4步:点击右上角「重载配置」按钮,使规则生效。

第5步:验证效果——从被屏蔽IP访问该网站,应返回 403 Forbidden

全局黑名单文件(高级)

如果需要在多个站点复用同一套黑名单,可以创建独立的全局规则文件:

# 1. 创建黑名单文件
touch /www/server/panel/vhost/nginx/blacklist.conf

# 2. 写入 deny 规则
echo "deny 192.0.2.0/24;" >> /www/server/panel/vhost/nginx/blacklist.conf
echo "deny 198.51.100.64/27;" >> /www/server/panel/vhost/nginx/blacklist.conf

# 3. 在主配置中引入
# 编辑 /www/server/nginx/conf/nginx.conf,在 http {} 块末尾添加:
include /www/server/panel/vhost/nginx/blacklist.conf;

五、高阶技巧:通过SSH命令行精细控制

当图形界面不够用时(如需配合端口、协议等条件),可以用firewalld原生命令实现更精细的控制。

封禁IP段对特定端口的访问

# 封禁 203.203.203.0/24 对面板端口 8888 的访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.203.203.0/24" port port="8888" protocol="tcp" reject'

屏蔽大段+放行子段(白名单优先)

如果想屏蔽 192.168.0.0/16 但放行 192.168.20.0/24,注意放行规则要写在屏蔽规则前面(firewalld按顺序匹配):

# 先放行子段(优先级高)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.20.0/24" accept'

# 再屏蔽大段
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/16" drop'

# 重载生效
firewall-cmd --reload

常用命令速查

# 查看当前所有富规则
firewall-cmd --list-rich-rules

# 查看系统防火墙全部规则
firewall-cmd --list-all

# 重载防火墙(修改后必须执行)
firewall-cmd --reload

⚠️ 关键提醒:用命令行添加规则时必须加 --permanent 参数,否则重启后规则会丢失。执行后务必 firewall-cmd --reload 才能真正加载新规则。

宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

六、验证封禁是否生效

别只看宝塔界面上的「已添加」,一定要从服务器外部实测验证。

方法一:从被封IP段外的机器执行:

telnet 你的服务器IP 8888

应显示「Connection refused」或超时,而不是登录页响应。

方法二:从被封IP的机器访问网站,应看到 403 Forbidden 或连接超时。

方法三:查看宝塔「安全」→「系统防火墙」→「防火墙日志」,确认有匹配记录。

七、常见问题与避坑指南

Q1:在网站层封了IP,为什么还能访问?

可能原因:

  • 站点启用了反向代理CDN,真实IP被隐藏
  • 黑名单只加在HTTP的server块,HTTPS的server块没同步
  • 配置中存在 allow all 等冲突语句

解决方案:改用系统防火墙封禁,或开启Nginx防火墙的「获取真实IP」功能。

Q2:误封了自己的IP怎么办?

  • 如果还能登录面板:进入「安全」→「系统防火墙」→「IP规则」,删除自己的IP规则
  • 如果完全无法登录:通过云服务商VNC或控制台登录服务器,执行 firewall-cmd --permanent --remove-rich-rule='...' 删除规则,然后 firewall-cmd --reload

Q3:系统防火墙和云服务商安全组有什么区别?

  • 系统防火墙(宝塔/iptables):服务器内部的防火墙
  • 云安全组(阿里云/腾讯云等):云平台外层的网络过滤

如果同时使用,云安全组优先级更高——在云安全组放行的IP,系统防火墙拦不住。建议两处都做限制,双重保险。

Q4:为什么「禁止海外访问」功能不准确?

宝塔的「禁止海外访问」基于GeoIP数据库,但数据库更新慢、精度差,港澳台常被误判为境外,跨境CDN节点也容易被误封。

更靠谱的做法:先用Nginx防火墙的「访问日志」筛选出高频恶意IP,再手动拉黑。如需地域控制,建议在CDN层(如Cloudflare WAF)设置。

总结

场景推荐方案
恶意IP在扫全端口(SSH/面板/网站)系统防火墙(方法一)
仅网站被攻击,需灵活管理Nginx防火墙插件(方法二)
免费版、单站点精细控制✅ 手动修改Nginx配置(方法三)
需要端口+IP组合封禁✅ 命令行firewalld(高阶技巧)

一句话建议系统防火墙最彻底,Nginx防火墙最灵活。日常运维建议两者结合使用——系统防火墙拦大段恶意IP,Nginx防火墙做精细化管理和自动封禁。

宝塔面板如何封禁指定IP和IP段:详细图文教程(系统防火墙/Nginx)

原创文章,作者:高防服务器租用,如若转载,请注明出处:https://www.zfwq.com/jishu/1576.html

(0)
高防服务器上层封海外是什么意思?和机房封海外有什么区别?
上一篇 3天前
宝塔Linux面板搭建网站:从零到上线的完整图文教程
下一篇 2小时前

相关推荐

QQ客服
微信客服
微信客服
分享本页
返回顶部