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可视化, 安全运营中心, 态势感知, 插件系统, 测试用例, 网络映射, 自动化攻击, 蓝队监控, 逆向工具, 配置错误