CrowdSec Lua Plugin 是一款与 Ingress Nginx 控制器配合使用的 Lua 插件(bouncer),用于集成 CrowdSec 安全防护系统。其核心用途是将 CrowdSec 生成的安全决策(如 IP 封禁、限流等)应用于 Ingress Nginx 层面,实现对入站流量的实时过滤和防护,有效阻止***请求访问后端服务。
多模式运行:支持两种工作模式
stream 模式:定期从 CrowdSec 本地 API(LAPI)拉取安全决策并缓存(默认模式)live 模式:实时查询 LAPI 验证每个请求的决策高效缓存机制:通过 lua_shared_dict 实现跨 Worker 进程的决策缓存,减少对 LAPI 的重复请求,提升性能
灵活的决策配置:可指定需要处理的决策类型(如 ban、captcha 等),支持自定义缓存过期时间、缓存大小和请求超时
配置方式多样:支持通过环境变量动态配置,或挂载自定义配置文件覆盖默认设置
插件支持两种配置方式,优先级为:挂载自定义配置文件 > 环境变量。
/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf(适用于复杂配置)| 环境变量 | 描述 | 默认值 | 示例 |
|---|---|---|---|
API_URL | CrowdSec 本地 API(LAPI)的访问地址 | - | -e API_URL="[***]" |
API_KEY | 用于访问 LAPI 的认证密钥(需与 CrowdSec 服务端配置一致) | - | -e API_KEY="your_lapi_secret_key" |
CACHE_EXPIRATION | 仅 live 模式生效:决策缓存过期时间(秒) | 1 | -e CACHE_EXPIRATION="5" |
CACHE_SIZE | 缓存中可存储的最大决策数量 | 1000 | -e CACHE_SIZE="2000" |
BOUNCING_ON_TYPE | 需要处理的决策类型(如 ban、captcha 等) | ban | -e BOUNCING_ON_TYPE="ban,captcha" |
REQUEST_TIMEOUT | 向 LAPI 发送请求的超时时间(秒) | 0.2 | -e REQUEST_TIMEOUT="0.5" |
UPDATE_FREQUENCY | 仅 stream 模式生效:从 LAPI 拉取决策的频率(秒) | 10 | -e UPDATE_FREQUENCY="30" |
MODE | 工作模式:stream(定期拉取)或 live(实时查询) | stream | -e MODE="live" |
插件使用 Nginx 的 lua_shared_dict 共享内存区域存储决策缓存,默认大小为 50m。如需调整缓存大小,需通过 Ingress Nginx 的 ConfigMap 配置(参考 Ingress Nginx 文档),示例配置:
yaml# ingress-nginx ConfigMap 片段 apiVersion: v1 kind: ConfigMap metadata: name: ingress-nginx-controller namespace: ingress-nginx data: lua-shared-dicts: "crowdsec_cache 100m" # 调整缓存大小为 100m
以下为简化的 Docker 运行示例(实际场景中通常与 Ingress Nginx 容器集成):
bashdocker run -d \ --name crowdsec-lua-plugin \ -e API_URL="[***]" \ -e API_KEY="your_lapi_secret_key" \ -e MODE="stream" \ -e UPDATE_FREQUENCY="10" \ -e CACHE_SIZE="2000" \ -v /path/to/custom/config:/etc/crowdsec/bouncers/crowdsec-openresty-bouncer.conf \ # 可选:挂载自定义配置文件 crowdsecurity/crowdsec-lua-plugin:latest
注意:实际部署时需确保插件与 Ingress Nginx 控制器在同一网络,且 LAPI 地址可访问。
在 Kubernetes 环境中,通常通过 Helm 安装 Ingress Nginx 时集成该插件,关键配置项包括:
--set controller.extraEnvs 注入环境变量--set controller.config.lua-shared-dicts 调整缓存大小--set controller.extraVolumes 和 --set controller.extraVolumeMounts 挂载自定义配置文件| 卷路径 | 用途 |
|---|---|
/etc/crowdsec/ | 存放 CrowdSec 相关配置文件(如自定义 bouncer 配置) |
/usr/local/openresty/lualib/plugins/crowdsec(CrowdSec Lua 库文件)/etc/nginx/conf.d(加载插件和配置的 Nginx 配置文件)请阅读 贡献文档 了解代码规范和 PR 提交流程。
本项目基于 MIT 许可证开源,详见 LICENSE 文件。
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429