nano-rs/nano
GitHub: nano-rs/nano
一款用 Rust 编写的轻量级开源 SIEM,为安全分析师提供高效的搜索、检测与分诊工具。
Stars: 17 | Forks: 1
一款轻量、自成体系的 SIEM。专为希望快速输出有效信号而非管理数据湖的安全分析师,提供搜索、检测与分诊能力。
一条命令。45 秒。即可获得一个可运行的 nano 实例。▶ 观看 YouTube 演示
安装程序会将此仓库克隆到 `~/nano`,生成密钥,从 `ghcr.io/nano-rs` 拉取预构建镜像,启动整个技术栈(postgres + clickhouse + api/search/jobs/web + vector + nginx),并引导您创建第一个管理员账户。完成后请打开 `http://localhost`。 **前提条件:** Docker、docker compose v2、git、openssl、curl。 **最低主机配置:** 2 vCPU,4 GB RAM — 这是最低稳定配置,适用于每天最多约 10 GB 的数据摄入量。低于此配置,在负载下 ClickHouse 和 API 将发生 OOM。 对于非交互式安装,请在管道操作前预设 `NANO_ADMIN_EMAIL`、`NANO_ADMIN_NAME`、`NANO_ADMIN_PASSWORD` 和 `NANO_BASE_URL`。完整的环境变量列表请参阅 [`.env.opensource.example`](./.env.opensource.example)。 ## 包含内容 - **数据摄入** — 基于 Vector 的收集器,配备 VRL 解析器(HTTP 推送、syslog、S3 拉取)。解析器内容在 Apache-2.0 下单独发布。 - **存储** — ClickHouse 存储事件(每日分区,默认 90 天 TTL),PostgreSQL 存储元数据。 - **搜索** — nPL 解析器、ClickHouse SQL 生成器、字段统计侧边栏、布隆过滤器感知的分词。 - **检测** — 计划(cron)+ 实时(物化视图)规则,信号日志记录,基于普遍性的降噪。 - **告警** — 生命周期管理(新建 → 已分诊 → 已解决)、分组、去重。 - **市场** — 安装并配置开箱即用的丰富信息提供程序(威胁情报、身份、资产清单、地理位置)。跨 UDM 字段的覆盖率指示器。 - **Web 界面** — React SPA,延迟加载,在任何现代浏览器中运行。
检测规则编辑器 — 暂存 → 生效 → 告警生命周期、MITRE ATT&CK 标签、基线影响、验证及版本历史。
在 nPL 中进行狩猎 — sourcetype="windows_sysmon" event_id=1 | timechart span=10m count by parent_command_line limit=8。堆叠的序列可视化、顶部 N 分割依据、内联结果表格。
市场 — 开箱即用的丰富信息目录(威胁情报、身份、资产清单、地理位置)。覆盖率指示器追踪哪些 UDM 字段背后有对应的提供程序。
## 从源代码开发 上述[安装](#install)流程是您只想运行 nano 的正确途径。要自行开发引擎: - 前提条件:Rust stable,Node 20+,PostgreSQL 18+,ClickHouse 24+ - 使用您常用的本地工具启动 Postgres + ClickHouse - `./scripts/start-microservices-dev.sh` — 使用合理的本地默认设置启动 `nanosiem-api` (3000)、`nanosiem-search` (3002) 和 `nanosiem-jobs` - `cd nanosiem-web && npm install && npm run dev` (端口 5173) 日常开发工作流及需要覆盖的环境变量,请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md)。 完整文档:**[nano.rs/docs](https://nano.rs/docs/getting-started/first-feed/)**。 ## 架构 ``` +------------+ +------------+ +-------------+ | Vector | --> | nanosiem- | --> | ClickHouse | | parsers | | api :3000 | | (events) | +------------+ +------------+ +-------------+ | ^ v | +------------+ +------+------+ | PostgreSQL | | nanosiem- | | (rules, | | search:3002 | | alerts, | +-------------+ | audit) | ^ +------------+ | +-------------+ | nanosiem- | | web (SPA) | +-------------+ ``` - `nanosiem-api` — 规则、告警、设置、数据摄入,位于 `/swagger-ui` 的 OpenAPI - `nanosiem-search` — 查询执行、字段统计、日志获取 - `nanosiem-jobs` — 计划检测运行器、仓库同步 - 完整功能需要同时使用 Postgres 和 ClickHouse。DualPool 抽象层使服务在 ClickHouse 暂时不可用时能降级到仅使用 Postgres。 ## 文档 - **[快速入门](https://nano.rs/docs/getting-started/first-feed/)** — 启动 nano 并摄入您的第一个数据源 - **[搜索命令 (nPL)](https://nano.rs/docs/search-commands/)** — 管道命令、eval 函数、语法参考 - **[检测规则编写](https://nano.rs/docs/user-guide/detections/)** — 编写规则、管理生命周期、调整降噪 - **[UDM 参考](https://nano.rs/docs/reference/udm-fields/)** — 构建该模式所依据的 75 个以上明确列 - **[编码代理](https://nano.rs/docs/coding-agents)** — 通过指向您 nano 实例的 Claude Code / Codex 管理搜索、解析器和检测。托管方案附带应用内 AI 助手 (pivt);编码代理为开源核心部署在本地提供同等能力。 ## 生态系统 该引擎可独立工作,但一组配套的仓库提供了大多数团队在第一天就需要的内容层: - **[nano-enrichments](https://github.com/nano-rs/nano-enrichments)** — 集成到应用内市场的威胁情报源、身份提供程序和资产清单适配器 - **[parsers](https://github.com/nano-rs/parsers)** — 针对常见日志源(代理、EDR、云审计、Windows)的 Vector + VRL 解析器 - **[rules](https://github.com/nano-rs/rules)** — 精心策划的检测规则,可通过规则库导入到 nano - **[nanodac](https://github.com/nano-rs/nanodac)** — 检测即代码:在 Git 中定义规则,通过 GitOps 同步到 nano - **[models](https://github.com/nano-rs/models)** — 支持 pivt AI 功能的 LiteLLM 模型目录 ## 开源版 vs. 托管版 此仓库是开源核心引擎 — 在数据摄入、搜索、检测和告警方面功能完整。部分平台功能仅在 [nano.rs](https://nano.rs) 的托管版中提供: - **案件** — 调查管理、协作笔记本 - **事件** — 多案件编排、队列路由 - **pivt** — 覆盖检测生成、规则调优、查询审查、解析器编辑和影子调查的环境 AI 助手 - **风险评分** — 跨用户、主机和云账户的实体级风险 - **自动调优** — AI 驱动的误报减少 自托管 nano 并使用这些功能需要商业许可 — [hello@nano.rs](mailto:hello@nano.rs)。 ## 路线图 - 公共检测规则库(社区贡献) - OpenTelemetry 日志/链路追踪摄入 - 社区编写 VRL 解析器的解析器 SDK - 已保存查询 API + CLI 客户端 - 活跃积压工作请参阅 [open issues](https://github.com/nano-rs/nano/issues) ## 社区 - 如果 nano 对您有用,请 **为此仓库点星** — 这有助于其他人发现它 - **[Discord](https://discord.gg/5rk8bwmkj7)** — 问题、设计讨论、展示与分享 - **[Good first issues](https://github.com/nano-rs/nano/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)** — 为新贡献者精心策划的入门点 - **[Discussions](https://github.com/nano-rs/nano/discussions)** — 更长篇的问答和提案 ## 参与贡献 我们接受在 CLA 下的社区贡献 — 请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md) 和 [.github/ICLA.md](./.github/ICLA.md)。DCO 不足够,因为 nano 是开源核心;CLA 授予 Nano LLC 保持平台部分功能专有同时仍接受您补丁所需的再许可权。 错误报告和功能请求:[issue templates](./.github/ISSUE_TEMPLATE/)。 ## 安全 发现漏洞?请勿开设公开 issue。请参阅 [SECURITY.md](./SECURITY.md) — 简短版本:将漏洞邮件发送至 [security@nano.rs](mailto:security@nano.rs),并留有 90 天的披露窗口期。 ## 许可证 此仓库中的引擎根据 GNU Affero General Public License v3.0 或更高版本获得许可。请参阅 [LICENSE](./LICENSE)。 如果 AGPL 不适合您的部署环境,可提供商业许可 — 请联系 [hello@nano.rs](mailto:hello@nano.rs)。标签:AMSI绕过, ClickHouse, OISF, PostgreSQL, Rust语言, URL发现, 事件分类, 代码示例, 可视化界面, 威胁检测, 安全信息事件管理, 安全分析工具, 安全检测, 安全运营, 实时搜索, 开源核心, 扫描框架, 数据分析, 日志管理, 查询语言, 检测生命周期, 测试用例, 统一数据模型, 请求拦截, 轻量级SIEM, 通知系统