雷池WAF社区版与宝塔面板共存部署方案

一、方案概述

本方案旨在实现雷池(SafeLine)Web应用防火墙与宝塔面板的稳定共存,充分发挥两者优势:宝塔面板提供便捷的服务器管理、网站部署及环境配置功能,雷池则专注于Web安全防护,抵御SQL注入、XSS跨站脚本、文件上传漏洞等常见Web攻击。方案将解决两者在端口占用、进程冲突、网络转发等核心问题,确保服务器管理效率与Web应用安全防护并行不悖。

二、共存可行性分析

2.1 核心冲突点

  • 端口冲突:雷池默认使用80、443端口作为流量入口(用于反向代理和攻击检测),而宝塔面板部署的Web服务(Nginx/Apache)同样依赖80、443端口,这是两者共存的核心冲突点。
  • 进程与服务冲突:雷池内置Nginx作为反向代理组件,若宝塔面板已部署Nginx,可能出现进程抢占、配置冲突等问题。
  • 网络转发逻辑:需明确流量走向,确保所有Web请求先经过雷池防护,再转发至宝塔管理的后端服务,避免防护失效或流量绕开。

2.2 可行性结论

通过调整端口配置、优化网络转发架构、隔离服务进程,可实现两者稳定共存。核心思路为:将雷池作为前端防护入口,占用公网80/443端口,通过反向代理将净化后的流量转发至宝塔面板管理的后端Web服务(调整后端服务端口至非默认端口);同时确保雷池与宝塔的Nginx进程独立运行,通过配置隔离避免冲突。

三、前置准备

3.1 环境要求

项目
要求
服务器系统
CentOS 7/8/9、Ubuntu 20.04/22.04(64位,推荐CentOS 7)
硬件配置
CPU ≥ 2核,内存 ≥ 4GB,硬盘 ≥ 40GB(雷池需占用约10GB存储空间)
网络环境
服务器拥有公网IP,放行80、443、8888(宝塔默认端口)、9443(雷池管理端口)等端口
软件前提
未安装Nginx/Apache或已卸载(避免与雷池、宝塔的组件冲突);服务器已配置基础网络(可访问互联网)

3.2 端口规划

为避免冲突,明确端口分配如下:
服务/组件
端口
用途
备注
雷池
80(TCP)
HTTP流量入口
公网暴露,接收外部HTTP请求
雷池
443(TCP)
HTTPS流量入口
公网暴露,接收外部HTTPS请求
雷池
9443(TCP)
雷池管理后台
可限制IP访问,增强安全性
宝塔面板
8888(TCP)
宝塔管理后台
默认端口,可修改为其他端口(如8889)
宝塔Nginx(后端)
8080(TCP)
HTTP后端服务端口
仅本地监听,供雷池转发流量
宝塔Nginx(后端)
8443(TCP)
HTTPS后端服务端口
仅本地监听,供雷池转发流量

