APISIX 联动雷池 WAF 实现 Web 安全防护

[复制链接]
发表于 2026-1-14 16:23:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Apache APISIX 是一个动态、及时、高性能的云原生 API 网关,提供了负载平衡、动态上游、灰度发布、服务熔断、身份认证、可观测可观测性等丰富的流量管理功能。
雷池是由长亭科技开发的 WAF 体系,提供对 HTTP 哀求的安全哀求,提供完备的 API 管理和防护本领。
   💡 WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 体系有着更好的防护效果,使其免于受到黑客的攻击。
  克日,长亭科技与 APISIX 告竣战略互助,自 APISIX 3.5.0 之后的版本将内置长亭雷池 WAF 插件,在启用 chaitin-waf 插件后,流量将被转发给长亭 WAF 服务,用以检测和防止各种 Web 应用步伐攻击,以掩护应用步伐和用户数据的安全。
开源堆栈

雷池:https://github.com/chaitin/SafeLine
apisix:https://github.com/apache/apisix
利用方式

安装 APISIX

   💡 注意,要利用 APISIX 3.5.0 及以上版本的 APISIX
  本文利用 apisix 的 docker 版原来做演示,克隆 apisix-docker 堆栈,运行以下下令来安装:
  1. git clone https://github.com/apache/apisix-docker
  2. cd apisix-docker/compose
  3. echo 'APISIX_DOCKER_TAG=3.5.0-debian' >> .env
  4. docker compose -f docker-compose-release.yaml up -d
复制代码


  • 业务所在:http://127.0.0.1:9080/
  • 管理所在:http://127.0.0.1:9180/
安装雷池

利用雷池官方提供的一句话安装下令即可:
  1. bash -c "$(curl -fsSLk https://waf-ce.chaitin.cn/release/latest/setup.sh)"
复制代码
不出不测的话,一起回车就能安装乐成。


  • 安装目次:/data/safeline/
  • 控制台:https://127.0.0.1:9443/
修改雷池检测引擎的工作模式

社区版雷池的检测引擎默认以 unix socket 的方式提供服务,我们须要把他修改为 tcp 方式,供 APISIX 调用。
进入雷池检测引擎的设置目次:
  1. cd /data/safeline/
  2. resources/detector/
复制代码
用文本编辑器打开目次里的 detector.yml 文件:
  1. # bind_addr: 0.0.0.0
  2. # listen_port: 8000
复制代码
我们须要将 bind 方式从 unix socket 改为 tcp,修改为以下内容即可:
  1. bind_addr: 0.0.0.0
  2. listen_port: 8000
复制代码
如许我们就把雷池引擎的服务监听到了 8000 端口,如今只须要把容器内的 8000 端口映射到宿主机即可。
进入雷池的安装目次
  1. cd /data/safeline/
复制代码
用文本编辑器打开目次里的 compose.yaml 文件,为 detector 容器增长 ports 字段,袒露其 8000
端口,参考如下:
  1. ......
  2. detector:
  3.     ......
  4.     ports:
  5.     - 8000:8000
  6. ......
复制代码
OK,改好了,在雷池安装目次下实行以下下令重启雷池即可见效。
  1. docker compose down
  2. docker compose up -d
复制代码
修改雷池的默认端口

雷池和 apisix 默认都监听 9443 端口,如果在同一台呆板上安装,须要修改雷池的默认端口。
在雷池的安装目次下,有一个名为 .env 的隐蔽文件,此中的 MGT_PORT 字段,修改这里后利用上面的方法再重启雷池即可见效。
在 apisix 里绑定雷池

调用 apisix 的 api,设置雷池检测引擎的所在,供 apisix 调用,参考以下哀求:
   💡 192.168.99.11 是我当地雷池的所在,更换为你的 IP 即可
  1. curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3.   "nodes":[
  4.      {
  5.        "host": "192.168.99.11",
  6.        "port": 8000
  7.      }
  8.   ]
  9. }'
复制代码
调用 apisix 的 api,设置一条路由,参考以下哀求:
   💡 192.168.99.12:80 是上游服务器的所在,apisix 会将哀求反向署理到这个所在。
  1. curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
  2. {
  3.    "uri": "/*",
  4.    "plugins": {
  5.        "chaitin-waf": {}
  6.     },
  7.    "upstream": {
  8.        "type": "roundrobin",
  9.        "nodes": {
  10.            "192.168.99.12:80": 1
  11.        }
  12.    }
  13. }'
复制代码
测试防护效果

颠末以上步调,雷池 + apisix 根本设置完成,可以试试效果了,哀求 9080 端口,可以看到 apisix 乐成署理了上游服务器的页面:
  1. curl 'http://127.0.0.1:9080/'
复制代码
在哀求中加入一个 a 参数,模仿 SQL 注入攻击:
  1. curl 'http://127.0.0.1:9080/'
  2. -d 'a=1 and 1=1'
复制代码
返回了 HTTP 403 错误,从错误消息中可以看出,雷池乐成反抗了此次攻击。
  1. {"code": 403, "success":false, "message": "blocked by Chaitin SafeLine Web Application Firewall", "event_id": "18e0f220f7a94127acb21ad3c1b4ac47"}
复制代码
打开雷池的控制台界面,可以看到雷池记录了完备的攻击信息

末了

本文紧张先容了在 APISIX 3.5.0 之上快速集成雷池 Web 防护本领的利用方式,如果对项目感爱好,欢迎到 github 献上一颗 star。
雷池:https://github.com/chaitin/SafeLine
apisix:https://github.com/apache/apisix
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表