简介
CrowdSec 是一个开源的、现代化的、协作式的 入侵防御系统 (IPS)。强化、联网的 Fail2ban。
像 Fail2ban:它会主动读取您服务器上的各种日志(如SSH登录日志、Nginx访问日志、数据库日志等),并根据预设的规则(Scenarios)来识别恶意行为(如暴力破解、Web扫描、爬虫等)。
强化:它比Fail2ban更现代化、性能更高(用Go语言编写)、更灵活,并且能分析的日志源也远比Fail2ban丰富。
联网的 (核心亮点):这是它与所有传统工具最大的不同。当某台服务器上的CrowdSec Agent识别出一个攻击者的IP地址后,它会将这个IP匿名化地上报到一个中央数据库。接着,整个CrowdSec社区的所有用户都会自动下载这份“黑名单”,从而在自己的防火墙或WAF上提前阻止这个IP的访问。
核心是“群体免疫”或“网络安全领域的联防联控”。 一个攻击者攻击了社区中的任何一个成员,整个社区就都会对这个攻击者免疫。
官网
官网:https://www.crowdsec.net/
开源项目地址:https://github.com/crowdsecurity/crowdsec
CrowdSec 是如何工作的?
CrowdSec的设计非常巧妙,它将“检测”和“响应”两个环节彻底分离开来,这赋予了它极大的灵活性。
整个工作流程分为五个步骤:
1. 检测 (Detect): 读取日志
组件: CrowdSec Agent
工作: Agent安装在您需要保护的每一台服务器上。它像一个信息采集员,持续不断地读取各种来源的日志文件或服务流。例如:
/var/log/auth.log (SSH登录日志) /var/log/nginx/access.log (Nginx访问日志) Docker容器日志 Cloudflare WAF日志 数据库日志
2. 分析 (Analyze): 解析与场景匹配
组件: Security Engine (内置于Agent中)
工作: 这是Agent的“大脑”。
解析(Parsing): 它首先将非结构化的日志行(如"GET /login.php ...")转换成结构化的数据(如{method:"GET", uri:"/login.php", ...})。
场景匹配(Scenarios): 然后,它用这些结构化数据去匹配一系列行为模式规则(用YAML语言编写的Scenarios)。例如,一个SSH暴力破解的场景可能是:“如果在1分钟内,同一个IP地址的登录失败次数超过5次”。
3. 决定 (Decide): 做出判决
组件: Security Engine
工作: 一旦某个IP的行为命中了某个场景,Security Engine就会做出一个“判决(Decision)”。例如:“将IP地址 1.2.3.4 判定为恶意,建议封禁4小时”。这个判决被记录在本地数据库中。
4. 响应 (Remediate): 执行封禁
组件: Bouncer
工作: Bouncer是“执行者”,它独立于Agent安装。它会定期查询Agent的判决列表,并将这些判决转化为实际的封禁动作。这种分离设计非常灵活,您可以在各种地方执行封禁:
操作系统防火墙: cs-firewall-bouncer (直接操作iptables/nftables) Web服务器: cs-nginx-bouncer (在Nginx层返回403 Forbidden) 云WAF: cs-cloudflare-bouncer (通过API调用,将恶意IP添加到Cloudflare WAF的IP黑名单或规则中) 应用层: 也可以编写自定义Bouncer,在您的程序代码层面拒绝该IP的访问。
5. 分享 (Share): 贡献与获益
组件: CrowdSec Agent & Community Blocklist
工作: 当Agent做出一个判决后,它会将攻击者的IP、触发的场景等信息,匿名化地发送到CrowdSec的中央服务器。经过聚合与验证,这个IP会被加入到**社区黑名单(Community Blocklist)**中。
Agent会定期从中央服务器拉取这份最新的社区黑名单,并将其应用到您的本地判决列表中。这意味着,即使某个IP从未攻击过您,但只要它攻击过社区里的其他人,您也会自动获得对它的防御能力。
| 特性 | CrowdSec | Fail2ban |
|---|---|---|
| 核心理念 | 协作式、社区驱动 | 单机、本地防御 |
| 架构 | 检测与响应分离 (Agent/Bouncer) | 单体式 (一体化) |
| 性能 | 高 (Go语言,多线程) | 中等 (Python,单线程) |
| 黑名单来源 | 本地检测 + 社区共享 | 仅本地检测 |
| 响应方式 | 极其灵活 (多种Bouncer) | 有限 (主要是iptables) |
| 配置 | YAML格式,更现代化 | INI格式,传统 |
| 支持范围 | 日志、Metrics、云原生 | 主要是日志文件 |
CrowdSec与WAF策略如何结合?
CrowdSec不是要替代WAF,而是要与WAF形成完美的“空地协同”:
为WAF提供“情报源”: 服务器可能会受到各种WAF无法感知的攻击,例如 SSH暴力破解、数据库登录尝试、邮件服务滥用等。当CrowdSec Agent在服务器上检测到这些攻击时,cs-cloudflare-bouncer 可以自动将攻击者的IP推送到Cloudflare WAF的黑名单中。这样一来,这个IP甚至连再次访问网站的机会都没有了,直接在网络边缘就被Cloudflare拦截。
建立纵深防御:
Cloudflare WAF 是“外城墙”,负责抵御所有来自互联网的Web攻击。
CrowdSec 是“内城卫兵+情报网络”,它不仅保护服务器本身免受非Web攻击,还能将发现的敌人通报给外城墙,让防御更主动、更智能。
弥补WAF的不足: WAF规则非常强大,但它主要针对的是HTTP/HTTPS流量。如果攻击者直接扫描服务器IP的其他端口(如SSH的22端口),WAF是无能为力的。而这正是CrowdSec的用武之地。
总结
CrowdSec是一个非常有前途的现代安全项目。它通过创新的协作模式,将全球成千上万的单点防御连接成一个巨大的、动态更新的威胁情报网络。
对于使用场景来说,部署CrowdSec Agent和Cloudflare Bouncer,将会是现有WAF策略的完美补充,它能覆盖到WAF所保护不到的服务器层面,并将服务器层面的威胁情报反哺给WAF,形成一个完整的、自动化的安全闭环。
http://www.savh.cn/thread-1689.htm
转载请注明:Savh.Cn 发表



