可通过五种方法限制宝塔面板仅特定IP访问:一、宝塔内置IP黑白名单;二、云平台安全组双层过滤;三、Nginx反向代理前置校验;四、iptables命令行强制限制;五、CDN场景下结合real_ip模块识别真实IP。

如果您已完成宝塔面板安装,但希望限制仅特定IP地址可访问面板后台,则需配置面板级IP白名单规则。以下是实现该目标的多种独立方法:
一、通过宝塔内置“IP黑白名单”模块设置
该方式直接调用宝塔安全模块,无需额外插件,适用于固定公网IP或小范围CIDR网段管理。
1、使用管理员账号登录宝塔面板,在左侧菜单栏点击安全选项。
2、在安全页面中找到并点击IP黑白名单子项。
3、点击添加白名单IP按钮,输入单个IP(如 203.123.45.67)或CIDR格式网段(如 192.168.10.0/24)。
4、每行仅填写一个IP或一个网段,支持批量粘贴多行;填写完毕后点击提交。
5、确认列表中已显示新增条目,且状态为“启用”;此时非白名单IP访问面板首页将直接返回403 Forbidden错误。
二、结合云平台安全组实施双层IP过滤
此方法在系统网络层拦截请求,早于宝塔面板处理流程,可显著降低非法扫描对面板进程的干扰压力。
1、登录对应云服务商控制台(如阿里云、腾讯云),进入云服务器ECS管理页。
2、找到目标服务器实例,点击其关联的安全组链接。
3、在安全组规则页选择入方向,点击添加安全组规则。
4、协议类型选择自定义TCP,端口范围填写宝塔默认端口(如8888),源IP地址填入授权IP或网段(如 203.123.45.67/32)。
5、保存规则后,立即生效;此时即使宝塔面板未启用白名单,非授权IP也无法建立TCP连接。
三、通过Nginx反向代理前置校验IP
适用于已启用域名访问宝塔面板(如 bt.example.com)且部署了Nginx反向代理的场景,可在代理层完成IP过滤,不依赖宝塔自身功能。
1、进入宝塔面板,点击左侧网站,找到用于代理宝塔面板的站点(如 bt.example.com)。
2、点击该站点右侧设置,切换至配置文件选项卡。
3、在server块内、location / { ... }之前插入以下配置:
if ($remote_addr !~ ^(203\.123\.45\.67|192\.168\.10\.\d+)$) { return 403; }
4、将示例IP替换为实际允许的IP或正则表达式形式的网段;多个IP用竖线分隔。
5、点击保存,再点击重载配置使Nginx生效。
四、使用iptables命令行强制限制面板端口访问
该方式绕过所有应用层逻辑,直接由Linux内核netfilter模块执行过滤,权限最高、性能最优,适合高级运维人员。
1、通过SSH登录服务器,执行命令查看当前宝塔监听端口:netstat -tuln | grep :8888(假设为8888)。
2、执行以下命令,仅放行指定IP访问8888端口:
iptables -I INPUT -p tcp --dport 8888 ! -s 203.123.45.67 -j DROP
3、若需允许多个IP,重复执行该命令,每次替换-s后的IP;如需网段,写为 192.168.10.0/24。
4、执行iptables-save > /etc/sysconfig/iptables(CentOS)或netfilter-persistent save(Debian/Ubuntu)持久化规则。
5、验证规则已加载:iptables -L INPUT -n | grep 8888,应可见对应DROP规则。
五、针对CloudFlare等CDN用户补充配置
当宝塔面板通过CloudFlare等CDN暴露时,$remote_addr将显示CDN节点IP而非真实访客IP,必须改用HTTP头中的真实IP字段进行白名单匹配。
1、登录宝塔面板,进入安全 → IP黑白名单。
2、点击添加白名单IP,分别填入CloudFlare官方公布的全部IPv4与IPv6网段(如 173.245.48.0/20、2405:b500::/32 等)。
3、确保在Nginx配置中已启用real_ip模块,并配置如下指令:
set_real_ip_from 173.245.48.0/20;
real_ip_header CF-Connecting-IP;
4、重启Nginx服务,使真实IP识别生效;此后宝塔白名单将基于CF-Connecting-IP头值进行判断。










