在宝塔面板 部署 雷池WAF(避坑版)
标签搜索
侧边栏壁纸
  • 累计撰写 16 篇文章
  • 累计收到 2 条评论

在宝塔面板 部署 雷池WAF(避坑版)

艾霂Mr.
2024-12-25 / 0 评论 / 26 阅读 / 正在检测是否收录...

思维图
互联网上的攻击和扫描流量非常多,为了保证网站安全,为网站新增WAF防护是必要的!之前有了解过 宝塔云WAF ,但需要独立的一台服务器来部署,架构不够灵活,对于个人用户来说成本太高了。
得知雷池WAF,基于 Nginx 开发,以反向代理方式接入,部署架构灵活,可以与 WEB 服务部署在同一台服务器(官方不推荐),是一款广受好评的 社区WAF 项目!不过在网站管理上,个人用户大多都是通过宝塔面板进行管理,宝塔面板的Nginx默认监听端口为 80443 ,这就导致共存部署时雷池WAF默认无法监听 80443 端口,那怎么办呢?
本文将提供在宝塔面板怎样部署雷池WAF以及详细过程,同时帮大家避坑安装雷池WAF过程有可能踩的雷。

安装宝塔和配置环境

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

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


在宝塔面板,网站中找到对应的站点,单击右侧的设置!
设置
切换到配置文件,修改监听端口为其他非占用端口,这里我把 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终端执行安装。
自动安装命令(推荐)
使用 root 权限执行以下命令,跟随命令提示输入相关信息,3分钟即可完成自动安装。

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

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


然后会提示你绑定一个TOTP验证软件,这里推荐使用腾讯身份验证器绑定(我没有提示绑定软件🤷‍♂️这里还是要讲述一下)


雷池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-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

2

评论 (0)

  取消