Threatwise/hpfeeds-rs
GitHub: Threatwise/hpfeeds-rs
用纯 Rust 重写的高性能 HPFeeds 协议实现,为蜜罐网络和威胁情报平台提供每秒百万级消息吞吐和开箱即用的多源数据桥接。
Stars: 0 | Forks: 0
# hpfeeds-rs
## 本地构建 Docker 镜像 ⚙️
Docker 构建目前使用 BuildKit(通过 `docker buildx`)以实现更好的缓存和多平台构建。如果你的本地 Docker 提示“Install the buildx component”或缺少 `docker-buildx` 二进制文件,请通过以下任一选项启用 buildx:
- 使用 Docker Desktop(默认包含并启用 Buildx)。
- 在 Linux 上,创建并使用 buildx 构建器:
```
# 创建新的 buildx builder 并使用它
docker buildx create --use --name mybuilder
# 验证
docker buildx inspect --bootstrap
```
- 如果你倾向于使用传统的构建器,请按照 [Docker Buildx 文档](https://docs.docker.com/buildx/working-with-buildx/)中的说明安装 Docker CLI Buildx 插件。
此外,为了避免将大型构建上下文发送到守护进程,我们添加了 `.dockerignore` 文件来排除 `target/`、`.git`、`.venv` 及其他常见的开发目录。这应该会显著减少运行 `docker build .` 时的上下文大小。
这是 [HPFeeds](https://github.com/hpfeeds/hpfeeds) 协议的现代、高性能、异步 Rust 实现。
该项目是与原始 HPFeeds broker 线路兼容的替代品,针对极高吞吐量(360万+ 消息/秒)和生产环境的可靠性进行了优化。
## 核心组件
- **`hpfeeds-server`**:中央 broker。支持 SQLite/JSON 认证、细粒度 ACL、原生 TLS 和 Prometheus 指标。
- **`hpfeeds-collector`**:通用数据桥接器,内置对 Splunk、Kafka、Postgres、Mongo、Elasticsearch 等的接收端支持。
- **`hpfeeds-cli`**:用于发布、订阅和管理 SQLite 用户数据库的命令行工具。
- **`hpfeeds-client`**:用于构建高速蜜罐的稳健 Rust 库。
## 功能特性
- **极致性能**:在标准硬件上可持续保持 360万 消息/秒(3.5 GB/s)的吞吐量。
- **零拷贝架构**:使用 `bytes::Bytes` 实现高效的消息广播。
- **贪婪批处理**:所有数据库和日志输出均使用智能缓冲,以最大化 I/O 效率。
- **严格的协议安全**:强制执行 1MB 大小限制和严格的 UTF-8 验证,以防止拒绝服务和程序崩溃。
- **纯 Rust**:100% Rust 技术栈,包括纯 Rust 实现的 Kafka 和 TLS (rustls),便于轻松部署。
## 安装说明
```
cargo build --release
```
## 通用收集器 (`hpfeeds-collector`)
收集器是 broker 与您的分析平台之间的桥梁。它支持多种输出接收端:
| 接收端 | 使用场景 | 配置标志 |
| --- | --- | --- |
| **Splunk HEC** | 现代直接 Splunk 数据摄取 | `--output splunk-hec` |
| **Kafka** | 高容量数据湖 (Redpanda/Kafka) | `--output kafka` |
| **PostgreSQL** | 关系型长期存储 | `--output postgres` |
| **MongoDB** | 灵活的 NoSQL 存储 | `--output mongo` |
| **Elasticsearch** | 搜索与仪表盘 (Kibana) | `--output elastic` |
| **Redis** | 实时蜜罐地图 (NodeJS/Go) | `--output redis` |
| **STIX 2.1** | 标准威胁情报源 (MISP) | `--output stix` |
| **Syslog** | 传统企业 SIEMs (RFC 5424) | `--output syslog` |
| **TCP JSON** | 自定义开发者流式传输 | `--output tcp` |
| **File** | 用于本地分析的 JSON-Lines 日志 | `--output file` |
### 示例:通过 Redis 为你的蜜罐地图提供数据
```
./target/release/hpfeeds-collector -i admin -s secret --output redis --redis-url "redis://localhost/"
```
### 示例:专业归档至 Postgres
```
./target/release/hpfeeds-collector -i admin -s secret --output postgres --postgres-url "postgres://user:pass@host/db"
```
## 运行 Broker
```
# 从启用 TLS 的 SQLite backend 开始
./target/release/hpfeeds-server --db hpfeeds.db --tls-cert cert.pem --tls-key key.pem
```
## 管理工具
```
# 向数据库添加新的 sensor 用户
./target/release/hpfeeds-cli admin --db hpfeeds.db add-user sensor1 secret123
# 允许 sensor1 发布到 'malware' channel
./target/release/hpfeeds-cli admin --db hpfeeds.db add-acl sensor1 malware --pub-allowed
```
## 基准测试
包含一个饱和度测试脚本,用于验证您的硬件性能:
```
./saturation_test.sh
```
标签:ACL, Docker, Elasticsearch, Honeypot, HPFeeds, Kafka, MongoDB, PostgreSQL, Redis, Rust, SonarQube插件, SQLite, STIX 2.1, TGT, Threat Intelligence, TLS, 协议实现, 可视化界面, 大数据吞吐量, 威胁情报, 安全防御评估, 开发者工具, 异步编程, 搜索引擎查询, 攻防演练, 数据桥接, 数据采集器, 日志收集, 测试用例, 消息代理, 消息队列, 网络安全, 网络流量审计, 自定义请求头, 蜜罐, 证书利用, 请求拦截, 通知系统, 防御工具, 隐私保护, 零拷贝