捕捉潜藏在你的 Kafka 集群中的一切。
Kcatcher 是一款用于枚举和评估 Kafka 集群配置的命令行工具。它可以连接 Apache Kafka 集群,检索有关 broker、主题、ACL 甚至消息样本的详细信息。非常适合安全审计、基础设施评估,或只是想了解 Kafka 环境中运行了什么。

如果你有一个可用的 Go 环境,可以通过以下命令安装:
go install github.com/RoseSecurity/kcatcher@latest
要安装软件包,你可以自动快速设置仓库:
curl -1sLf \
'https://dl.cloudsmith.io/public/rosesecurity/kcatcher/setup.deb.sh' \
| sudo -E bash
仓库配置完成后,可以用以下命令安装:
apt install kcatcher
git clone [email protected]:RoseSecurity/kcatcher.git
cd kcatcher
make build
连接 Kafka 集群并检索 broker 和主题元数据:
kcatcher -b kafka-broker-1,kafka-broker-2
指定非默认的 Kafka 端口:
kcatcher -b kafka-broker-1 -p 9093
检索集群上配置的访问控制列表:
kcatcher -b kafka-broker-1 --acls
从特定主题采样最近的消息:
kcatcher -b kafka-broker-1 --sample-topic my-topic --sample-count 5
以 JSON 格式输出结果以便进一步处理:
kcatcher -b kafka-broker-1 --acls -o json
检索 broker 和主题配置:
kcatcher -b kafka-broker-1 --configs
对你的 Kafka 集群运行全面的安全分析:
kcatcher -b kafka-broker-1 --analyze
结合 ACL 和配置枚举进行完整评估:
kcatcher -b kafka-broker-1 --acls --configs --analyze
安全分析会根据五个类别的 20 条内置安全规则评估你的集群:身份认证、授权、加密、访问控制和配置。结果包括安全评分(0-100)、字母等级以及带有修复建议的详细发现。
安全分析引擎会根据以下规则评估你的 Kafka 集群:
该分析会生成一个 0-100 的安全评分和一个字母等级:
如需提交错误报告和功能请求,请使用问题跟踪器。
欢迎提交 PR!我们遵循典型的 “fork-and-pull” Git 工作流。
[!TIP] 在提交 pull request 之前,请务必合并来自 “upstream” 的最新更改!
| 参数 | 描述 | 默认值 |
|---|
-b, --brokers | 要枚举的 Kafka broker 列表(必需) | - |
-p, --port | Kafka broker 端口 | 9092 |
-t, --timeout | 连接超时时间 | 10s |
-o, --output | 输出格式(text 或 json) | text |
--acls | 启用 ACL 枚举 | false |
--configs | 启用 broker 和主题配置检索 | false |
--analyze | 对集群配置运行安全分析 | false |
--metadata | 显示集群元数据(除非仅使用 --analyze,否则自动启用) | true |
--sample-topic | 要从中采样消息的主题 | - |
--sample-count | 要采样的消息数量 | 10 |
| 规则 ID | 名称 | 严重性 | 描述 |
|---|
| AUTH001 | 未配置身份认证 | CRITICAL | 检测到未配置任何身份认证机制 |
| AUTH002 | 检测到明文监听器 | CRITICAL | 识别使用 PLAINTEXT 协议的监听器 |
| AUTH003 | 弱的 SASL 机制 | HIGH | 标记诸如不带 SSL 的 PLAIN 等弱 SASL 机制 |
| 规则 ID | 名称 | 严重性 | 描述 |
|---|
| AUTHZ001 | 未配置授权器 | CRITICAL | 检测到缺少授权器配置 |
| AUTHZ002 | 允许所有人的权限 | CRITICAL | 识别过度宽松的 allow-everyone 设置 |
| AUTHZ003 | 超级用户暴露 | MEDIUM | 标记暴露的超级用户配置 |
| 规则 ID | 名称 | 严重性 | 描述 |
|---|
| ENC001 | 无 broker 间加密 | CRITICAL | 检测未加密的 broker 间通信 |
| ENC002 | 弱的 SSL 协议 | HIGH | 识别已弃用或弱的 SSL/TLS 协议 |
| ENC003 | 缺少 SSL 客户端认证 | MEDIUM | 标记缺少 SSL 客户端认证 |
| ENC004 | 缺少端点标识 | MEDIUM | 检测到禁用的 SSL 端点标识 |
| 规则 ID | 名称 | 严重性 | 描述 |
|---|
| ACL001 | ACL 中的通配符主体 | CRITICAL | 识别包含通配符 (*) 主体的 ACL |
| ACL002 | ACL 中的通配符主机 | MEDIUM | 标记允许从任意主机访问的 ACL |
| ACL003 | 过度宽松的 ACL | HIGH | 检测授予过多权限的 ACL |
| ACL004 | 集群范围 ACL | MEDIUM | 识别应用于整个集群的 ACL |
| ACL005 | ACL 中的通配符资源 | HIGH | 标记包含通配符资源模式的 ACL |
| 规则 ID | 名称 | 严重性 | 描述 |
|---|
| TOPIC001 | 已启用自动创建主题 | HIGH | 检测到已启用自动创建主题 |
| TOPIC002 | 不洁的 Leader 选举 | HIGH | 识别不洁的 Leader 选举配置 |
| TOPIC003 | 过低的 Min ISR | HIGH | 标记最小同步副本数不足的主题 |
| TOPIC004 | 保留期过短 | MEDIUM | 检测异常短暂的消息保留期 |
| TOPIC005 | 已启用删除主题 | MEDIUM | 识别已启用主题删除的情况 |
| 等级 | 分数范围 | 描述 |
|---|
| A | 90-100 | 优秀的安全态势 |
| B | 80-89 | 良好的安全性,需要小幅改进 |
| C | 70-79 | 安全性一般,建议进行多项改进 |
| D | 60-69 | 安全性较差,需要重大变更 |
| F | 0-59 | 存在需要立即处理的关键安全问题 |