crowdsecurity/crowdsecCrowdsec是一款开源、轻量级的代理工具,用于检测和响应不良行为。它还能自动受益于全球社区范围的IP信誉数据库。
以下所有镜像均在Docker Hub上提供,支持386、amd64、arm/v6、arm/v7、arm64架构。
crowdsecurity/crowdsec:{version}推荐用于生产环境的最新稳定版本。也可在GitHub(ghcr.io)获取。
crowdsecurity/crowdsec:dev用于开发和测试,基于master分支构建。
自v1.4.2起:
crowdsecurity/crowdsec:slim体积减少60%,不包含通知器插件和GeoIP数据库。如果需要决策中的这些详细信息,可在容器内运行cscli hub upgrade在运行时下载GeoIP数据库。
crowdsecurity/crowdsec:{version}-debiancrowdsecurity/crowdsec:latest-debianDebian版本包含对systemd和journalctl的支持。
您可以使用Dockerfile和Dockerfile-debian构建自定义镜像。
例如,如果需要不带插件通知器的Debian版本:
console$ docker build -f Dockerfile.debian --target slim .
支持的目标值:full、geoip、plugins、slim。
注意:对于版本<1.5.0的Crowdsec,语法为:
console$ docker build -f Dockerfile.debian --build-arg=BUILD_ENV=slim .
自CrowdSec 1.7.0起,/var/lib/crowdsec/data/必须挂载为卷。如果未挂载此目录,容器将无法启动。
要使用journalctl作为日志流,无论是否使用DSN环境变量,都需要将主机的journal日志挂载到容器:
-v /var/log/journal:/run/log/journal
集合是一个很好的起点:[***]
在hub中查找集合、场景、解析器和后处理规则:[***]
crowdsecurity/linux)/etc/crowdsec/acquis.d/目录中的文件将日志映射到提供的解析器。更多信息:[***]
该目录可能包含例如:
ssh.yaml:
yamlfilenames: - /logs/auth.log - /logs/syslog labels: type: syslog
apache.yaml:
yamlfilename: /logs/apache2/*.log labels: type: apache2
labels.type:如果日志来自syslog,使用syslog;否则,请查看集合文档获取相关类型。
您可以从主机绑定目录或将其放在Docker卷中,前者在添加更多应用时更容易更新。
注意:在版本<1.5中,采集目录默认未配置。您可以通过挂载/etc/crowdsec/config.yaml.local文件添加:
yamlcrowdsec_service: acquisition_dir: /etc/crowdsec/acquis.d
1.5.0之前,建议将采集配置放在/etc/crowdsec/acquis.yaml中。如果您愿意,仍然可以这样做,但每个数据源一个文件更有效。
yamlfilenames: - /logs/auth.log - /logs/syslog labels: type: syslog --- filename: /logs/apache2/*.log labels: type: apache2
我们强烈建议将Crowdsec配置和数据库持久化到命名卷中,或从主机绑定挂载,以避免在容器销毁和重建、版本更新等情况下丢失凭据和决策数据。
/etc/crowdsec/etc/crowdsec/acquis.d和/或/etc/crowdsec/acquis.yaml(是的,它们可以嵌套在/etc/crowdsec中)/var/lib/crowdsec/datashelldocker run -d \ -v crowdsec_config:/etc/crowdsec \ -v local_path_to_crowdsec_config/acquis.d:/etc/crowdsec/acquis.d \ -v local_path_to_crowdsec_config/acquis.yaml:/etc/crowdsec/acquis.yaml \ -v crowdsec_data:/var/lib/crowdsec/data \ -v /var/log/auth.log:/logs/auth.log:ro \ -v /var/log/syslog.log:/logs/syslog.log:ro \ -v /var/log/apache:/logs/apache:ro \ -e COLLECTIONS="crowdsecurity/apache2 crowdsecurity/sshd" \ -p 8080:8080 -p 6060:6060 \ --name crowdsec crowdsecurity/crowdsec
查看使用docker-compose的完整堆栈示例:[***]
容器使用特定的docker配置构建。如果您需要更改配置,且docker变量(见下文)不够用,可以从主机挂载/etc/crowdsec/config.yaml.local。该文件应仅包含您要更改的config.yaml选项,如覆盖值中所述。
不再推荐绑定挂载完整的config.yaml文件,您也应该不需要这样做。
如果要使用通知系统,必须使用完整镜像(非slim),并至少挂载自定义的profiles.yaml和通知配置到/etc/crowdsec/notifications
shelldocker run -d \ -v ./profiles.yaml:/etc/crowdsec/profiles.yaml \ -v ./http_notification.yaml:/etc/crowdsec/notifications/http_notification.yaml \ -p 8080:8080 -p 6060:6060 \ --name crowdsec crowdsecurity/crowdsec
Crowdsec由解析日志并创建警报的代理和将这些警报转换为决策的本地API(LAPI)组成。这两个功能由相同的可执行文件提供,因此代理和LAPI可以在同一容器或单独的容器中运行。在复杂配置中,在每个运行受保护应用的机器上部署代理,而LAPI收集所有代理的信号并与中央API通信是合理的。
无TLS认证:
shelldocker exec -it crowdsec_lapi_container_name cscli machines add agent_user_name --password agent_password
有TLS认证:
代理会自动注册,不需要用户名或密码。代理名称从其连接的IP地址派生。
在docker run命令中添加以下环境变量:
DISABLE_LOCAL_API=trueAGENT_USERNAME="agent_user_name" - 之前向LAPI注册的agent_user_nameAGENT_PASSWORD="agent_password" - 之前向LAPI注册的agent_passwordLOCAL_API_URL="[***]"Crowdsec是检测组件,修复通过bouncers实现。每个bouncer保护特定组件。了解更多:
[***]
[***]
无TLS认证:
您可以在启动时使用环境变量或Docker secrets向Crowdsec容器注册bouncers。如果不先删除现有bouncer,无法使用此过程更新现有bouncer。
使用环境变量时,格式应为BOUNCER_KEY_<name>=<key>。例如BOUNCER_KEY_nginx=mysecretkey***。
使用Docker secrets时,secret名称应为bouncer_key_<name>,内容为<key>。例如bouncer_key_nginx的内容为mysecretkey***。
Bouncer密钥可以是任何字符串,但建议使用字母数字值,以与Crowdsec生成的密钥保持一致,并避免特殊字符转义问题。
有TLS认证:
Bouncers会自动注册,不需要API密钥。Bouncers名称从其连接的IP地址派生。
我们提供基于Web的界面以充分利用Crowdsec:[***]
在此订阅:[***]
使用绑定挂载而非命名卷(完整解释)会增加复杂性,因为您必须逐个绑定相关文件,而使用命名卷可以挂载完整的配置和数据文件夹。另一方面,命名卷导航不太直观。
注意对于持久配置(即绑定挂载或卷):设置变量时,其值可能在每次容器运行时写入相应文件(通常是config.yaml)。
| 变量 | 默认值 | 描述 |
|---|---|---|
CONFIG_FILE | /etc/crowdsec/config.yaml | 配置文件位置 |
DISABLE_AGENT | false | 禁用代理,运行仅LAPI容器 |
DISABLE_LOCAL_API | false | 禁用LAPI,运行仅代理容器 |
DISABLE_ONLINE_API | false | 禁用在线API注册以进行信号共享 |
TEST_MODE | false | 不运行服务,仅测试配置:-e TEST_MODE=true |
TZ | 设置时区以确保日志具有本地时间戳 | |
LOCAL_API_URL | [***] | LAPI URL,当DISABLE_LOCAL_API为true时需要更改:-e LOCAL_API_URL="[***]" |
PLUGIN_DIR | /usr/local/lib/crowdsec/plugins/ | 插件目录:-e PLUGIN_DIR="<path>" |
METRICS_PORT | 6060 | 暴露Prometheus指标的端口 |
| LAPI | (与DISABLE_LOCAL_API一起使用时无效) | |
USE_WAL | false | 启用SQLite的预写日志 |
CUSTOM_HOSTNAME | localhost | 本地代理(与LAPI在同一容器中运行)的名称 |
CAPI_WHITELISTS_PATH | capi_whitelists.yaml的路径 | |
| Agent | (与DISABLE_AGENT一起使用时无效) | |
TYPE | 时间机器中文件的Labels.type:-e TYPE="<type>" | |
DSN | 在时间机器中处理单个源:-e DSN="file:///var/log/toto.log"或-e DSN="cloudwatch:///your/group/path:stream_name?profile=dev&backlog=16h"或-e DSN="journalctl://filters=_SYSTEMD_UNIT=ssh.service" | |
UNREGISTER_ON_EXIT | 容器停止时从LAPI中删除代理 | |
| Bouncers | ||
BOUNCER_KEY_<name> | 注册名称为<name>、密钥等于环境变量值的bouncer | |
| 控制台 | ||
ENROLL_KEY | 从控制台获取的注册密钥,用于注册实例 | |
ENROLL_INSTANCE_NAME | 设置实例名称以在控制台中查看 | |
ENROLL_TAGS | 已注册实例的标签,用于搜索和筛选 | |
ENABLE_CONSOLE_ALL | 启用所有控制台选项 | |
ENABLE_CONSOLE_MANAGEMENT | 启用控制台管理(自1.6.9起忽略此选项) | |
ENABLE_CONSOLE_CONTEXT | 将警报上下文发送到控制台(已注册实例自动启用) | |
ENABLE_CONSOLE_TAINTED | 将受污染的警报(来自修改的场景)发送到控制台(已注册实例自动启用) | |
ENABLE_CONSOLE_MANUAL | 将手动警报(cscli decisions add)发送到控制台(已注册实例自动启用) | |
ENABLE_CONSOLE_CUSTOM | 将自定义警报(来自自定义场景)发送到控制台(已注册实例自动启用) | |
| 密码认证 | ||
AGENT_USERNAME | 代理用户名(如果是LAPI则注册,如果是代理则使用):-e AGENT_USERNAME="machine_id" | |
AGENT_PASSWORD | 代理密码(如果是LAPI则注册,如果是代理则使用):-e AGENT_PASSWORD="machine_password" | |
| TLS加密 | ||
USE_TLS | false | 启用TLS加密(作为LAPI或代理) |
CACERT_FILE | CA证书 bundle(用于自签名证书) | |
INSECURE_SKIP_VERIFY | 跳过LAPI证书验证 | |
LAPI_CERT_FILE | LAPI TLS证书路径 | |
LAPI_KEY_FILE | LAPI TLS密钥路径 | |
| TLS认证 | (需要USE_TLS=true) | |
CLIENT_CERT_FILE | 客户端TLS证书路径(启用TLS认证) | |
CLIENT_KEY_FILE | 客户端TLS密钥路径 | |
AGENTS_ALLOWED_OU | agent-ou | 允许的代理OU值,用逗号分隔 |
BOUNCERS_ALLOWED_OU | bouncer-ou | 允许的bouncers OU值,用逗号分隔 |
| Hub管理 |
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像服务
在 Docker Desktop 配置镜像
Docker Compose 项目配置
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
MacOS OrbStack 容器配置
在宝塔面板一键配置镜像
Synology 群晖 NAS 配置
飞牛 fnOS 系统配置镜像
极空间 NAS 系统配置服务
爱快 iKuai 路由系统配置
绿联 NAS 系统配置镜像
QNAP 威联通 NAS 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
来自真实用户的反馈,见证轩辕镜像的优质服务