CrowdSec:开源WAF/IPS入侵防御系统服务器安全

savh 12

简介

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从未攻击过您,但只要它攻击过社区里的其他人,您也会自动获得对它的防御能力。

特性CrowdSecFail2ban
核心理念协作式、社区驱动单机、本地防御
架构检测与响应分离 (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 发表

推荐阅读
最新动态 (0)

    ( 登录 ) 后,可以发表评论!

    返回