一款无需安装 Agent 的 Windows 桌面端 SOC 与 GRC 平台,通过 SSH 即可实现对 Linux 主机、39 种数据库的统一监控及合规与威胁分析。

# SHOK
**无 Agent 的 SOC 与 GRC 平台 — 支持 Linux、Docker、39 种数据库及通过 SSH 的威胁情报**
[](https://github.com/kiurakku/shok-monitor/releases)
[](LICENSE)
[](https://github.com/kiurakku/shok-monitor/releases)
[](https://www.electronjs.org/)
[](https://react.dev/)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
[](https://github.com/kiurakku/shok-monitor/releases)
[](https://github.com/kiurakku/shok-monitor/stargazers)
[](https://github.com/kiurakku/shok-monitor/issues)
[](https://github.com/kiurakku/shok-monitor/commits/main)
[⬇️ 下载 v1.4.0](https://github.com/kiurakku/shok-monitor/releases/latest) · [🐛 报告 Bug](https://github.com/kiurakku/shok-monitor/issues/new) · [📖 快速开始](#-quick-start)
## ✨ 关于
**SHOK** 是一款 Windows 桌面应用,能将你的 SSH 密钥环转变为功能完整的 **SOC 与 GRC 工作站** — 基础设施监控、数据库访问、安全态势、威胁情报、合规与审计,全部无需 Agent。远程机器上无需安装任何东西 — 仅需 SSH(端口 22)。
| | |
|---|---|
| 🖥️ **平台** | Windows 10/11(可直接运行的 `.exe`) |
| 🔌 **连接** | SSH 密钥或密码 |
| 🐳 **基础设施** | 主机、Docker 容器、网络、卷、终端 |
| 🗄️ **数据库** | 39 种引擎 — 查询、浏览、REST 控制台 |
| 🛡️ **SOC** | 安全态势、实时威胁情报 + geo-IP、事件 |
| ⚖️ **GRC** | CIS/NIST/ISO 合规控制、认证、审计日志 |
| 🌍 **语言** | 乌克兰语、英语、俄语、波兰语、中文 |
| 🎨 **主题** | 16 种颜色主题 + 亚克力玻璃窗口 |
| 🔒 **安全** | 引擎仅监听 `127.0.0.1`,无 Agent |
## 🆕 v1.4.0 中的新特性
- **🎯 威胁情报** — 对 `auth.log` / journald 进行实时分析:显示带有 **geo-IP**(国家 · 城市 · ISP)的顶级攻击 IP、被针对的用户名、攻击地理位置以及成功登录审查。支持实时自动刷新。
- **🚨 自动事件** — 后台监控程序会在失败的 SSH 登录超过可配置阈值(暴力破解检测)时自动创建事件,并按主机进行去重。
- **🛡️ 安全态势** — 根据监听端口、会话、失败登录、防火墙、待更新、SUID 以及 SSH 加固(`PermitRootLogin`、`PasswordAuthentication` 等)计算每个主机的风险评分。
- **⚖️ 合规 (GRC)** — 通过 SSH 检查 15 项自动化的 CIS/NIST 控制 + 手动治理认证,并提供总体评分和框架标签。
- **📜 审计日志** — 仅追加、可搜索的所有操作记录,可导出为 CSV — 作为审计的证据。
- **🎨 设计系统 v2** — 分组导航(监控 / SOC / GRC / 系统)、KPI 磁贴、评分环、风险徽章、抽屉、16 种主题。
## 📸 功能
|
### 📊 SOC 仪表盘
整个资产环境的统一面板 — KPI、各主机风险、整体态势环、最新事件与活动。
### 🖥️ 监控
每台主机的实时 CPU、RAM、磁盘、负载和运行时间。Docker 容器(启动/停止/重启/删除)、网络、卷、实时日志、内置 SSH 终端 (xterm.js)。
### 🗄️ 数据库
通过 SSH 隧道连接 39 种引擎 — 分类选择器、表浏览与编辑、SQL/NoSQL 查询、REST 控制台、**在服务器上查找**自动发现。
### 🎯 威胁情报
实时 `auth.log` / journald 分析:带有 **geo-IP** 的顶级攻击 IP、攻击地理位置、被针对的用户名、成功登录审查。
|
### 🛡️ 安全态势
每台主机的风险评分:监听端口、会话、失败登录、防火墙、待更新、SUID、SSH 加固 — 附带可操作的发现。
### 🚨 事件
具有严重性、状态工作流、主机关联和完整时间线的事件登记册。在达到暴力破解阈值时**自动创建**。
### ⚖️ 合规 (GRC)
通过 SSH 进行 15 项自动化的 CIS/NIST 控制 + 手动治理认证,提供总体评分以及 ISO/NIST/CIS 框架标签。
### 📜 审计
仅追加、可搜索的操作日志 — 作为审计和调查的证据,支持一键导出为 CSV。
### ⚙️ 设置
5 种语言、16 种主题、亚克力窗口、UI 缩放、威胁阈值、geo-IP 开关 — 本地存储。
|
## 🗄️ 数据库引擎
### 完整支持(查询 + 浏览)
| 家族 | 引擎 |
|--------|---------|
| **PostgreSQL** | PostgreSQL, TimescaleDB, CockroachDB, YugabyteDB, QuestDB, Redshift (自托管) |
| **MySQL** | MySQL, MariaDB |
| **Redis** | Redis, KeyDB, Valkey, Dragonfly |
| **文档型** | MongoDB |
| **SQLite** | 通过 SSH 进行本地 WASM 浏览(只读;文件加载到内存中) |
### REST 控制台(HTTP 适配器)
Elasticsearch · OpenSearch · CouchDB · ClickHouse · Meilisearch · Typesense · Qdrant · Weaviate · Chroma · ArangoDB · InfluxDB · Prometheus
### 即将推出(需要专用驱动)
MS SQL · Oracle · Cassandra · ScyllaDB · Neo4j · Memgraph · Memcached · Milvus
### 云端(供应商 API 密钥 — 不支持通过 SSH)
DynamoDB · BigQuery · Snowflake · Firebase · Firestore · Pinecone · Neptune
## 🛡️ SOC 与 GRC
以下所有功能均运行在**通过 SSH 收集的真实数据**之上 — 无需 Agent,服务器上无需安装任何东西。
| 模块 | 功能 | 框架 |
|--------|--------------|-----------|
| **安全态势** | 根据开放端口、会话、失败登录、防火墙、更新、SUID、SSH 加固计算风险评分 | — |
| **威胁情报** | 来自 `auth.log`/journald 的顶级攻击 IP,geo-IP(国家 · 城市 · ISP)、被针对的用户名、攻击地图 | — |
| **事件** | 包含严重性、状态工作流、时间线的登记册;在达到暴力破解阈值时**自动创建** | NIST IR |
| **合规** | 自动化的 SSH 加固 / 防火墙 / 自动更新 / auditd / 时间同步检查 + 手动认证 | CIS · NIST · ISO 27001 |
| **审计** | 带有 CSV 导出功能的仅追加操作日志 — 给审计人员的证据 | NIST AU |
**自动事件规则** — 当 24 小时内失败的 SSH 登录次数超过可配置阈值(默认为 `300`)时,将自动创建事件并按主机进行去重。可以在 **Settings → Threats** 中切换和调整。
## ⬇️ 安装
### 预构建版本(推荐)
1. 从 [Releases](https://github.com/kiurakku/shok-monitor/releases) 下载 [`SHOK-v1.4.0-win.zip`](https://github.com/kiurakku/shok-monitor/releases/latest)
2. 解压存档
3. 运行 `SHOK.exe`
### 从源码构建
```
git clone https://github.com/kiurakku/shok-monitor.git
cd shok-monitor
npm install
npm run build
npm run dist:win # → release/win-unpacked/SHOK.exe
```
## 🚀 快速开始
1. 启动 **SHOK**
2. 转到 **Hosts → Add host**
3. 输入 IP、用户名和认证方式:
- **SSH 密钥** *(推荐)*: `C:\Users\User\.ssh\id_ed25519`
- **密码**: 标准 SSH 密码
4. 点击 **Test connection** → **Add**
几秒钟内,你就会看到实时指标、容器和网络。接下来可以探索:
- **Databases → Find on server** — 自动检测 PostgreSQL、Redis、SQLite 文件等。
- **Security** / **Threats** — 获取即时风险评分,并查看谁在暴力破解你的 SSH(附带 geo-IP)。
- **Compliance** — 通过 SSH 运行 CIS/NIST 检查并认证治理控制。
## 🏗️ 架构
```
┌──────────────────────────────────────────────────┐
│ Electron (SHOK.exe) │
│ ┌──────────────┐ ┌──────────────────────┐ │
│ │ React UI │◄────►│ Node.js Engine │ │
│ │ (Vite) │ WS │ (127.0.0.1) │ │
│ └──────────────┘ └──────────┬───────────┘ │
└───────────────────────────────────┼──────────────┘
│ SSH (port 22)
┌──────────┴──────────────┐
│ Linux Server(s) │
│ /proc · docker · db │
│ auth.log · sshd · ss │
└──────────────────────────┘
```
- 每台主机**维持一个持久的 SSH 连接**(多路复用),每个任务使用独立的通道
- **指标:** 每次轮询运行单个脚本(`/proc/stat`、`free`、`df`、`docker ps/stats`);在单次 SSH 往返中获取 CPU 增量
- **数据库:** 将 SSH 端口转发到本地驱动程序(pg、mysql2、ioredis、mongodb)或用于 REST 引擎的 HTTP 代理
- **SQLite:** 通过 SSH 流式传输文件(base64) → 使用 `sql.js` WASM 在本地打开(只读)
- **SOC/GRC:** `security.js`、`threats.js`、`compliance.js` 通过 SSH 运行加固的单遍扫描脚本;通过批量查询解析 geo-IP;自动事件监控程序每 5 分钟扫描一次
## 🛠️ 开发
| 命令 | 描述 |
|---------|-------------|
| `npm run dev` | 带有 HMR 的前端(需要运行 `server`) |
| `npm run server` | 独立的引擎,会自动打开浏览器 |
| `npm run app` | 开发模式下的 Electron |
| `npm run build` | 构建前端 → `dist/` |
| `npm run dist:win` | 构建 `SHOK.exe` → `release/win-unpacked/` |
`ШОК.bat` — 在不使用 Electron 的情况下通过浏览器启动的备用方案。
### 环境要求
- **Windows 10/11**(预构建的 exe 无需其他要求)
- **Node.js 18+**(用于开发)
- 带有 SSH 的 **Linux 服务器**;Docker 和数据库为可选项
## 🔐 数据与安全
| 内容 | 位置 |
|------|-------|
| 主机 / 数据库 / 事件 / 审计 | `%APPDATA%\shok-monitor\config\`(仅限本地) |
| 密码 | 以明文形式存储 — **请使用 SSH 密钥** |
| 出站流量 | 无,除了可选的 geo-IP 查询(仅针对攻击者的公网 IP) |
## 📁 项目结构
```
shok-monitor/
├── electron/ # Electron main process (acrylic window)
├── server/ # Node.js SSH engine
│ ├── collector.js # Host metrics (single-pass CPU delta)
│ ├── db.js # 39 DB engines, tunnels, REST/SQLite
│ ├── engines.js # Engine registry
│ ├── security.js # SOC — host posture
│ ├── threats.js # SOC — auth.log threat intel
│ ├── geoip.js # Geo-IP batch lookup + cache
│ ├── compliance.js # GRC — CIS/NIST controls
│ └── config.js # Hosts, DBs, incidents, audit, SOC config
├── src/
│ ├── pages/ # Dashboard, Security, Threats, Incidents,
│ │ # Compliance, Audit, Database, Hosts, …
│ ├── components/ui.tsx # Design system v2
│ └── lib/ # api, engines, i18n (5 langs), settings
├── buildResources/ # App icon
└── .github/assets/ # Banner, logo, social preview
```