jmpsec/osctrl

GitHub: jmpsec/osctrl

osctrl 是一个快速且高效的 osquery 管理平台,通过 TLS 端点实现 osquery 远程 API,支持大规模节点的配置分发、日志收集和按需查询。

Stars: 505 | Forks: 68

# osctrl

osctrl

Fast and efficient osquery management.

Software License Build Status Go Report Card

## 🤔 什么是 osctrl? **osctrl** 是一个快速且高效的 [osquery](https://osquery.io) 管理解决方案,它将 osquery 的 [远程 API](https://osquery.readthedocs.io/en/stable/deployment/remote/) 实现为 TLS endpoint。 使用 **osctrl**,您可以: - ✨ 监控所有运行 osquery 的系统 - 📦 快速分发其配置 - 📊 收集所有的状态和结果日志 - ⚡ 运行按需查询 - 🗂️ 提取文件和目录 - ⚙️ 扩展规模,从**几百个节点到数十万个节点** ### 🚀 为什么选择 osctrl? 无论您是运行小型部署还是管理大规模集群,**osctrl** 都能让您可视化和控制 osquery endpoint,同时不会牺牲安全性或性能。 ## 👉 文档 您可以在 [https://osctrl.net](https://osctrl.net) 找到该项目的文档。 ## 🗂 项目结构 ``` osctrl/ ├── cmd/ # Service and CLI entrypoints │ ├── admin/ # osctrl-admin (legacy HTML UI + admin handlers/templates/static) │ ├── api/ # osctrl-api (REST API service) │ ├── cli/ # osctrl-cli (operator CLI) │ └── tls/ # osctrl-tls (osquery remote API endpoint) ├── frontend/ # React SPA frontend for the operator UI ├── pkg/ # Shared application packages │ ├── auditlog/ # Audit log manager │ ├── backend/ # DB manager/bootstrap │ ├── cache/ # Redis/cache managers │ ├── carves/ # File carve logic/storage integrations │ ├── config/ # Config structs/flags/validation │ ├── environments/ # Environment management │ ├── handlers/ # Shared HTTP handlers │ ├── logging/ # Log pipeline + logger backends │ ├── nodes/ # Node state/registration/cache │ ├── queries/ # Query management/scheduling/results │ ├── settings/ # Runtime settings │ ├── tags/ # Tag management │ ├── users/ # User and permissions management │ ├── utils/ # Utility helpers │ ├── types/ # Shared type definitions │ └── version/ # Version metadata ├── deploy/ # Deployment configs/scripts (docker/nginx/osquery/systemd, CI/CD, redis, config, helpers, etc.) ├── tools/ # Dev/release helpers and API test assets (Bruno collections, scripts) ├── bin/ # Built binaries (from make) ├── docker-compose-dev.yml # Local multi-service development stack ├── Makefile # Build/test/dev targets └── osctrl-api.yaml # OpenAPI specification for osctrl-api ``` ## 🏛 架构 ``` flowchart LR subgraph Clients["Clients"] Agents["osquery agents"] Ops["Operators"] Tools["Automation / CLI"] end subgraph Interfaces["Interfaces"] Tls["osctrl-tls"] Frontend["osctrl frontend"] Admin["osctrl-admin (legacy HTML UI)"] API["osctrl-api"] CLI["osctrl-cli"] end subgraph Core["Shared backend"] Shared["Shared packages (pkg/*)"] end subgraph Data["State and integrations"] DB["PostgreSQL backend"] Redis["Redis cache"] Logs["Log destinations"] Carves["Carve storage"] end Agents -->|TLS remote API| Tls Ops -->|Browser UI| Frontend Ops -.->|Legacy browser UI| Admin Tools -->|REST API| API Tools -->|CLI| CLI Frontend -->|HTTP API| API Admin -->|HTTP API| API CLI -->|HTTP API| API Tls --> Shared API --> Shared Admin --> Shared CLI --> Shared Shared --> DB Shared --> Redis Shared --> Logs Shared --> Carves CLI -.->|Direct DB mode| DB ``` ## 🛠 开发 开始 **osctrl** 开发最快的方式是使用 [Docker](https://www.docker.com/) 和 [Docker Compose](https://docs.docker.com/compose/)。您可以在下方找到其他方法。 ### 🐳 使用 docker 运行 osctrl 进行开发 您可以使用 docker 运行 **osctrl**,所有组件都定义在 `docker-compose-dev.yml` 文件中,该文件将所有组件组合在一起,以提供一个可用的部署。 docker 开发技术栈会暴露: - `https://localhost:8444` 用于前端 - `https://localhost:8443` 用于传统的 `osctrl-admin` HTML 界面 有关仅前端的开发详情,请参阅 [frontend/README.md](./frontend/README.md)。 最后,您只需执行 `make docker_dev`,它就会自动在本地 docker 中构建并运行 `osctrl`,以用于开发目的。 ### 🤖 使用配置脚本 使用提供的 `deploy/provision.sh` 脚本,您可以在本地机器上设置开发环境。该脚本将安装所有必要的依赖项,并在最新的 Ubuntu LTS 系统中配置 **osctrl** 开发环境。 查看[文档](https://osctrl.net/deployment/natively/)以获取有关如何使用配置脚本的更多详细信息。 最终,该脚本也可用于在生产系统中部署 **osctrl**,请参阅文档获取更多详细信息。 ### 🏗 从源码构建 要从源码构建 **osctrl**,请确保您已安装 [Go](https://golang.org/dl/)(建议使用 1.25 或更高版本)。然后,克隆存储库并运行以下命令: ``` git clone https://github.com/jmpsec/osctrl.git cd osctrl make ``` 这将编译所有 **osctrl** [组件](https://osctrl.net/components/)(`osctrl-tls`、`osctrl-admin`、`osctrl-api`、`osctrl-cli`),并将二进制文件放置在 `bin/` 目录中。 如果您正在开发新的操作员 UI,前端 SPA 位于 `frontend/` 目录中,并且是独立于 Go 二进制文件构建的。 ## 💬 Slack ## 📜 许可证 **osctrl** 采用 [MIT 许可证](https://github.com/jmpsec/osctrl/blob/master/LICENSE)授权。 ## 🧠 安全与报告 这是一个安全敏感型项目。请阅读 `SECURITY.md` 以了解漏洞报告和负责任的披露指南。
标签:EDR, EVTX分析, Go语言, osquery, 安全运营, 扫描框架, 搜索引擎查询, 日志审计, 测试用例, 程序破解, 终端管理, 网络测绘, 脆弱性评估, 请求拦截, 运维安全, 远程管理