一、方案概述
本方案旨在实现雷池(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 服务器初始化配置
- 关闭防火墙或放行所需端口(以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 - 关闭SELinux(避免权限限制导致部署失败):
# 临时关闭
setenforce 0
# 永久关闭(修改配置文件)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config - 更新系统依赖:
# CentOS
yum update -y
yum install -y wget curl vim
# Ubuntu
apt update -y
apt install -y wget curl vim
4.2 安装雷池(SafeLine)
- 下载并执行雷池安装脚本(官方推荐一键安装):
wget https://download.deepin.org/safeline/setup.sh
chmod +x setup.sh
./setup.sh install - 安装过程中配置:
- 默认安装路径:/usr/local/safeline(建议保持默认)
- 管理后台端口:默认9443(可保持默认,后续限制IP访问)
- 设置管理员账号密码:牢记账号密码,用于登录雷池管理后台
- 确认端口占用:安装脚本会检测80、443端口,确保此时未被其他服务占用(若已占用,需先停止对应服务)
- 验证雷池安装:
# 查看雷池服务状态
systemctl status safeline
# 访问管理后台(替换为服务器公网IP)
https://[服务器公网IP]:9443若能成功登录雷池管理后台,说明安装完成。
4.3 安装宝塔面板
- 执行宝塔面板一键安装脚本(以CentOS为例):
yum install -y wget && wget -O install.sh https://download.bt.cn/install/install_6.0.sh && sh install.sh - 安装过程中配置:
- 选择Web服务器:推荐安装Nginx(与雷池内置Nginx区分,后续通过端口隔离)
- 数据库:根据需求安装MySQL/MariaDB
- 其他组件:PHP、FTP等(根据网站需求选择)
- 修改宝塔面板端口(避免后续冲突,可选): 若8888端口被占用,可通过以下命令修改:
bt 5 # 执行宝塔面板命令行工具,选择5修改面板端口
# 输入新端口(如8889),重启宝塔面板
systemctl restart bt - 验证宝塔安装:
# 查看宝塔服务状态
systemctl status bt
# 访问管理后台(替换为服务器公网IP和端口)
http://[服务器公网IP]:8888(或修改后的端口)登录宝塔后台(初始账号密码在安装完成后会显示,需及时修改),说明安装完成。
4.4 配置宝塔Nginx端口(核心步骤)
由于雷池已占用80、443端口,需将宝塔管理的Nginx服务端口修改为前置规划的8080(HTTP)、8443(HTTPS),并设置为仅本地监听。
- 登录宝塔面板,进入「软件商店」→ 找到「Nginx」→ 点击「设置」。
- 修改Nginx主配置:
- 点击「配置文件」,找到「http」块中的监听端口配置:
# 原配置(需修改)
listen 80;
listen [::]:80;
# 修改为
listen 127.0.0.1:8080; # 仅本地监听8080端口
# 注释或删除IPv6监听(可选) - 若需配置HTTPS,找到「server」块(HTTPS相关),修改监听端口:
# 原配置(需修改)
listen 443 ssl;
listen [::]:443 ssl;
# 修改为
listen 127.0.0.1:8443 ssl; # 仅本地监听8443端口
- 保存配置并重启Nginx:点击「重启」按钮,确保Nginx正常启动。
- 验证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服务),实现先防护后转发。
- 登录雷池管理后台(https://[服务器公网IP]:9443),进入「策略管理」→ 「网站防护」→ 「添加网站」。
- 配置网站基本信息:
- 网站域名:输入需要防护的域名(如www.example.com),多个域名用逗号分隔。
- 服务器地址:填写127.0.0.1(宝塔Nginx本地监听地址)。
- 服务器端口:HTTP填写8080,HTTPS填写8443(对应宝塔Nginx的后端端口)。
- 协议类型:根据后端服务选择HTTP或HTTPS(若后端已配置HTTPS,需勾选「启用HTTPS」,并上传后端证书;若后端为HTTP,选择HTTP即可)。
- 配置防护策略:
- 开启核心防护规则:SQL注入防护、XSS防护、文件上传防护、命令注入防护等。
- 设置CC攻击防护:根据服务器性能配置阈值(如QPS限制、IP封禁时长)。
- 日志记录:开启访问日志和攻击日志,便于后续审计和问题排查。
- 保存配置并测试:
- 在浏览器中访问配置的域名(如www.example.com),应能正常打开网站。
- 在雷池管理后台「日志中心」→ 「攻击日志」中,可模拟攻击(如在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:
- 雷池管理后台(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 - 宝塔面板后台(8888端口): 登录宝塔面板 → 「安全」→ 「防火墙」→ 「端口规则」→ 找到8888端口,设置「允许访问的IP」(填写自己的公网IP或内网IP段),拒绝其他IP访问。
5.4 性能优化
- 雷池优化:根据服务器内存调整雷池worker进程数(默认自动适配,内存≥4GB无需修改)。
- 宝塔Nginx优化:在宝塔Nginx设置中,调整worker_processes(建议与CPU核心数一致)、worker_connections(默认1024,可调整为2048)。
- 日志分割:开启雷池和宝塔的日志分割功能,避免日志文件过大占用磁盘空间。
六、测试验证
6.1 基础功能测试
- 访问宝塔面板:http://[服务器公网IP]:8888,确认能正常登录和操作。
- 访问雷池管理后台:https://[服务器公网IP]:9443,确认能正常登录和查看配置。
- 访问防护网站:通过域名访问后端Web服务,确认网站能正常打开(无502、503等错误)。
6.2 安全防护测试
- SQL注入测试:在网站URL后添加攻击 payload(如?id=1′ or ‘1’=’1),查看雷池是否拦截并记录攻击日志。
- XSS测试:在评论区、搜索框等输入 <script>alert(1)</script>,查看是否被拦截。
- 文件上传测试:尝试上传包含恶意代码的php文件,查看是否被雷池拦截。
6.3 稳定性测试
- 压力测试:使用ab工具或JMeter对网站进行压力测试,观察服务器CPU、内存占用情况,确保雷池和宝塔服务稳定运行。
- 重启测试:重启服务器,确认雷池和宝塔服务能自动启动,网站能正常访问。
七、运维与故障排查
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服务部署场景。
九、附录:相关资源
- 宝塔面板官方文档:https://www.bt.cn/docs/
- Nginx配置官方指南:http://nginx.org/en/docs/