Belal-Alqarni/Taraqqub-Shabaki
GitHub: Belal-Alqarni/Taraqqub-Shabaki
一个自托管的网络运营中心平台,集设备监控、网络发现、拓扑可视化、告警和规则式事件响应于一体,帮助运维团队集中管理私有网络基础设施。
Stars: 0 | Forks: 0
# 网络监控 | Taraqqub Shabaki
[](https://github.com/Belal-Alqarni/Taraqqub-Shabaki/actions/workflows/ci.yml)
[](https://github.com/Belal-Alqarni/Taraqqub-Shabaki/releases)
[](LICENSE)
[尝试在线公开演示](https://taraqqub-shabaki-demo.onrender.com) - 仅限查看者
模拟数据;免费实例唤醒可能需要一分钟时间。
将安全的网络监控、发现、告警、拓扑可视化以及
引导式的事件响应集成在一个自托管的 Network Operations Center 中。
## 理念
**网络监控**是一个兼具教学与实用性的平台,可通过单一控制台
监控网络基础设施。它收集设备状态、响应延迟、丢包率和资源消耗,
发现经授权扫描的设备,展示网络拓扑和告警,并提供
系统化的故障诊断指南。
该项目不仅仅是一个 Ping 工具。其目标是构建一个 Control Plane,理念上接近
专业的 NOC 工具,同时在云平台与运行于
用户各自网络中的 Agent 之间实现安全隔离。

## 当前功能
| 领域 | 当前可用功能 |
| --- | --- |
| 监控 | 设备状态、延迟、丢包率、CPU、内存和流量指标 |
| 发现 | 授权的 Nmap 发现,仅限于最大 `/24` 的私有 IPv4 网络 |
| 拓扑 | 根据已知设备自动生成可视化拓扑图 |
| 告警 | 包含待处理和已确认事件的时间轴 |
| 事件顾问 | 基于规则的潜在原因分析及推荐修复步骤 |
| 访问控制 | 具备 `viewer`、`operator` 和 `admin` 角色的隔离工作区 |
| 网络 Agent | 可撤销的 token、私有 `/24` 发现以及通过出站 HTTPS 上报 |
| 公开演示 | 仅限查看者的模拟环境,禁用所有网络扫描功能 |
| 部署 | 强化的 Docker 镜像、Docker Compose、健康检查和 Render Blueprint |
事件顾问特意定位为**基于规则的** (rule-based)。真正的 LLM
集成是未来的里程碑,并非当前版本所宣称的功能。
## 发布模式
版本 `1.0.0` 是一个完整的自托管发行版。运维人员通过 Docker 运行控制
平面,并连接一个或多个仅支持出站通信的网络 agent。托管的 Render URL 仅作为作品集安全的演示,而不是托管型
的生产级 SaaS 服务。
## 用户角色
| 角色 | 权限 |
| --- | --- |
| Viewer | 查看控制台、设备、拓扑、告警和顾问结果 |
| Operator | 拥有 Viewer 权限,并可执行运维告警操作 |
| Admin | 用户配置、授权发现和管理员操作 |
公开注册由 `TARAQQUB_ALLOW_SIGNUP` 控制。每次注册都会创建一个
隔离的工作区和管理员帐号。由该管理员创建的团队成员帐号将保留在
同一个工作区内。
对于面向互联网的部署,在启用注册之前请先配置持久化存储。内置的免费 Render 演示环境始终禁用注册,因为其本地
SQLite 文件系统是临时的。
## 架构
```
flowchart LR
Browser["Browser dashboard"] -->|"Session cookie + CSRF"| API["FastAPI control plane"]
API --> DB[("Workspace-isolated data")]
API --> Advisor["Rule-based incident advisor"]
Agent["Local network agent"] -->|"Bearer token + HTTPS"| API
Agent --> Discovery["Authorized private /24 discovery"]
Discovery --> Network["User private network"]
```
公开的作品集部署仅使用模拟设备。它并没有
通向所有者私有网络的路由:
```
flowchart LR
Visitor["Public visitor"] -->|"HTTPS"| Demo["Render public demo"]
Demo --> Simulated[("Simulated data")]
Demo -.- Blocked["Discovery disabled for every account"]
```
控制平面绝不会主动发起连接进入用户的 LAN。本地
agent 仅会发现明确配置的私有 IPv4 子网,并
通过 HTTPS 出站发送经过批准的遥测数据。
## 安全控制
- 加盐的 PBKDF2 密码哈希和服务端会话存储。
- `HttpOnly` 和 `SameSite=Strict` 会话 cookie;在生产环境中使用 `Secure` cookie。
- 在改变状态的已验证请求上使用 CSRF token。
- 登录和公开演示的速率限制。
- 注册和 agent 报告的速率限制。
- 对设备、指标、告警、用户和 agent 进行工作区过滤。
- Agent token 仅以 SHA-256 哈希格式存储,且可随时撤销。
- Agent 报告仅限于私有 IPv4 地址,且每次报告最多 256 台设备。
- 对管理端和运维端 endpoint 进行角色检查。
- 新创建的用户必须强制更改密码。
- 密码更改后撤销会话。
- 内容安全策略 (Content Security Policy)、点击劫持防护、MIME 嗅探防护、
严格的权限策略,以及 API 响应的 `no-store`。
- 在发现之前进行私有网络允许列表验证。
- 在公开演示模式下完全禁用发现功能,对管理员也不例外。
- 非 root 的 Docker 用户、只读的根文件系统、丢弃所有 Linux capabilities,
并设置 `no-new-privileges`。
- Git 中排除了密钥、数据库、运行时数据和本地环境文件。
没有任何应用能保证绝对安全。本项目采用了
纵深防御控制措施,并在公开演示中剔除了主动扫描行为。
## 使用 Docker 运行
创建本地 `.env` 文件:
```
TARAQQUB_ADMIN_PASSWORD=replace-with-a-long-random-password
TARAQQUB_SECURE_COOKIES=false
TARAQQUB_ALLOW_SIGNUP=false
TARAQQUB_SCAN_NETWORK=192.168.1.0/24
TARAQQUB_SCAN_GATEWAY=192.168.1.1
```
仅配置您拥有或获得明确授权进行测试的网络。
```
docker compose up --build
```
打开 `http://127.0.0.1:8000` 并使用用户名 `admin` 及
来自 `TARAQQUB_ADMIN_PASSWORD` 的密码登录。Compose 仅将服务绑定到 localhost。
## 不使用 Docker 运行
```
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
$env:TARAQQUB_ADMIN_PASSWORD = "replace-with-a-long-random-password"
uvicorn app.main:app --reload
```
开发回退密码仅用于 localhost 开发。生产模式
拒绝使用该密码或短于 12 个字符的密码启动。
## 连接网络 Agent
1. 以工作区管理员身份登录。
2. 打开 **Network Agents** 并创建一个 token。该 token 仅显示一次。
3. 在授权网络内的机器上克隆此代码库。
4. 构建并运行 agent:
```
docker build -f Dockerfile.agent -t taraqqub-agent .
docker run --rm --read-only --cap-drop ALL `
--security-opt no-new-privileges `
-e TARAQQUB_SERVER_URL=https://your-taraqqub-server.example `
-e TARAQQUB_AGENT_TOKEN=the-one-time-token `
-e TARAQQUB_AGENT_NETWORK=192.168.1.0/24 `
-e TARAQQUB_AGENT_INTERVAL=60 `
taraqqub-agent
```
子网必须是私有 IPv4 且大小不能超过 `/24`。请仅使用您
拥有或获得明确授权监控的网络。如果 agent token 丢失,请立即在
控制台中将其撤销。
## 公开演示
内置的 `render.yaml` 会创建一个作品集安全的部署环境:
- HTTPS 和安全的 cookie。
- 自动生成的管理员密钥。
- 公开的 **Try public demo** 按钮。
- 仅限查看者的演示会话。
- 模拟的基础设施数据。
- 对所有帐号禁用发现功能。
- 通过 `/api/health` 进行健康检查。
将代码库连接到 Render Blueprint 以获取 HTTPS
`onrender.com` URL。如有需要,之后可以添加自定义域名。
## 仓库布局
```
app/
agents.py Agent tokens, authentication, rate limits, and ingestion
main.py FastAPI routes and security middleware
auth.py Authentication, sessions, roles, CSRF, and audit events
collectors.py Monitoring collectors
discovery.py Private-network validation and Nmap discovery
advisor.py Rule-based incident analysis
database.py SQLite schema and connection handling
services.py Devices, metrics, alerts, and topology services
static/ Dashboard and authentication UI
agent/
taraqqub_agent.py Outbound-only local network collector
Dockerfile Hardened application image
Dockerfile.agent Hardened local agent image
docker-compose.yml Local private deployment
render.yaml Safe public-demo deployment
CHANGELOG.md Version history
LICENSE MIT open-source license
```
## 路线图
1. 添加 PostgreSQL 生产环境存储和 schema 迁移。
2. 添加 SNMP 收集器和加密凭证存储。
3. 添加电子邮件、Telegram、Slack 和 Discord 通知渠道。
4. 添加 Packet Tracer 和 GNS3 实验环境配置。
5. 添加受审批控制的自愈 runbook。
6. 添加用于生成事件摘要的可选真实 LLM 集成。
7. 添加自动化测试、历史图表、报告和导出工作流。
## 负责任的使用
请仅对您拥有或获得明确书面授权进行测试的基础设施使用发现和
修复功能。请勿将本地扫描服务直接
暴露在互联网上。
标签:CTI, Mutation, 可视化, 告警系统, 流量捕获, 版权保护, 网络拓扑, 自托管, 请求拦截, 运维平台, 逆向工具