张春 发表于 2024-8-29 15:48:03

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

媒介

为了保证网站安全,可以在网站前增加一个 WAF(Web 应用防火墙) 来进行防护。假如使用宝塔云 WAF 的话就需要多机部署并且还需要额外开通云 WAF 功能,这些对于个人来说成本太高了!
免费的雷池社区版不香吗?但很多个人用户又是通过宝塔面板进行管理的,这就导致雷池和主机 Nginx 有冲突问题,那怎么办呢?本文将先容如安在单机部署下雷池和 Nginx 共存。
雷池先容

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

环境要求操作体系LinuxCPU 指令架构x86_64(支持 ssse3 指令集)Docker20.10.14 版本以上Docker Compose2.0.0 版本以上最低资源需求1 核 CPU / 1 GB 内存 / 5 GB 磁盘 这里列出来的是雷池所需要的环境,宝塔支持的环境和操作体系可以在宝塔官网查询
软件部署

部署宝塔

对于宝塔安装本文不进行赘述,官网上都有具体的阐明了
安装 Docker

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


[*]Nginx
[*]Docker
安装完成之后 网站 和 Docker 可以看到宝塔这两个可以正常工作
https://i-blog.csdnimg.cn/direct/a408aa02b5274942bad0a1998c8053d8.webp#pic_center
https://i-blog.csdnimg.cn/direct/bba052b08a4d42fd8e041bc97037d22a.webp#pic_center
部署雷池

bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
https://i-blog.csdnimg.cn/direct/1a72b8b7bb55407cb8ac8cd6460d8c04.webp#pic_center
   假如出现了这个提示,这里不发起输入 “Y”,脚本有可能会造成其他的问题
https://i-blog.csdnimg.cn/direct/d279c46d64d944049e62275adaa212c7.webp#pic_center
我这里使用在线脚本进行安装,但是由于我的环境中的 Docker 是根据操作体系二进制编译的,并没有 docker compose 下令,但是 docker-compose 是正常的。
因此可以通过修改雷池脚本中的docker compose 下令,先下载雷池的脚本:
curl -o sl.sh https://waf-ce.chaitin.cn/release/latest/setup.sh
然后可以在宝塔中修改脚本文件
https://i-blog.csdnimg.cn/direct/343972d3632b47c7aa74ecbb3916d86e.webp#pic_center
修改完成之后可以通过以下下令执行雷池部署脚本
bash sl.sh
https://i-blog.csdnimg.cn/direct/5ea9386ff8e94069982dbafe8543341e.webp#pic_center
出现这个提示代表雷池安装成功
https://i-blog.csdnimg.cn/direct/aef7c84fabb34b4498bb63dbda575ccf.webp#pic_center
域名访问

为了通过域名来访问雷池,需要在宝塔中对雷池添加一个反向代理
代理的目的是 https://localhost:9443
https://i-blog.csdnimg.cn/direct/696781698ea44dbabcebfa08f6c281d4.webp#pic_center
   特殊注意这里要转发目的的协议必须是 https,否则打开雷池页面将出现无穷循环跳转
通过浏览器打开宝塔配置的域名,成功看到了雷池页面!
https://i-blog.csdnimg.cn/direct/25a97552e1054ccc93faeeab38f6583a.webp#pic_center
站点部署

   在单机上部署你的网页,并且联合雷池进行防护
固然雷池实际上已经内置了 Tengine,可以直接接受 80 端口,但是由于单机上已经安装了 Nginx,它自己就监听了该端口,那么雷池无法继续监听这个端口。
固然我有查到可以通过修改(宝塔安装的) Nginx 目次下 /www/server/panel/vhost/nginx/ 配置文件(0.default.conf和phpfpm_status.conf)中 Nginx 监听端口改为非 80 端口。
但是实际上可能还需要修改全部的已有的网站的配置文件。假如你使用宝塔对网站进行更改配置之类的操作,宝塔还会重新覆盖你的变更导致恢复成监听 80 端口,这又是一个隐蔽的问题。
因此,我采用了以下方法(经过了一层转发,性能可能有所下降):
   以客户端访问 test.xx.com 为例:
   查看雷池容器网络

由于雷池是通过 Docker 部署的,其中雷池默认的配置文件中是有独立的容器网络的,那么 localhost 就不是宿主机自己的网络,因此宿主机的网络可以通过容器的所属网关来表现宿主机的网络。
   如下所示,我的网关是 172.22.222.1,那么这个 IP 可访问宿主机的 Nginx
https://i-blog.csdnimg.cn/direct/a8d678ac8cee4d17bb02cdca0fdcc4d7.webp#pic_center
雷池配置站点

https://i-blog.csdnimg.cn/direct/f53550852dd949b6ae43daf764908b60.webp#pic_center
   我这里使用通配符*匹配全部的哀求,全部转发到上游 Nginx
注意雷池监听的端口不能为 80!!!
https://i-blog.csdnimg.cn/direct/d3a05594970d4a46b4a3c4074292a382.webp#pic_center
宝塔配置站点

这里以部署静态网页项目为例
https://i-blog.csdnimg.cn/direct/403e6a593d134fa69882cd8e31307043.webp#pic_center
需要部署的静态网页的地址是 test.xx.com,那么这里要避开这个域名,由于待会儿需要配置转发域名,所以可以添加前/后缀方式,我这里是 test-o.xx.com
https://i-blog.csdnimg.cn/direct/30e12b7e8f204d938a67a4dc1d31aa8e.webp#pic_center
接下来按照前面提到过的 添加反向代理 的方式继续添加(转发到雷池):
https://i-blog.csdnimg.cn/direct/1c50f92206ba4d3e93b7e776d32023e2.webp#pic_center
好了,现在应该可以或许访问静态网页了:
https://i-blog.csdnimg.cn/direct/89ef90f618904c29bbb2d07d044581b5.webp#pic_center
Q&A

Q:假如我的网站有多个域名怎么办?
A:可以先添加其他的域名,和前面的步骤一样,只需要参加前/后缀,之后再添加一个新的代理,发送域名填写这个带有前/后缀的域名

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 一山可容二虎!宝塔面板+雷池 WAF 部署实战