一山可容二虎!宝塔面板+雷池 WAF 部署实战

前言

为了保证网站安全,可以在网站前增加一个 WAF(Web 应用防火墙) 来进行防护。如果使用宝塔云 WAF 的话就需要多机部署并且还需要额外开通云 WAF 功能,这些对于个人来说成本太高了!

免费的雷池社区版不香吗?但很多个人用户又是通过宝塔面板进行管理的,这就导致雷池和主机 Nginx 有冲突问题,那怎么办呢?本文将介绍如何在单机部署下雷池和 Nginx 共存。

雷池介绍

长亭雷池 WAF 是长亭科技耗时近 10 年倾情打造的 WAF,是基于智能语义分析的下一代 Web 应用防火墙,不让黑客越雷池一步!

环境依赖

环境要求
操作系统Linux
CPU 指令架构x86_64(支持 ssse3 指令集)
Docker20.10.14 版本以上
Docker Compose2.0.0 版本以上
最低资源需求1 核 CPU / 1 GB 内存 / 5 GB 磁盘

这里列出来的是雷池所需要的环境,宝塔支持的环境和操作系统可以在宝塔官网查询

软件部署

部署宝塔

对于宝塔安装本文不进行赘述,官网上都有详细的说明了

安装 Docker

部署完宝塔之后还需要通过宝塔安装以下软件:

  • Nginx
  • Docker

安装完成之后 网站Docker 可以看到宝塔这两个可以正常工作

网站
Docker

部署雷池

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"

在这里插入图片描述

如果出现了这个提示,这里不建议输入 “Y”,脚本有可能会造成其他的问题

警告

我这里使用在线脚本进行安装,但是由于我的环境中的 Docker 是根据操作系统二进制编译的,并没有 docker compose 命令,但是 docker-compose 是正常的。

因此可以通过修改雷池脚本中的docker compose 命令,先下载雷池的脚本:

curl -o sl.sh https://waf-ce.chaitin.cn/release/latest/setup.sh

然后可以在宝塔中修改脚本文件

替换

修改完成之后可以通过以下命令执行雷池部署脚本

bash sl.sh

执行
出现这个提示代表雷池安装成功

成功

域名访问

为了通过域名来访问雷池,需要在宝塔中对雷池添加一个反向代理

代理的目标是 https://localhost:9443

添加代理

特别注意这里要转发目标的协议必须是 https,否则打开雷池页面将出现无限循环跳转

通过浏览器打开宝塔配置的域名,成功看到了雷池页面!

雷池页面

站点部署

在单机上部署你的网页,并且结合雷池进行防护

虽然雷池实际上已经内置了 Tengine,可以直接接管 80 端口,但是因为单机上已经安装了 Nginx,它本身就监听了该端口,那么雷池无法继续监听这个端口。

虽然我有查到可以通过修改(宝塔安装的) Nginx 目录下 /www/server/panel/vhost/nginx/ 配置文件(0.default.confphpfpm_status.conf)中 Nginx 监听端口改为非 80 端口。

但是实际上可能还需要修改所有的已有的网站的配置文件。如果你使用宝塔对网站进行更改配置之类的操作,宝塔还会重新覆盖你的变更导致恢复成监听 80 端口,这又是一个隐藏的问题。

因此,我采用了以下方法(经过了一层转发,性能可能有所下降):

客户端 Nginx 雷池 请求 转发到雷池 雷池请求本地 Nginx 上游 业务响应 业务响应 响应给客户端 客户端 Nginx 雷池

以客户端访问 test.xx.com 为例:

客户端 Nginx 雷池 请求 test.xx.com 转发 test-o.xx.com 请求上游 test-o.xx.com test-o.xx.com test-o.xx.com test.xx.com 客户端 Nginx 雷池

查看雷池容器网络

由于雷池是通过 Docker 部署的,其中雷池默认的配置文件中是有独立的容器网络的,那么 localhost 就不是宿主机本身的网络,因此宿主机的网络可以通过容器的所属网关来表示宿主机的网络。

如下所示,我的网关是 172.22.222.1,那么这个 IP 可访问宿主机的 Nginx

网关

雷池配置站点

添加站点

我这里使用通配符*匹配所有的请求,全部转发到上游 Nginx

注意雷池监听的端口不能为 80!!!

添加站点

宝塔配置站点

这里以部署静态网页项目为例

添加静态网站

需要部署的静态网页的地址是 test.xx.com,那么这里要避开这个域名,因为待会儿需要配置转发域名,所以可以添加前/后缀方式,我这里是 test-o.xx.com

添加静态网站

接下来按照前面提到过的 添加反向代理 的方式继续添加(转发到雷池):

添加反向代理

好了,现在应该能够访问静态网页了:

站点

Q&A

Q:如果我的网站有多个域名怎么办?

A:可以先添加其他的域名,和前面的步骤一样,只需要加入前/后缀,之后再添加一个新的代理,发送域名填写这个带有前/后缀的域名

### 宝塔面板雷池WAF功能介绍 宝塔面板款广泛用于服务器管理的控制面板,它提供了种直观的方式来管理网站、数据库、FTP账户等。雷池WAF(Web Application Firewall)是长亭科技推出的款开源Web应用防火墙,它可以有效防止SQL注入、XSS攻击等常见的Web安全威胁。 当需要在同服务器上同时使用宝塔面板雷池WAF时,通常的做法是将雷池WAF作为反向代理来处理所有进入的HTTP/HTTPS请求,并将这些请求转发给后端由宝塔面板管理的Nginx服务。这样可以确保流量首先经过WAF安全检查,然后再传递到实际的应用程序中[^2]。 ### 配置方法 #### 修改监听端口 为了实现共存部署般会修改宝塔面板中的站点配置,使其监听非标准的80/443端口,例如10080或8080。这可以通过编辑位于`/www/server/panel/vhost/nginx/`目录下的站点配置文件完成。找到对应的站点配置文件,如`0.default.conf`和`phpfpm_status.conf`,然后更改其中的`listen`指令以指定新的端口号[^3]。 #### 设置Nginx转发至雷池 接下来,在Nginx配置中设置反向代理规则,以便将来自客户端的请求转发到运行雷池WAF的服务地址。比如,如果雷池WAF正在本地的个特定端口上运行,则可以在Nginx的站点配置里添加如下类似的配置段落: ```nginx location / { proxy_pass http://localhost:雷池监听端口; } ``` 这里的`雷池监听端口`应该替换为实际用来启动雷池WAF实例所使用的端口号。此外,还需要根据实际情况调整其他相关的proxy_set_header参数以保证正确的主机名和其他头信息被传递给后端服务。 #### 启动并测试雷池WAF 最后步是在服务器上正确安装并启动雷池WAF服务。切准备就绪,通过访问你的域名或者IP地址加上相应的端口号来测试整个流程是否正常工作。记得要对各种类型的攻击尝试进行充分的测试,确保WAF能够按照预期拦截恶意流量而不影响合法用户的访问体验[^1]。 需要注意的是,由于增加了额外的转发层,可能会导致定的性能损耗。因此,在生产环境中实施此类架构之前,建议先评估其对性能的影响,并采取适当的优化措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值