DNC2004/Soc-Menu

GitHub: DNC2004/Soc-Menu

一个为安全运营中心(SOC)构建的Web门户,提供基础设施监控工具的集中访问和CAPEv2恶意软件分析报告的可视化展示与管理。

Stars: 1 | Forks: 0

# SOC Dashboard — ENIDH LEIC 2026 一个为三年级毕业设计“实时恶意软件实验室”构建的安全运营中心(SOC)Web 门户,提供基础设施监控工具的中心化枢纽和 CAPEv2 恶意软件分析仪表盘。 ## 目录 - [概述](#overview) - [功能](#features) - [技术栈](#technologies) - [架构](#architecture) - [项目结构](#project-structure) - [工作流](#workflow) - [快速开始](#getting-started) - [前置条件](#prerequisites) - [克隆仓库](#clone-the-repository) - [使用 Docker Compose 运行](#run-with-docker-compose) - [本地运行(不使用 Docker)](#run-locally-without-docker) - [API 参考](#api-reference) - [配置](#configuration) ## 概述 SOC Dashboard 是一个内部 Web 门户,它汇集了关键的安全工具,并在一个干净、可过滤的界面中展示 CAPEv2 恶意软件分析报告。它被设计为运行在内部网络上由 Proxmox 托管的 LXC 容器内。 ## 功能 - **主门户 (`index.html`)** — 基于磁贴的启动器,链接到 Proxmox、Wazuh Manager、CAPE Dashboard 和辅助模块。 - **CAPE 仪表盘 (`dashboard.html`)** — 显示存储的 CAPEv2 JSON 报告,具有风险评分、过滤、分页以及上传新报告的功能。 - **辅助模块 (`aux_mod.html`)** — 实用工具和文档(例如,日志转换器)。 - **自动刷新** — 仪表盘每 5 分钟轮询一次新数据。 - **文件上传** — 分析师可以直接从浏览器推送新的 `.json` 报告文件。 - **风险分类** — 报告会自动分类为高风险(评分 ≥ 7)、可疑(评分 4–6)或低风险(评分 < 4)。 ## 技术栈 | 层级 | 技术 | |---|---| | 前端 | HTML5, CSS3, Vanilla JavaScript | | 后端 | Node.js 20, Express 5 | | 文件上传 | Multer | | 反向代理 | Nginx | | 容器化 | Docker, Docker Compose | | 基础设施 | Proxmox VE (LXC container) | | 版本控制 | Git / GitHub | | 字体 | Google Fonts (Inter) | ## 架构 ``` Proxmox Host │ └── Debian 12 LXC Container (soc-menu) │ ├── Docker Compose │ │ │ ├── soc-menu (nginx container) │ │ ├── Serves static frontend files │ │ └── Proxies /api/* → soc-backend:3000 │ │ │ └── soc-backend (Node.js/Express container) │ ├── GET /api/analyses → reads JSON files from /Private │ └── POST /api/upload → saves new JSON reports to /Private │ └── /opt/soc-menu (Git repository, mounted into containers) ``` 两个容器共享同一个内部 Docker 网络(`soc-network`)。后端从不直接暴露给主机——所有流量都通过 Nginx 反向代理到达。 ## 项目结构 ``` Soc_Dashboard/ │ ├── docker/ │ ├── compose.yml # Docker Compose service definitions │ └── nginx/ │ └── default.conf # Nginx reverse proxy configuration │ ├── soc_backend/ │ ├── Dockerfile # Node.js 20 Alpine image │ ├── package.json # Dependencies: express, multer, cors │ ├── server.js # Express API server │ └── Private/ # JSON report storage (database) │ └── _report.json │ └── soc_frontend/ ├── index.html # Main portal / module launcher ├── dashboard.html # CAPEv2 analysis dashboard ├── aux_mod.html # Auxiliary modules page ├── Scripts/ │ └── dashboard.js # Dashboard logic (fetch, filter, render, upload) ├── Styles/ │ ├── main_style.css # Main portal styles │ └── dashboard.css # Dashboard styles ├── Images/ # Logos and icons └── Files/ # Downloadable agent installers and scripts ├── wazuh_agent.sh ├── wazuh_agent.bat ├── linux_per.sh └── power_shell.bat ``` ## 工作流 ``` Developer Machine │ ├── Edit files locally ├── git add . ├── git commit -m "message" └── git push │ ▼ GitHub Repository │ └── (SSH into LXC) git pull │ ▼ /opt/soc-menu (on LXC) │ ▼ Docker Compose (auto-mounts directory) │ ▼ soc-menu nginx container serves updated files ``` 因为前端目录作为只读卷挂载到 Nginx 容器中,所以在主机上执行 `git pull` 就足以部署更改——无需重启容器。 ## 快速开始 ### 前置条件 - [Git](https://git-scm.com/) - [Docker](https://docs.docker.com/get-docker/) 和 [Docker Compose](https://docs.docker.com/compose/) - Node.js 20+(仅在不用 Docker 进行本地开发时需要) ### 克隆仓库 ``` git clone https://github.com/DNC2004/Soc_Dashboard.git cd Soc_Dashboard ``` ### 使用 Docker Compose 运行 ``` cd docker docker compose up -d ``` 该门户将通过 `http://localhost` 访问。 停止服务: ``` docker compose down ``` 查看日志: ``` docker compose logs -f ``` ### 本地运行(不使用 Docker) **后端:** ``` cd soc_backend npm install node server.js # API 可通过 http://localhost:3000 访问 ``` **前端:** 使用任何静态文件服务器来托管 `soc_frontend` 目录,例如: ``` npx serve soc_frontend -l 8080 # 站点可通过 http://localhost:8080 访问 ``` ## API 参考 后端暴露了两个 endpoint,都通过 Nginx 在 `/api/` 下进行代理。 ### `GET /api/analyses` 返回存储在 `soc_backend/Private/` 中的所有 CAPEv2 JSON 报告的数组。 **响应:** `200 OK` — 包含报告对象的 JSON 数组。 ``` [ { "info": { "id": 37, "score": 8.5, "started": "2026-06-02T12:05:00Z" }, "target": { "file": { "name": "malware.exe", "sha256": "abc123..." } }, "signatures": [ ... ] } ] ``` ### `POST /api/upload` 将新的 `.json` 报告文件上传到 `soc_backend/Private/`。 **请求:** `multipart/form-data`,包含一个 `file` 字段。 **响应:** `200 OK` ``` { "success": true } ``` ## 配置 ### Nginx (`docker/nginx/default.conf`) - 监听 80 端口。 - 从 `/usr/share/nginx/html` 提供静态文件(映射到 `soc_frontend/`)。 - 将所有 `/api/*` 请求代理到 `soc-backend:3000`。 - `client_max_body_size` 设置为 **50 MB**,以适应大型报告的上传。 ### Docker Compose (`docker/compose.yml`) | 服务 | 镜像 | 端口 | 卷 | |---|---|---|---| | `soc-menu` | nginx | 80:80 | `soc_frontend/` → `/usr/share/nginx/html` (只读) | | `soc-backend` | Node.js 20 Alpine (本地构建) | 仅限内部 | `soc_backend/Private/` → `/app/Private` | 两个服务通过内部的 `soc-network` 桥接网络进行通信。 *ENIDH — LEIC 2026 — 三年级毕业设计*
标签:CAPEv2, DAST, Docker, Express, GNU通用公共许可证, Node.js, Web门户, 后端开发, 安全运营中心, 安全防御评估, 恶意软件分析, 版权保护, 网络映射, 请求拦截