立即注册  找回密码
 立即注册
CeraNetworksBGVM服务器主机交流会员请立即修改密码Sharktech防护
查看: 34|回复: 4

1Panel上的长亭雷池WAF搭配openresty的用法

[复制链接]

1Panel上的长亭雷池WAF搭配openresty的用法

[复制链接]

19

主题

70

回帖

267

积分

中级会员

积分
267
Gobala

19

主题

70

回帖

267

积分

中级会员

积分
267
2023-8-12 20:57:25 | 显示全部楼层 |阅读模式
本帖最后由 Gobala 于 2023-8-12 21:02 编辑

原文:https://www.boilog.com/archives/339










前言

最近把面板换成了国内公司出的但是开源的`1panel`,跑容器也是挺符合心里需求的,

主界面也挺干净整洁。看到第三方应用库有个免费`WAF`,然后又上了开源了但没完全开源的`长亭雷池WAF`。

记录一下在同一台机子上`长亭雷池WAF`搭配默认`openresty`的用法。

1. 调整openresty容器网络

需要将`openresty`修改为桥接网络模式。且修改`https`外部映射为其他端口如`1443`。

注意:改桥接端口之后,反向代理的思路就和使用`Nginx Proxy Manager`一样了,

- 不能写`127.0.0.1:端口`来反向代理了。

