sohu2723-star/aegis-soc-dashboard

GitHub: sohu2723-star/aegis-soc-dashboard

一个为红蓝对抗实验环境构建的全栈实时网络安全运营中心仪表板,用于集中监控攻击事件、管理安全告警并执行防御操作。

Stars: 0 | Forks: 0

# AEGIS Security Operations Center 仪表板 一个为 5 人实习团队构建的全栈实时网络安全 SOC(Security Operations Center)仪表板。用于实时监控 Red Team(Kali Linux)的攻击和 Blue Team(Ubuntu/Snort/Suricata/Fail2ban/Cowrie)的防御情况。 ## 功能 ### 安全监控 - **指挥中心** — 实时仪表板,包含攻击量图表、事件计数和关键威胁指标 - **安全事件** — 来自所有传感器(Snort、Suricata、Fail2ban、Cowrie)的实时事件流 - **事件管理** — 包含严重性跟踪和状态更新的事件管理 - **活动告警** — 包含确认/解决操作的告警分类面板 - **系统状态** — 所有防御组件的健康监控 ### 网络与防御 - **网络监控** — VirtualBox 实验环境(Kali、Ubuntu、Honeypot)的实时拓扑图、已连接主机表和 12 小时流量图表 - **防御中心** — 自动防御状态(Fail2ban、Suricata IDS)+ 管理员手动 IP 封禁/解封及完整的操作日志 ### 情报 - **报告** — 安全报告生成及历史记录 - **设置指南** — 将真实虚拟机连接到仪表板的分步说明 ## 架构 ``` ┌─────────────────────────────────────────────────────────┐ │ AEGIS Dashboard │ │ React + Vite + TailwindCSS + shadcn/ui │ │ Real-time via SSE streaming │ └───────────────────┬─────────────────────────────────────┘ │ HTTP / SSE ┌───────────────────▼─────────────────────────────────────┐ │ API Server │ │ Express 5 + TypeScript │ │ Routes: events, incidents, alerts, system, network, │ │ defense, ingest, stream, reports │ └───────────────────┬─────────────────────────────────────┘ │ Drizzle ORM ┌───────────────────▼─────────────────────────────────────┐ │ PostgreSQL Database │ │ Tables: security_events, incidents, alerts, │ │ system_status, reports, network_hosts, │ │ blocked_ips, defense_actions │ └─────────────────────────────────────────────────────────┘ ▲ │ POST /api/ingest/* (X-AEGIS-Key auth) ┌───────────────────┴─────────────────────────────────────┐ │ aegis_forwarder.py (on Ubuntu VM) │ │ Watches: Suricata eve.json, Snort alerts, │ │ Fail2ban.log, Cowrie cowrie.json │ └─────────────────────────────────────────────────────────┘ ▲ │ Attacks ┌───────────────────┴─────────────────────────────────────┐ │ Red Team — Kali Linux VM │ │ Tools: nmap, sqlmap, nikto, gobuster, hydra, metasploit│ └─────────────────────────────────────────────────────────┘ ``` ## 技术栈 | 层级 | 技术 | |---|---| | Frontend | React 18, Vite, TypeScript, TailwindCSS v4, shadcn/ui | | Backend | Express 5, Node.js 24, TypeScript | | Database | PostgreSQL + Drizzle ORM | | Validation | Zod, drizzle-zod | | API Codegen | Orval (OpenAPI → React Query hooks) | | Real-time | Server-Sent Events (SSE) | | Monorepo | pnpm workspaces | ## 项目结构 ``` aegis-soc-dashboard/ ├── artifacts/ │ ├── aegis-dashboard/ # React frontend │ │ └── src/ │ │ ├── pages/ # dashboard, events, incidents, alerts, │ │ │ # system, network, defense, reports, setup │ │ ├── components/ # layout, ui components │ │ └── hooks/ # use-sse, use-simulation │ ├── api-server/ # Express API server │ │ └── src/ │ │ ├── routes/ # events, incidents, alerts, system, │ │ │ # network, defense, ingest, stream, reports │ │ └── lib/ # broadcaster, simulator │ └── mockup-sandbox/ # Component preview (dev only) ├── lib/ │ ├── db/ # Drizzle ORM schema + migrations │ │ └── src/schema/ # security_events, incidents, alerts, │ │ # system_status, reports, network_hosts, │ │ # defense_actions │ ├── api-spec/ # OpenAPI specification │ ├── api-client-react/ # Generated React Query hooks │ └── api-zod/ # Generated Zod schemas ├── scripts/ │ └── src/ │ └── aegis_forwarder.py # Ubuntu VM sensor forwarder └── docs/ ├── SETUP.md # VM setup guide ├── API.md # API reference └── ARCHITECTURE.md # Architecture decisions ``` ## 快速开始 ### 前置条件 - Node.js 24+ - pnpm 9+ - PostgreSQL 数据库 ### 安装说明 ``` git clone https://github.com/sohu2723-star/aegis-soc-dashboard cd aegis-soc-dashboard pnpm install ``` ### 环境变量 ``` # 必填项 DATABASE_URL=postgresql://user:password@localhost:5432/aegis SESSION_SECRET=your-session-secret # Ingest API key(在生产环境中请更改!) AEGIS_INGEST_KEY=aegis-demo-key-change-me ``` ### 运行开发环境 ``` # API Server(端口 8080) pnpm --filter @workspace/api-server run dev # Dashboard(自动分配端口) pnpm --filter @workspace/aegis-dashboard run dev ``` ### 数据库 ``` # 将 schema 推送到 database pnpm --filter @workspace/db run push # 从 OpenAPI spec 重新生成 API hooks pnpm --filter @workspace/api-spec run codegen ``` ## 连接真实虚拟机 请参阅 [docs/SETUP.md](docs/SETUP.md) 获取完整的分步说明。 **快速摘要:** 1. Ubuntu 虚拟机 — 安装 Suricata、Fail2ban、Cowrie 2. 使用您的 AEGIS URL 和 API key 运行 `aegis_forwarder.py` 3. Kali 虚拟机 — 开始攻击,观察仪表板的实时更新 ## Ingest API Endpoints 所有 endpoint 都需要 `X-AEGIS-Key` header。 | Endpoint | 来源 | 描述 | |---|---|---| | `POST /api/ingest/event` | 任意 | 通用安全事件 | | `POST /api/ingest/snort` | Snort IDS | Snort 告警格式 | | `POST /api/ingest/suricata` | Suricata | EVE JSON 格式 | | `POST /api/ingest/fail2ban` | Fail2ban | 封禁/解封事件 | | `POST /api/ingest/cowrie` | Cowrie | Honeypot 会话事件 | ## 防御系统 ### 自动防御(Fail2ban + Suricata) - SSH 暴力破解 → Fail2ban 自动封禁 IP(1 小时) - 端口扫描 / 漏洞利用 → Suricata 丢弃数据包并发出告警 - Honeypot 登录 → Cowrie 记录攻击者凭证 ### 手动防御(仪表板) - 防御中心 → 输入 IP + 原因 → 封禁 IP - 可随时从活动封禁列表中解封 - 记录所有封禁/解封操作的完整审计日志 ## 团队 实习项目 — 5 人团队 - Red Team:Kali Linux 攻击模拟 - Blue Team:Ubuntu 防御、监控和事件响应 ## 许可证 MIT
标签:HTTP/HTTPS抓包, MITM代理, React, SSE, Syscalls, Web可视化, 安全运营中心, 态势感知, 插件系统, 测试用例, 网络映射, 自动化攻击, 蓝队监控, 逆向工具, 配置错误