Belal-Alqarni/Taraqqub-Shabaki

GitHub: Belal-Alqarni/Taraqqub-Shabaki

一个自托管的网络运营中心平台,集设备监控、网络发现、拓扑可视化、告警和规则式事件响应于一体,帮助运维团队集中管理私有网络基础设施。

Stars: 0 | Forks: 0

# 网络监控 | Taraqqub Shabaki [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/Belal-Alqarni/Taraqqub-Shabaki/actions/workflows/ci.yml) [![Release](https://img.shields.io/badge/release-v1.0.0-49b6ff)](https://github.com/Belal-Alqarni/Taraqqub-Shabaki/releases) [![License: MIT](https://img.shields.io/badge/License-MIT-45d483.svg)](LICENSE) [尝试在线公开演示](https://taraqqub-shabaki-demo.onrender.com) - 仅限查看者 模拟数据;免费实例唤醒可能需要一分钟时间。 将安全的网络监控、发现、告警、拓扑可视化以及 引导式的事件响应集成在一个自托管的 Network Operations Center 中。 ## 理念 **网络监控**是一个兼具教学与实用性的平台,可通过单一控制台 监控网络基础设施。它收集设备状态、响应延迟、丢包率和资源消耗, 发现经授权扫描的设备,展示网络拓扑和告警,并提供 系统化的故障诊断指南。 该项目不仅仅是一个 Ping 工具。其目标是构建一个 Control Plane,理念上接近 专业的 NOC 工具,同时在云平台与运行于 用户各自网络中的 Agent 之间实现安全隔离。 ![Taraqqub Shabaki dashboard](https://static.pigsec.cn/wp-content/uploads/repos/cas/ae/ae75644e216e2f3f4657b5ecd5966d77b48c82f97047eeb56a08f230efc16b58.png) ## 当前功能 | 领域 | 当前可用功能 | | --- | --- | | 监控 | 设备状态、延迟、丢包率、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, 可视化, 告警系统, 流量捕获, 版权保护, 网络拓扑, 自托管, 请求拦截, 运维平台, 逆向工具