马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
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 堆栈,运行以下下令来安装:
- git clone https://github.com/apache/apisix-docker
- cd apisix-docker/compose
- echo 'APISIX_DOCKER_TAG=3.5.0-debian' >> .env
- docker compose -f docker-compose-release.yaml up -d
复制代码
- 业务所在:http://127.0.0.1:9080/
- 管理所在:http://127.0.0.1:9180/
安装雷池
利用雷池官方提供的一句话安装下令即可:
- 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 调用。
进入雷池检测引擎的设置目次:
- cd /data/safeline/
- resources/detector/
复制代码 用文本编辑器打开目次里的 detector.yml 文件:
- # bind_addr: 0.0.0.0
- # listen_port: 8000
复制代码 我们须要将 bind 方式从 unix socket 改为 tcp,修改为以下内容即可:
- bind_addr: 0.0.0.0
- listen_port: 8000
复制代码 如许我们就把雷池引擎的服务监听到了 8000 端口,如今只须要把容器内的 8000 端口映射到宿主机即可。
进入雷池的安装目次
用文本编辑器打开目次里的 compose.yaml 文件,为 detector 容器增长 ports 字段,袒露其 8000
端口,参考如下:
- ......
- detector:
- ......
- ports:
- - 8000:8000
- ......
复制代码 OK,改好了,在雷池安装目次下实行以下下令重启雷池即可见效。
- docker compose down
- docker compose up -d
复制代码 修改雷池的默认端口
雷池和 apisix 默认都监听 9443 端口,如果在同一台呆板上安装,须要修改雷池的默认端口。
在雷池的安装目次下,有一个名为 .env 的隐蔽文件,此中的 MGT_PORT 字段,修改这里后利用上面的方法再重启雷池即可见效。
在 apisix 里绑定雷池
调用 apisix 的 api,设置雷池检测引擎的所在,供 apisix 调用,参考以下哀求:
💡 192.168.99.11 是我当地雷池的所在,更换为你的 IP 即可
- curl http://127.0.0.1:9180/apisix/admin/plugin_metadata/chaitin-waf -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
- {
- "nodes":[
- {
- "host": "192.168.99.11",
- "port": 8000
- }
- ]
- }'
复制代码 调用 apisix 的 api,设置一条路由,参考以下哀求:
💡 192.168.99.12:80 是上游服务器的所在,apisix 会将哀求反向署理到这个所在。
- curl http://127.0.0.1:9180/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
- {
- "uri": "/*",
- "plugins": {
- "chaitin-waf": {}
- },
- "upstream": {
- "type": "roundrobin",
- "nodes": {
- "192.168.99.12:80": 1
- }
- }
- }'
复制代码 测试防护效果
颠末以上步调,雷池 + apisix 根本设置完成,可以试试效果了,哀求 9080 端口,可以看到 apisix 乐成署理了上游服务器的页面:
- curl 'http://127.0.0.1:9080/'
复制代码 在哀求中加入一个 a 参数,模仿 SQL 注入攻击:
- curl 'http://127.0.0.1:9080/'
- -d 'a=1 and 1=1'
复制代码 返回了 HTTP 403 错误,从错误消息中可以看出,雷池乐成反抗了此次攻击。
- {"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
|