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

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

安装雷池

使用雷池官方提供的一句话安装命令即可:

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

不出意外的话,一路回车就能安装成功。

修改雷池检测引擎的工作模式

社区版雷池的检测引擎默认以 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 端口映射到宿主机即可。

进入雷池的安装目录

cd /data/safeline/

用文本编辑器打开目录里的 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"}

打开雷池的控制台界面,可以看到雷池记录了完整的攻击信息

image.png

最后

本文主要介绍了在 APISIX 3.5.0 之上快速集成雷池 Web 防护能力的使用方式,如果对项目感兴趣,欢迎到 github 献上一颗 star。

雷池:https://github.com/chaitin/SafeLine

apisix:https://github.com/apache/apisix

<think>好的,我需要帮助用户了解如何部署和使用雷池WAF来防护靶场的安全。首先,我得回忆一下雷池WAF的基本信息。雷池WAF是一款开源的Web应用防火墙,主要用于防护常见的Web攻击,比如SQL注入、XSS等。用户提到他们之前看过关于靶场搭建的教程,比如pikachu和DVWA的部署,现在想在此基础上加强安全防护,使用雷池WAF。 接下来,我需要整理部署雷池WAF的步骤。通常,部署WAF需要先准备服务器环境,可能包括安装必要的依赖,比如Docker,因为很多开源项目现在都推荐用容器化部署。然后,获取雷池WAF的安装包或者Docker镜像,进行配置,包括设置监听端口、反向代理到靶场应用,以及调整安全规则。 另外,用户可能对配置防护规则不太熟悉,需要详细说明如何根据靶场的具体需求调整规则,比如针对SQL注入或XSS的防护策略。同时,测试部分也很重要,用户需要验证WAF是否正常工作,是否成功拦截了攻击请求,而不会误拦截合法流量。 还需要考虑引用之前的资料,比如用户提到的引用[1]和[2],但看起来这些引用是关于靶场搭建和CDN配置的,可能与雷池WAF直接关联不大,但可能需要提到在部署WAF前确保靶场环境已经正确搭建,或者结合CDN来隐藏真实IP,提升整体安全性。 用户的问题还可能涉及雷池WAF的高级配置,比如日志监控、自定义规则等,需要简要提及这些方面,并提供相关问题的建议,比如性能优化、规则调优等。 最后,生成相关问题时要围绕部署步骤、配置优化、故障排除等方面,帮助用户进一步深入学习。</think>### 雷池 WAF 部署与防护靶场安全配置教程 #### 1. **环境准备** - **服务器要求**: 推荐使用 Linux 系统(如 Ubuntu/CentOS),配置至少 2GB 内存、2 核 CPU。 - **依赖安装**: 安装 Docker 环境(雷池 WAF 通常以容器化部署): ```bash curl -fsSL https://get.docker.com | bash -s docker ``` - **靶场环境**: 确保已部署靶场(如 DVWA/pikachu)[^1],并记录其访问端口(例如 `8080`)。 #### 2. **雷池 WAF 部署** - **拉取镜像**: ```bash docker pull chaitin/safeline-mgt ``` - **启动容器**: ```bash docker run --name safeline-mgt -d \ -v /opt/safeline-data:/data \ -p 9443:9443 \ chaitin/safeline-mgt ``` 访问 `https://服务器IP:9443` 完成初始化配置(设置管理员账号)。 #### 3. **反向代理配置** - **绑定靶场服务**: 在雷池控制台添加“防护站点”,填写靶场域名或 IP,并设置反向代理到靶场端口(例如 `http://localhost:8080`)。 - **SSL 证书(可选)**: 若靶场使用 HTTPS,需上传证书或使用 Let's Encrypt 自动申请。 #### 4. **安全规则调优** - **基础防护**: 默认启用 SQL 注入、XSS、路径遍历等规则。 - **自定义规则**: - 针对靶场特点,添加特定过滤条件(如拦截 `DVWA` 的敏感路径)。 - 调整敏感度阈值,减少误报(例如放宽对 `pikachu` 靶场测试路径的限制)。 #### 5. **验证与测试** - **攻击拦截测试**: 使用工具(如 Burp Suite)发送测试 payload(例如 `' OR 1=1--`),观察雷池拦截日志。 - **误报检查**: 正常访问靶场功能,确认无错误拦截。 #### 6. **高级配置(可选)** - **CDN 集成**: 结合 CDN 隐藏服务器真实 IP[^2],提升抗 DDoS 能力。 - **日志分析**: 通过雷池的日志模块分析攻击趋势,优化规则。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值