3.3 工具准备

  • 远程连接工具:Xshell、Putty等(用于服务器命令行操作)
  • 文件传输工具:Xftp、WinSCP等(用于配置文件上传/下载)
  • 雷池安装包:从SafeLine官方获取最新稳定版(https://safeline.deepin.org/
  • 宝塔面板安装脚本:从宝塔官方获取(https://www.bt.cn/

四、部署步骤

4.1 服务器初始化配置

  1. 关闭防火墙或放行所需端口(以CentOS为例): # 关闭firewalld(推荐,后续可通过雷池/宝塔管理防火墙)
    systemctl stop firewalld
    systemctl disable firewalld

    # 若使用iptables,放行端口
    iptables -A INPUT -p tcp --dport 80 -j ACCEPT
    iptables -A INPUT -p tcp --dport 443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8888 -j ACCEPT
    iptables -A INPUT -p tcp --dport 9443 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8443 -j ACCEPT
    service iptables save
  2. 关闭SELinux(避免权限限制导致部署失败): # 临时关闭
    setenforce 0

    # 永久关闭(修改配置文件)
    sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
  3. 更新系统依赖: # CentOS
    yum update -y
    yum install -y wget curl vim

    # Ubuntu
    apt update -y
    apt install -y wget curl vim

4.2 安装雷池(SafeLine)

  1. 下载并执行雷池安装脚本(官方推荐一键安装): wget https://download.deepin.org/safeline/setup.sh
    chmod +x setup.sh
    ./setup.sh install
  2. 安装过程中配置:
    1. 默认安装路径:/usr/local/safeline(建议保持默认)
    2. 管理后台端口:默认9443(可保持默认,后续限制IP访问)
    3. 设置管理员账号密码:牢记账号密码,用于登录雷池管理后台
    4. 确认端口占用:安装脚本会检测80、443端口,确保此时未被其他服务占用(若已占用,需先停止对应服务)
  3. 验证雷池安装: # 查看雷池服务状态
    systemctl status safeline

    # 访问管理后台(替换为服务器公网IP)
    https://[服务器公网IP]:9443若能成功登录雷池管理后台,说明安装完成。

4.3 安装宝塔面板

  1. 执行宝塔面板一键安装脚本(以CentOS为例): yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh
  2. 安装过程中配置:
    1. 选择Web服务器:推荐安装Nginx(与雷池内置Nginx区分,后续通过端口隔离)
    2. 数据库:根据需求安装MySQL/MariaDB
    3. 其他组件:PHP、FTP等(根据网站需求选择)
  3. 修改宝塔面板端口(避免后续冲突,可选): 若8888端口被占用,可通过以下命令修改:bt 5 # 执行宝塔面板命令行工具,选择5修改面板端口
    # 输入新端口(如8889),重启宝塔面板
    systemctl restart bt
  4. 验证宝塔安装: # 查看宝塔服务状态
    systemctl status bt

    # 访问管理后台(替换为服务器公网IP和端口)
    http://[服务器公网IP]:8888(或修改后的端口)登录宝塔后台(初始账号密码在安装完成后会显示,需及时修改),说明安装完成。

4.4 配置宝塔Nginx端口(核心步骤)

由于雷池已占用80、443端口,需将宝塔管理的Nginx服务端口修改为前置规划的8080(HTTP)、8443(HTTPS),并设置为仅本地监听。
  1. 登录宝塔面板,进入「软件商店」→ 找到「Nginx」→ 点击「设置」。
  2. 修改Nginx主配置:
    1. 点击「配置文件」,找到「http」块中的监听端口配置: # 原配置(需修改)
      listen 80;
      listen [::]:80;

      # 修改为
      listen 127.0.0.1:8080; # 仅本地监听8080端口
      # 注释或删除IPv6监听(可选)
    2. 若需配置HTTPS,找到「server」块(HTTPS相关),修改监听端口: # 原配置(需修改)
      listen 443 ssl;
      listen [::]:443 ssl;

      # 修改为
      listen 127.0.0.1:8443 ssl; # 仅本地监听8443端口
  3. 保存配置并重启Nginx:点击「重启」按钮,确保Nginx正常启动。
  4. 验证Nginx端口: netstat -tuln | grep nginx
    # 应显示监听 127.0.0.1:8080 和 127.0.0.1:8443,无80、443端口监听

4.5 配置雷池反向代理(流量转发核心)

目的:将雷池接收的外部80/443流量,转发至宝塔Nginx的8080/8443端口(后端Web服务),实现先防护后转发。
  1. 登录雷池管理后台(https://[服务器公网IP]:9443),进入「策略管理」→ 「网站防护」→ 「添加网站」。
  2. 配置网站基本信息:
    1. 网站域名:输入需要防护的域名(如www.example.com),多个域名用逗号分隔。
    2. 服务器地址:填写127.0.0.1(宝塔Nginx本地监听地址)。
    3. 服务器端口:HTTP填写8080,HTTPS填写8443(对应宝塔Nginx的后端端口)。
    4. 协议类型:根据后端服务选择HTTP或HTTPS(若后端已配置HTTPS,需勾选「启用HTTPS」,并上传后端证书;若后端为HTTP,选择HTTP即可)。
  3. 配置防护策略:
    1. 开启核心防护规则:SQL注入防护、XSS防护、文件上传防护、命令注入防护等。
    2. 设置CC攻击防护:根据服务器性能配置阈值(如QPS限制、IP封禁时长)。
    3. 日志记录:开启访问日志和攻击日志,便于后续审计和问题排查。
  4. 保存配置并测试:
    1. 在浏览器中访问配置的域名(如www.example.com),应能正常打开网站。
    2. 在雷池管理后台「日志中心」→ 「攻击日志」中,可模拟攻击(如在URL后添加?id=1’),验证防护规则是否生效。

4.6 配置域名解析

将需要防护的域名解析至服务器公网IP(雷池入口IP),确保外部流量通过域名访问时,先到达雷池防护节点。

五、冲突解决与优化

5.1 端口冲突应急处理

若出现端口占用冲突(如雷池无法启动,提示80/443端口被占用),可通过以下命令排查并解决:
# 查看80端口占用进程 lsof -i :80 # 或 netstat -tuln | grep 80 # 停止占用进程(如nginx、apache) systemctl stop nginx systemctl stop httpd # 禁止占用进程开机自启 systemctl disable nginx systemctl disable httpd

5.2 雷池与宝塔Nginx进程隔离

为避免两者Nginx进程相互干扰,可通过以下配置优化:
  • 雷池内置Nginx:默认以safeline用户运行,无需修改。
  • 宝塔Nginx:修改运行用户为www(宝塔默认),确保与雷池用户隔离,避免权限冲突。

5.3 管理后台安全加固

为避免管理后台被攻击,需限制访问IP:
  1. 雷池管理后台(9443端口): # 编辑雷池Nginx配置文件
    vim /usr/local/safeline/nginx/conf/nginx.conf

    # 在server块(监听9443端口)中添加IP限制
    location / {
    allow 192.168.1.0/24; # 允许内网IP段访问
    allow 127.0.0.1; # 允许本地访问
    deny all; # 拒绝其他所有IP
    # 原有配置...
    }

    # 重启雷池
    systemctl restart safeline
  2. 宝塔面板后台(8888端口): 登录宝塔面板 → 「安全」→ 「防火墙」→ 「端口规则」→ 找到8888端口,设置「允许访问的IP」(填写自己的公网IP或内网IP段),拒绝其他IP访问。

5.4 性能优化

  • 雷池优化:根据服务器内存调整雷池worker进程数(默认自动适配,内存≥4GB无需修改)。
  • 宝塔Nginx优化:在宝塔Nginx设置中,调整worker_processes(建议与CPU核心数一致)、worker_connections(默认1024,可调整为2048)。
  • 日志分割:开启雷池和宝塔的日志分割功能,避免日志文件过大占用磁盘空间。

六、测试验证

6.1 基础功能测试

  1. 访问宝塔面板:http://[服务器公网IP]:8888,确认能正常登录和操作。
  2. 访问雷池管理后台:https://[服务器公网IP]:9443,确认能正常登录和查看配置。
  3. 访问防护网站:通过域名访问后端Web服务,确认网站能正常打开(无502、503等错误)。

6.2 安全防护测试

  1. SQL注入测试:在网站URL后添加攻击 payload(如?id=1′ or ‘1’=’1),查看雷池是否拦截并记录攻击日志。
  2. XSS测试:在评论区、搜索框等输入 <script>alert(1)</script>,查看是否被拦截。
  3. 文件上传测试:尝试上传包含恶意代码的php文件,查看是否被雷池拦截。

6.3 稳定性测试

  1. 压力测试:使用ab工具或JMeter对网站进行压力测试,观察服务器CPU、内存占用情况,确保雷池和宝塔服务稳定运行。
  2. 重启测试:重启服务器,确认雷池和宝塔服务能自动启动,网站能正常访问。

七、运维与故障排查

7.1 日常运维要点

  • 定期更新:及时更新雷池防护规则和宝塔面板及组件版本。
  • 监控检查:通过宝塔面板监控服务器资源占用、服务状态,定期查看雷池攻击日志。
  • 备份配置:定期备份雷池和宝塔的配置文件,便于故障恢复。

7.2 常见故障排查

故障现象
可能原因
解决方案
访问网站出现502 Bad Gateway
雷池反向代理配置错误;宝塔Nginx未启动;后端端口未监听
1. 检查宝塔Nginx状态(systemctl status nginx);2. 验证后端端口是否监听(netstat -tuln | grep 8080);3. 检查雷池反向代理配置(服务器地址、端口是否正确)
雷池无法启动,提示80/443端口被占用
宝塔Nginx未修改端口,仍占用80/443
重新配置宝塔Nginx端口为8080/8443,停止并重启Nginx
管理后台无法访问
端口未放行;IP限制错误;服务未启动
1. 检查防火墙端口放行规则;2. 验证IP限制配置是否正确;3. 检查对应服务状态(雷池:systemctl status safeline;宝塔:systemctl status bt)
攻击未被拦截
雷池防护规则未开启;流量未经过雷池;域名配置错误
1. 检查雷池防护规则是否开启;2. 验证域名解析是否指向服务器公网IP;3. 查看雷池访问日志,确认流量是否经过雷池

八、方案总结

本方案通过「雷池前置防护+宝塔后端管理」的架构,实现了两者的稳定共存。核心要点为:端口隔离(雷池占用公网80/443,宝塔Nginx使用本地8080/8443)、流量转发(雷池反向代理至宝塔后端)、进程隔离(不同运行用户)及安全加固(限制管理后台IP访问)。该方案既保留了宝塔面板的便捷管理优势,又通过雷池实现了Web应用的全面防护,适用于各类需要兼顾管理效率与安全防护的Web服务部署场景。

九、附录:相关资源