宝塔面板(BT Panel)集成雷池 SafeLine WAF(社区版)

宝塔面板(BT Panel)系统 ,并集成 雷池 SafeLine WAF(社区版) ,可以实现"前端 WAF 防护 + 后端宝塔站点管理 "的组合架构。但由于两者默认都监听 80/443 端口,必须进行端口调整以避免冲突。

以下是 完整、可操作、经过验证 的集成方案,适用于 Ubuntu/CentOS 系统。


✅ 一、整体架构

plaintext 复制代码
用户 → https://your-domain.com (443)
        ↓
[雷池 WAF] ← 监听 80/443,处理 HTTPS 解密、WAF 防护
        ↓ 转发到本地
[宝塔 Nginx] ← 监听非标准端口(如 8080/8443),仅接受 127.0.0.1 请求
        ↓
[网站文件 / PHP / MySQL]

🔒 安全原则:外部流量只能通过雷池进入,无法绕过 WAF 直连宝塔


⚙️ 二、部署步骤(共 5 步)

第一步:准备服务器环境

  • 操作系统:Ubuntu 20.04+ / CentOS 7+
  • 最低配置:2 核 CPU / 2GB 内存(宝塔 + 雷池共存)
  • 已安装
    • 宝塔面板(最新版)
    • Docker(宝塔软件商店中安装)
    • 已创建一个测试站点(如 example.com

💡 建议:先不要给宝塔站点申请 SSL 证书,SSL 由雷池统一处理。


第二步:修改宝塔站点端口(释放 80/443)

1. 修改主站监听端口
  • 进入宝塔 → 网站 → 找到你的站点 → 设置配置文件

  • 将:

    nginx 复制代码
    listen 80;
    listen 443 ssl http2;

    改为:

    nginx 复制代码
    listen 127.0.0.1:8080;   # 仅监听本地回环,防止外网直连
    # listen 443 ssl http2;  # 暂时注释 HTTPS
2. 修改全局默认配置(防止新站占用 80)
  • 编辑文件:

    bash 复制代码
    vim /www/server/panel/vhost/nginx/0.default.conf
  • listen 80; 改为:

    nginx 复制代码
    listen 127.0.0.1:8080;
    server_name _;
    return 444;  # 拒绝 IP 直接访问
3. 修改 PHP-FPM 状态页(可选但推荐)
  • 编辑:

    bash 复制代码
    vim /www/server/panel/vhost/nginx/phpfpm_status.conf
  • listen 80; 改为 listen 127.0.0.1:8080;

4. 重载 Nginx
  • 宝塔 → 软件商店Nginx重载配置

✅ 验证:ss -tuln | grep ':80' 应无输出,说明 80 端口已释放。


第三步:安装雷池 SafeLine WAF

bash 复制代码
# 下载并运行官方安装脚本
bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/manager.sh)"
  • 输入 1 开始安装;
  • 记录输出的 管理员账号和密码
  • 访问 https://<服务器IP>:9443 登录控制台;
  • 放行安全组端口:9443(管理)、80、443(Web 流量)。

⚠️ 若安装失败(常见于低内存),请确保 剩余内存 ≥ 1GB


第四步:在雷池中添加防护站点

  1. 登录雷池控制台(https://IP:9443
  2. 左侧菜单 → 防护站点站点管理添加站点
  3. 填写如下信息:
字段
域名 example.com(你的实际域名)
端口 80,443
SSL ✅ 勾选,并上传或选择你的 SSL 证书
上游服务器 http://127.0.0.1:8080
备注 (可选)
  1. 点击 【提交】

✅ 成功后,雷池会显示绿色对勾 ✓,表示与后端通信正常。


第五步:配置 SSL 证书(关键!)

📌 SSL 证书必须在雷池中配置,宝塔站点保持 HTTP!

方式 A:上传已有证书
  • 在雷池 【通用设置】→【证书管理】 中上传 .crt.key 文件;
  • 添加站点时选择该证书。
方式 B:使用 Let's Encrypt(推荐)
  • 在雷池中直接申请(需域名解析到本机);
  • 或用 acme.sh 申请后上传。

❌ 切勿在宝塔中开启 SSL!否则会导致:

  • 内部回环代理失败
  • 双重加密性能损耗
  • 证书链混乱

🔒 三、安全加固建议

1. 禁止通过 IP 或非授权域名访问

在雷池 【应用管理】→【高级配置】 中:

  • 启用 "禁止通过 IP 访问网站"
  • 设置 默认拦截页面

2. 防止 WAF 绕过

  • 确保宝塔 Nginx 只监听 127.0.0.1 (非 0.0.0.0);
  • 云服务器安全组 禁止直接访问 8080 端口(仅允许本地);

3. 开启核心防护功能

  • 高频访问限制:10 秒 180 次
  • CC 防护:开启人机验证
  • SQL/XSS 防护:使用"高强度"规则

🛠 四、常见问题解决

问题 解决方案
雷池提示"上游连接失败" 检查宝塔是否监听 127.0.0.1:8080;用 curl http://127.0.0.1:8080 测试
HTTPS 显示不安全 检查雷池证书是否包含完整证书链;浏览器是否缓存旧证书
访问出现 502 Bad Gateway 宝塔站点未启动?PHP 服务异常?检查 Nginx 错误日志
端口 8080 被浏览器拦截(ERR_UNSAFE_PORT) 改用 808120080 等安全端口
雷池安装失败(Docker 报错) 手动执行:cd /data/safeline && docker-compose up -d

✅ 五、总结:最佳实践清单

  • ✅ 宝塔 Nginx 监听 127.0.0.1:8080(非公网)
  • ✅ 雷池监听 0.0.0.0:80/443
  • ✅ SSL 证书仅在雷池配置
  • ✅ 上游地址写 http://127.0.0.1:8080
  • ✅ 关闭宝塔的"强制 HTTPS"
  • ✅ 开启雷池的 IP 黑名单、CC 防护、人机验证

🎯 效果 :所有外部流量必须经过雷池 WAF 检查,攻击被拦截,合法请求透传给宝塔,实现 安全 + 易用 的完美结合。


通过以上步骤,你即可在宝塔系统上成功集成雷池 WAF,为网站提供企业级 Web 安全防护,同时保留宝塔的便捷运维能力。

相关推荐
weixin_446260854 小时前
XPipe: 轻松访问你的服务器基础设施 [特殊字符]
运维·服务器
TTGGGFF4 小时前
GLM-4V-9B 视觉多模态模型本地部署教程【保姆级教程】
linux·运维·服务器·图文对话
r***01384 小时前
Nginx代理到https地址忽略证书验证配置
运维·nginx·https
xiaobaishuoAI4 小时前
后端工程化实战指南:从规范到自动化,打造高效协作体系
java·大数据·运维·人工智能·maven·devops·geo
Hello.Reader4 小时前
PyFlink Configuration 一次讲透怎么配、配哪些、怎么“调得快且稳”
运维·服务器·python·flink
__雨夜星辰__4 小时前
VMware 17 下 Ubuntu 虚拟机与宿主机间复制粘贴失效问题
linux·运维·ubuntu
prettyxian4 小时前
【linux】进程调度:优先级、时间片与O(1)算法
linux·运维·服务器
__雨夜星辰__4 小时前
VS Code 的Remote-SSH/Remote Development插件无法连接到 Ubuntu 系统下 的远程虚拟主机(VMware)
运维·vscode·ubuntu·ssh
2401_865854884 小时前
16核32g的服务器能运用于哪些场景
运维·服务器