点击应用参数修改`docker-compose.yml`,重建`openresty`。
[ol]

  • version: '3'
  • services:
  •   openresty:
  •     image: openresty/openresty:latest #这里镜像注意对应自己的架构平台
  •     container_name: ${CONTAINER_NAME}
  •     restart: always
  •     networks:
  •       - 1panel-network
  •     ports:
  •       - "${PANEL_APP_PORT_HTTP}:80"
  •       - "1443:1443"
  •     volumes:
  •       - ./conf/nginx.conf:/usr/local/openresty/nginx/conf/nginx.conf
  •       - ./conf/fastcgi_params:/usr/local/openresty/nginx/conf/fastcgi_params
  •       - ./conf/fastcgi-php.conf:/usr/local/openresty/nginx/conf/fastcgi-php.conf
  •       - ./log:/var/log/nginx
  •       - ./conf/conf.d:/usr/local/openresty/nginx/conf/conf.d/
  •       - ./www:/www
  •       - ./root:/usr/share/nginx/html
  •       - /etc/localtime:/etc/localtime
  •     labels:  
  •       createdBy: "Apps"

  • networks:  
  •   1panel-network:  
  •     external: true
  • [/ol]复制代码





    2. 修改站点监听端口

    站点正常配置,开启`https`啥的。

    进入站点文件配置,修改`https`监听端口为`1443`,与外部端口一致。

    可以按`Ctrl F`批量替换。其他配置可以不用动。





    3. 雷池WAF添加站点
    3.1 添加第三方库

    然后应用商店安装`雷池WAF`

    1Panel 应用商店的非官方应用适配库:https://github.com/okxlin/appstore

    以默认`1Panel`安装在`/opt/`路径下为例子,如果不是按需修改以下。

    3.1.1 国内网络

    `1panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
    [ol]

  • git clone -b localApps https://ghproxy.com/https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps

  • cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/

  • rm -r /opt/1panel/resource/apps/local/appstore-localApps
  • [/ol]复制代码

    然后应用商店刷新本地应用即可。

    3.1.2 国际互联网络
    `1panel`计划任务类型`Shell 脚本`的计划任务框里,添加并执行以下命令,或者终端运行以下命令,
    [ol]

  • git clone -b localApps https://github.com/okxlin/appstore /opt/1panel/resource/apps/local/appstore-localApps

  • cp -rf /opt/1panel/resource/apps/local/appstore-localApps/apps/* /opt/1panel/resource/apps/local/

  • rm -r /opt/1panel/resource/apps/local/appstore-localApps
  • [/ol]复制代码

    然后应用商店刷新本地应用即可。

    3.2 雷池WAF添加站点

    - 一种是直接添加普通容器端口做上游,`雷池WAF`监听`443`端口,上传证书即可。

    - 另一种就是搭配`openresty`。

    具体方式是如下:

    - 添加上游服务为`https://127.0.0.1:1443`
    - 域名填写与`openresty`站点一致
    - `雷池WAF`监听`443`端口
    - 正常上传证书

    这样子就正常添加了,正常网站配置还是由`openresty` 提供,`雷池WAF`做个下游。





    4. 关于SSL证书持续

    `雷池WAF`社区版本这边还没证书夹,每添加一个站点就需要上传证书。

    然后命名也是随机产生。想要使访问站点的`SSL`证书正常,还是得不断将签发的证书将旧证书文件替换掉。

    这里用`acme.sh`签发的来替换。

    具体的对应站点`SSL`证书对应可以查看配置获取。
    具体文件路径在类似如下文件夹里

    [ol]

  • /opt/1panel/apps/local/safeline/safeline/data/resources/nginx/sites-enabled
  • [/ol]复制代码





    打开查看配置文件获取具体对应证书的名字。
    [ol]

  • # 配置文件示例
  • server {
  •     listen 0.0.0.0:443 ssl;
  •     server_name www.example.com;
  •     ssl_certificate /etc/nginx/certs/agicaikcgbac__.example.com-fullchain.cer;
  •     ssl_certificate_key /etc/nginx/certs/shcvogagbaovga__.example.com.key;
  •     location = /forbidden_page {
  •         internal;
  •         root /etc/nginx/forbidden_pages;
  •         try_files /default_forbidden_page.html =403;
  •     }
  • [/ol]复制代码

    如上所示则可以获得证书文件文件名如下:
    - agicaikcgbac__.example.com-fullchain.cer
    - shcvogagbaovga__.example.com.key

    则替换`雷池WAF`证书的命令可以写为

    [ol]

  • # safeline-www.example.com
  • cp /root/.acme.sh/*.example.com_ecc/fullchain.cer /opt/1panel/apps/local/safeline/safeline/data/resources/nginx/certs/agicaikcgbac__.example.com-fullchain.cer
  • cp /root/.acme.sh/*.example.com_ecc/*.example.com.key /opt/1panel/apps/local/safeline/safeline/data/resources/nginx/certs/shcvogagbaovga__.example.com.key
  • [/ol]复制代码

    也可以顺手替换一下`openresty`创建的站点的证书

    [ol]

  • # openresty-www.example.com
  • cp /root/.acme.sh/*.example.com_ecc/fullchain.cer /opt/1panel/apps/openresty/openresty/www/sites/www.example.com/ssl/fullchain.pem
  • cp /root/.acme.sh/*.example.com_ecc/*.example.com.key /opt/1panel/apps/openresty/openresty/www/sites/www.example.com/ssl/privkey.pem
  • [/ol]复制代码
    然后将这两个替换证书的命令添加到计划任务列表就行了。

  • 回复

    使用道具 举报

    33

    主题

    145

    回帖

    635

    积分

    高级会员

    积分
    635
    qingzhuzi

    33

    主题

    145

    回帖

    635

    积分

    高级会员

    积分
    635
    2023-8-12 21:10:31 | 显示全部楼层
    一个防火墙整的比手撸nginx防火墙更复杂,也是没谁了
    回复

    使用道具 举报

    22

    主题

    1307

    回帖

    3470

    积分

    论坛元老

    积分
    3470
    hacn

    22

    主题

    1307

    回帖

    3470

    积分

    论坛元老

    积分
    3470
    2023-8-12 21:12:15 | 显示全部楼层

    qingzhuzi 发表于 2023-8-12 21:10

    一个防火墙整的比手撸nginx防火墙更复杂,也是没谁了


    确实 这么麻烦我还用个球1panel
    回复

    使用道具 举报

    19

    主题

    70

    回帖

    267

    积分

    中级会员

    积分
    267
    Gobala 楼主

    19

    主题

    70

    回帖

    267

    积分

    中级会员

    积分
    267
    2023-8-12 21:10:00 | 显示全部楼层

    qingzhuzi 发表于 2023-8-12 21:10

    一个防火墙整的比手撸nginx防火墙更复杂,也是没谁了

    整了个玩玩,反正也是吃灰。Openresty本身是可以调用lua来防护的。

    回复

    使用道具 举报

    19

    主题

    70

    回帖

    267

    积分

    中级会员

    积分
    267
    Gobala 楼主

    19

    主题

    70

    回帖

    267

    积分

    中级会员

    积分
    267
    2023-8-12 21:19:22 | 显示全部楼层

    hacn 发表于 2023-8-12 21:12

    确实 这么麻烦我还用个球1panel

    也还好,其实也就改openresty,不然它监听443端口产生冲突。其他都是使用技巧
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|小黑屋|HS2V主机综合交流论坛

    GMT+8, 2024-12-23 19:09 , Processed in 0.019335 second(s), 3 queries , Gzip On, Redis On.

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

    快速回复 返回顶部 返回列表