mcpField
C
crowdsec

crowdsec

github.com/magnus919安全15762 次安装今天更新
代码仓库

关于 crowdsec

面向 CrowdSec 运维的技能,用于配置基于日志的检测、检查告警与决策并验证处置组件。强调先进行只读排查、谨慎修改,并确认 bouncer 实际执行了决策。

主要功能

  1. 01日志采集与解析器检查
  2. 02使用 cscli 排查告警和决策
  3. 03配置 bouncer 并验证执行
  4. 04AppSec WAF 配置指导
  5. 05运维变更前的安全检查

适用场景

  1. 01诊断日志未采集或未解析
  2. 02以模拟模式测试场景
  3. 03验证 bouncer 是否拦截测试流量

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/magnus919/agent-skills --skill crowdsec

安装后在 Claude Code 中输入/crowdsec确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

README.md
evals/
evals.json
references/
appsec-deep-dive.md
config-reference.md
cscli-command-reference.md
database-config.md
docker-deployment.md
hub-collections.md
nginx-bouncer.md
operations-checklist.md
production-hardening.md
traefik-bouncer.md
troubleshooting.md

详细介绍

CrowdSec

CrowdSec 会检测日志和 HTTP 请求中的恶意行为,然后通过 LAPI 暴露警报和决策。引擎本身不会阻止流量:在宣称提供保护之前,至少安装并验证一个补救组件(bouncer)。

安全检查

进行任何变更之前,请确认目标主机/容器、操作范围、备份或回滚方案以及维护窗口。优先进行只读检查和模拟。未经记录原因并准备撤销方案,切勿手动删除决策、集合或数据。创建 bouncer 密钥时请保存好;密钥只会显示一次。调优场景时使用 simulation: true,以便观察检测结果而不执行拦截,然后在启用实时拦截之前验证允许列表。

选择部署方式

对于 Debian/Ubuntu,请添加 CrowdSec 软件源,安装 crowdsec,然后安装一个补救软件包,例如 crowdsec-firewall-bouncer-iptables 或 -nftables。对于 Docker Compose,只向必需的网络开放 LAPI(127.0.0.1:8080)、指标(127.0.0.1:6060)和 AppSec(127.0.0.1:7422),以只读方式挂载 /etc/crowdsec、/var/lib/crowdsec/data 和日志,并固定为经过审查的镜像版本。持久化数据目录,这是 v1.7.0+ 的强制要求。加载Docker 部署指南,查看完整的 compose 示例和远程 Agent 注意事项。

安装后,验证 systemctl status crowdsec(或容器健康状态),然后检查 cscli version、cscli collections list、采集指标和 bouncer 连接状态。未经明确的网络和身份验证设计,切勿将 LAPI 或 AppSec 暴露到公网。

从检测到拦截的工作流

  1. 根据实际日志格式选择集合,例如 crowdsecurity/linux、sshd、nginx、traefik 或 base-http-scenarios。
  2. 在 /etc/crowdsec/acquis.yaml 或 acquis.d/ 中配置采集;每个来源都需要 labels.type,以便运行正确的解析器。对于不可靠的 NFS/SMB 或绑定挂载,请使用 poll_without_inotify: true;对于缓冲日志,请使用 use_time_machine: true。
  3. 使用 cscli metrics -o json 检查解析器/场景命中情况和未解析的行。
  4. 使用配置文件将警报映射到决策。保留 profiles.yaml.local,并记住 YAML 序列会替换而非合并。
  5. 使用 cscli bouncers add NAME 添加 bouncer,安全保存其一次性密钥,并通过 cscli bouncers list 和无害的测试决策进行验证。
  6. 确认反向代理/防火墙确实在执行决策;仅有警报或 LAPI 决策并不能证明请求已被拦截。

有关完整的配置指令、数据库选项和加固措施,请阅读 配置参考、 数据库配置和 生产环境加固。

cscli 基础知识

使用 cscli -o json 进行自动化,并保存命令输出、版本、主机和时间作为证据。只读排查通常会用到:

cscli version
cscli hub list
cscli collections list
cscli alerts list --contain "scenario:ssh-bf"
cscli decisions list -o json
cscli metrics -o json
cscli explain --file /path/to/sample.log

cscli hub update 会刷新本地 hub 索引,并可能更改本地状态。此操作是可选的,不属于只读排查流程,运行前需要通过上述安全检查。使用 collections|parsers|scenarios install/list/upgrade/inspect 管理 hub 项目;这些安装、升级和删除操作同样需要通过安全检查。使用 alerts list/inspect 和 decisions add/list/delete 管理警报和决策;变更命令需要通过上述安全检查。 使用 bouncers add/list/delete 和 machines add/list/delete 管理 bouncer 和机器。只有在确认目标地址和凭据后,才使用 console status、console enroll 和 lapi register。加载 完整的 cscli 参考,查看标志、输出模式和较少使用的命令。

采集与 AppSec WAF

最简文件采集配置如下:

filenames: [/var/log/nginx/*.log]
labels: {type: nginx}

对于 AppSec,请安装相关的虚拟补丁/CRS 集合,并添加一个监听 7422 的 appsec 采集源,配置为 appsec_config: crowdsecurity/appsec-default 和 labels.type: appsec。将来自代理的请求路由到 AppSec,并审慎决定故障时的行为: 故障时放行可保持服务可用,但可能绕过防护;故障时拒绝可提供更强的保护, 但可能导致服务中断。在启用拦截前,使用正常流量样例进行测试并检查 AppSec 指标。带内规则会拦截当前请求或要求进行验证码验证;带外规则会生成事件, 供后续场景处理。请阅读AppSec 深入介绍以及相关的 拦截器指南或 nginx 拦截器。

运维与故障排查

依次检查服务日志、cscli metrics、解析器/未解析计数、场景命中情况、 生效中的决策,以及拦截器的上次拉取时间。区分“未采集到日志”、“已采集日志但未解析”、 “已解析但未命中场景”、“已存在决策但拦截器数据过期”,以及“拦截器已执行但代理路由错误”。 不要将告警查询结果为空视为安全的证明。请使用故障排查指南和 运维检查清单进行范围明确的验证。

审慎使用配置文件和通知。使用 cscli notifications test NAME 测试通知插件;示例中 绝不要放入 Webhook 密钥或 CTI 密钥。在跨越信任边界时,为 LAPI 启用 TLS/mTLS, 并在依赖社区或拦截列表拉取的数据前进行审查。

参考资料

评论

支持 Markdown