艾霂's Blog - 雷池WAF 2024-11-17T08:50:00+08:00 Typecho https://ailmu.cn/feed/atom/tag/%E9%9B%B7%E6%B1%A0WAF/ <![CDATA[在宝塔面板 部署 雷池WAF(避坑版)]]> https://ailmu.cn/gossip/13.html 2024-11-17T08:50:00+08:00 2024-11-17T08:50:00+08:00 艾霂Mr. https://www.ailmu.cn 思维图
互联网上的攻击和扫描流量非常多,为了保证网站安全,为网站新增 WAF 防护是必要的!之前有了解过 宝塔云WAF ,但需要独立的一台服务器来部署,架构不够灵活,对于个人用户来说成本太高了。
得知 雷池WAF ,基于 Nginx 开发,以反向代理方式接入,部署架构灵活,可以与 WEB 服务部署在同一台服务器 (官方不推荐) ,是一款广受好评的 社区WAF 项目!不过在网站管理上,个人用户大多都是通过宝塔面板进行管理,宝塔面板的 Nginx 默认监听端口为 80443 ,这就导致共存部署时 雷池WAF 默认无法监听 80443 端口,那怎么办呢?
本文将提供在 宝塔面板 怎样部署 雷池WAF 以及详细过程,同时帮大家避坑安装 雷池WAF 过程有可能踩的雷。

安装宝塔和配置环境

怎样安装宝塔我这里就不多赘述了,自行去 宝塔官网 安装,根据自己网站情况配置环境,(啰嗦一句安装好宝塔后不用着急安装Docker,后续安装雷池WAF时会帮你安装。)
Docker

修改Nginx端口避免80和443端口被占用

{message type="info" content="先随便创建个站点,然后启用一下ssl证书,再开启个强制HTTPS(避坑,下文会用到)"/}
在宝塔面板,网站中找到对应的站点,单击右侧的设置!
设置
切换到配置文件,修改监听端口为其他非占用端口,这里我把 80 端口改为 88 端口, 443 端口改为 444 端口(根据个人修改)单击保存即可。图中的 if 判断后面的端口是强制 HTTPS 的判断端口,(一定要改,不然反复重定向)如果你没有开启强制 HTTPS 就没有这个 if 判断代码,就不需要改。
if
进入 /www/server/panel/vhost/nginx/ 目录,分别编辑 0.default.confphpfpm_status.conf 文件,将默认监听端口修改为其他非占用端口(和上面配置相似分别把80端口和443端口进行修改,必须把这两个文件所有上述端口进行修改),最后保存退出。
0.default.conf
phpfpm_status.conf
配置完成后重启 Nginx ,如果可以正常重启则说明配置正确。后期新增的网站域名一定要写 a.com:xxxx 写你的非标端口, HTTPS 端口也要改,否则默认使用 80 端口会出现各种意想不到的 BUG !(记住要在宝塔防火墙和服务器防火墙添加端口规则,放行其刚才修改的端口)

安装雷池WAF

前往 雷池WAF官网 复制对应系统脚本在SSH终端执行安装。
在宝塔面板左侧菜单选择终端,执行已复制的命令进行安装 雷池WAF ,提示安装 Docker 时确定即可。雷池WAF安装目录选择默认的(如果自定义安装路径,更新/卸载是个大麻烦)
雷池安装成功以后,你可以打开浏览器访问 http://你的ip:9443 来使用雷池控制台。

{message type="warning" content="注意对9443的端口放行"/}
然后会提示你绑定一个TOTP验证软件,这里推荐使用腾讯身份验证器绑定(我没有提示绑定软件🤷‍♂️这里还是要讲述一下)
{callout color="#f0ad4e"}
请注意:这里有个坑,雷池的按钮有些在手机端单击无效,需要长按,长按即可解决,腾讯身份验证器TOTP绑定需要扫码,你可以用俩设备或者截图后用QR扫码提取一下验证代码验证,这里不再赘述。
{/callout}
雷池WAF添加站点网上有很多教程,这里我就不赘述了!这里主要说一下这个上游怎么请求,配置错误会出现502错误。
选择 雷池WAF宝塔 通讯用 HTTP 协议就写 HTTP 协议你写的非标端口,我的示例是 88端口 ,一定要注意, HTTP 协议的上游写 http://127.0.0.1:88 注意协议和端口。
88端口
选择 雷池WAF宝塔 通讯用 HTTPS 协议就写 HTTPS 协议你写的非标端口,我的示例是 444 端口,一定要注意, HTTPS 协议的上游写 https://127.0.0.1:444 注意协议和端口。
444端口
如果你都按照上面的教程操作,是不会出现端口被占用情况的,请自行排查问题关键。
目前发现如果已经部署了站点,雷池WAF可能会出现莫名其妙的占用现象,目前暂时没发现有解决方案,只能重装雷池WAF安装防护、升级等... 雷池WAF 官网均有教程,请自行查阅,这里不再过多赘述。

解决宝塔无法获取访客真实IP问题

在雷池防护站点,全局配置中把 源 IP 获取方式更换为从 源 IP 获取方式从 HTTP-Header 中获取,并把 HTTP-Header 设置为 X-Forwarded-For 并开启 {x} 清空并重写 X-Forwarded-For
Nginx 配置中的 HTTP 代码块增加一下代码
Nginx配置

set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
real_ip_recursive on;   #使用CDN时考虑,不然会无法获取访客IP只能获取CDN的IP

{callout color="#f0ad4e"}
本站已接入 长亭雷池WAF 请勿恶意 DDoS 本站!
{/callout}

]]>