CrowdSec 防火墙联防配置教程
CrowdSec 是一个开源的协作式安全引擎,通过分析日志检测攻击行为,并借助社区共享的威胁情报实现联防。与传统的 Fail2Ban 相比,CrowdSec 不仅能分析更多类型的日志,还能从全球社区获取恶意 IP 黑名单,实现主动防御。本文将介绍如何在搬瓦工 VPS 上部署 CrowdSec 并配置防火墙 Bouncer,构建完整的入侵防御体系。
一、CrowdSec 架构简介
CrowdSec 的架构主要包含三个组件:
- CrowdSec 引擎(Agent):负责解析日志,根据场景(Scenarios)检测攻击行为,生成决策(Decisions)。
- 本地 API(LAPI):存储决策信息,供 Bouncer 查询。引擎和 Bouncer 都通过 LAPI 通信。
- Bouncer:执行决策的组件,例如防火墙 Bouncer 会将恶意 IP 添加到 iptables 或 nftables 中进行封禁。
此外,CrowdSec 还可以连接中央 API(CAPI),从社区获取全球威胁情报,也可以将本地检测到的攻击上报给社区。
二、系统要求
- 操作系统:Ubuntu 20.04+、Debian 11+、CentOS 7+。
- 内存:至少 256MB 可用内存。
- 磁盘:至少 500MB 可用空间。
- 网络:需要访问外网以获取社区情报(可选)。
搬瓦工所有 KVM 方案均满足以上要求。如果尚未购买 VPS,可以参考搬瓦工全部方案选购,使用优惠码 NODESEEK2026 可享受 6.77% 的折扣。
三、安装 CrowdSec 引擎
3.1 添加软件源(Ubuntu/Debian)
curl -s https://install.crowdsec.net | bash
该脚本会自动检测系统版本并添加对应的软件源。
3.2 安装 CrowdSec
apt update
apt install crowdsec -y
CentOS 用户使用:
yum install crowdsec -y
3.3 验证安装
systemctl status crowdsec
cscli version
安装完成后,CrowdSec 会自动检测系统上已有的服务(如 SSH、Nginx、Apache)并安装对应的日志采集器。
3.4 查看自动检测结果
# 查看已安装的采集器
cscli collections list
# 查看已安装的解析器
cscli parsers list
# 查看已安装的场景
cscli scenarios list
四、安装防火墙 Bouncer
4.1 安装 cs-firewall-bouncer
apt install crowdsec-firewall-bouncer-iptables -y
如果系统使用 nftables,可以安装 nftables 版本:
apt install crowdsec-firewall-bouncer-nftables -y
4.2 验证 Bouncer 注册
cscli bouncers list
输出应显示已注册的防火墙 Bouncer 及其 API 密钥。
4.3 配置 Bouncer
Bouncer 的配置文件位于 /etc/crowdsec/bouncers/crowdsec-firewall-bouncer.yaml,主要配置项包括:
mode: iptables
update_frequency: 10s
api_url: http://localhost:8080/
api_key: YOUR_API_KEY
disable_ipv6: false
deny_action: DROP
deny_log: true
deny_log_prefix: "crowdsec: "
其中 deny_action 可以设为 DROP(直接丢弃)或 REJECT(拒绝并返回信息),推荐使用 DROP。
4.4 启动 Bouncer
systemctl enable crowdsec-firewall-bouncer
systemctl start crowdsec-firewall-bouncer
systemctl status crowdsec-firewall-bouncer
五、安装常用规则集
CrowdSec 通过 Hub 提供大量社区维护的规则集。以下是常用的安装命令:
# 安装 Nginx 相关规则
cscli collections install crowdsecurity/nginx
# 安装 SSH 暴力破解检测
cscli collections install crowdsecurity/sshd
# 安装 HTTP 扫描检测
cscli collections install crowdsecurity/http-cve
# 安装基础 Linux 规则
cscli collections install crowdsecurity/linux
# 更新所有规则到最新版本
cscli hub update
cscli hub upgrade
六、日常管理命令
6.1 查看当前决策
# 查看所有活跃的封禁决策
cscli decisions list
# 查看特定 IP 的决策
cscli decisions list --ip 192.168.1.100
6.2 手动管理 IP
# 手动封禁一个 IP(持续 24 小时)
cscli decisions add --ip 1.2.3.4 --duration 24h --reason "manual ban"
# 手动封禁一个网段
cscli decisions add --range 1.2.3.0/24 --duration 48h --reason "subnet ban"
# 解封一个 IP
cscli decisions delete --ip 1.2.3.4
6.3 查看告警
# 查看最近的告警
cscli alerts list
# 查看告警详情
cscli alerts inspect 1
6.4 白名单配置
编辑 /etc/crowdsec/parsers/s02-enrich/whitelists.yaml,添加信任的 IP:
name: crowdsecurity/whitelists
description: "Whitelist trusted IPs"
whitelist:
reason: "trusted ip"
ip:
- "YOUR_HOME_IP"
- "10.0.0.0/8"
cidr:
- "192.168.0.0/16"
修改后重启 CrowdSec:
systemctl restart crowdsec
七、接入社区威胁情报
CrowdSec 默认会连接中央 API,获取社区共享的恶意 IP 列表。你可以在 CrowdSec 控制台注册账号,获取更多功能:
# 注册到 CrowdSec 控制台
cscli console enroll YOUR_ENROLLMENT_KEY
注册后可以在 Web 控制台查看服务器的安全状态、告警统计和封禁列表。
订阅第三方黑名单
# 查看可用的黑名单
cscli blocklists list
# 订阅指定黑名单
cscli blocklists add crowdsecurity/tor-exit-nodes
八、监控与日志
# 查看 CrowdSec 运行指标
cscli metrics
# 查看实时日志
journalctl -u crowdsec -f
# 查看 Bouncer 日志
journalctl -u crowdsec-firewall-bouncer -f
cscli metrics 会展示已解析的日志行数、触发的场景次数、活跃的决策数量等关键指标,便于了解系统运行状态。
九、与 Fail2Ban 的对比
- 社区情报:CrowdSec 可以从全球社区获取恶意 IP 列表,Fail2Ban 只能基于本地日志。
- 性能:CrowdSec 使用 Go 语言编写,日志处理速度远超 Fail2Ban 的 Python 实现。
- 规则丰富度:CrowdSec Hub 提供大量社区维护的规则,覆盖面更广。
- 架构灵活性:CrowdSec 的引擎与 Bouncer 分离,可以灵活部署在不同位置。
十、常见问题
Bouncer 没有封禁 IP
检查 Bouncer 是否正常运行并已注册到 LAPI:
cscli bouncers list
systemctl status crowdsec-firewall-bouncer
确认 iptables 中有 CrowdSec 的规则链:
iptables -L -n | grep -i crowdsec
日志没有被解析
检查采集器配置是否正确:
cscli machines list
cat /etc/crowdsec/acquis.yaml
确保日志文件路径正确且 CrowdSec 有读取权限。
总结
CrowdSec 是一款强大的协作式安全防护工具,通过社区共享的威胁情报和灵活的规则引擎,能够有效保护搬瓦工 VPS 免受暴力破解、端口扫描和 Web 攻击等威胁。结合防火墙 Bouncer,可以实现自动化的 IP 封禁和解封。如果你还需要更多安全防护,可以参考 Suricata 入侵检测和 GVM/OpenVAS 漏洞扫描教程。选购搬瓦工 VPS 请查看全部方案,购买时使用优惠码 NODESEEK2026 可享受折扣。相关问题可通过搬瓦工官网提交工单咨询。