JackForest84/netwatch

GitHub: JackForest84/netwatch

NetWatch是一个被动式家庭网络安全仪表板,用于监控和评估网络安全。

Stars: 0 | Forks: 0

# NetWatch 🛡️ **一个自托管的、被动式家庭网络安全仪表板。** 它将WAN流量镜像到入侵检测系统(IDS),将每个检测到的攻击者与防火墙的判断结果关联起来,用威胁情报丰富它们,并实时显示所有信息——**而不坐在数据路径中**。 ![NetWatch — 概览](https://raw.githubusercontent.com/JackForest84/netwatch/main/docs/img/overview.png) ## 为什么 互联网上的每个公共IP地址都全天候被扫描。我想**看到**我自己的线路上的这种背景辐射,**证明**外围防御是有效的,并了解整个堆栈的端到端。NetWatch每块面板都回答一个诚实的问题——并且拒绝显示它实际上无法测量的数字。 ## 它的功能 - **被动IDS** — MikroTik通过TZSP镜像WAN端口 → 重放到虚拟接口 → **Suricata** (~50k ET规则)。零内联风险。 - **结果关联** — 每个IDS检测到的攻击者IP地址都与防火墙的丢弃日志(通过**远程syslog**无损传输)进行匹配: *检测到 → 确认丢弃 → 达到服务(0)*。 - **威胁情报** — 攻击者IP地址通过**VirusTotal + AbuseIPDB**丰富,使用**MaxMind**进行地理定位,在3D D3攻击球上绘制。 - **真实设备级互联网** — MikroTik **流量流(NetFlow v9)** → 一个自定义收集器,将上下行分配到每个设备 *跨NAT*(postNAT字段226)。 - **DNS** — **AdGuard Home** 统计数据,带有自采样每小时历史记录,因此任何时间窗口都可以进行协调(不仅仅是AdGuard的固定时间窗口)。 - **实时网络图** — 精选拓扑(D3)+ 设备清单合并自MikroTik DHCP/ARP和UniFi。 - **诚实原则** — 如果一个指标无法有信心地进行测量,则不显示(参见ADR 0003)。 ## 截图 **安全** — 检测 → 防火墙结果,意图/严重程度分解,威胁情报羞耻墙: ![安全标签](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/ced1c77b25233341.png) **服务** — 组件健康 & 快速链接: ![服务标签](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/558196258d233347.png) ## 架构 ``` Internet ─▶ MikroTik (WAN) ──TZSP mirror──▶ dummy0 ──▶ Suricata ──▶ eve.json ─▶ EveBox │ └─▶ NetWatch (SQLite) ├─ REST ─┐ UniFi · AdGuard · ntopng ─┼──▶ FastAPI backend ──▶ Jinja2 + vanilla JS + D3 + Chart.js VirusTotal · AbuseIPDB ───┘ │ MikroTik Traffic-Flow (NetFlow) ─▶ collector ─┘ MikroTik firewall log ─▶ remote syslog ─▶ collector ``` **堆栈:** Python · FastAPI · SQLite (WAL) · D3 · Chart.js · Tailwind (编译)。 后台线程处理轮询、丰富、NetFlow和syslog摄取。 ## 有趣的部分——工程决策(ADRs) *为什么* 以ADRs的形式存在于[`docs/decisions/`](docs/decisions/): | ADR | 决策 | |-----|----------| | 0001 | 通过TZSP WAN镜像进行被动IDS(观察,不内联) | | 0003 | 流量指标**诚实** — 不显示无法测量的数字 | | 0004 | 警报**意图**分类(真实信号与阻止列表辐射) | | 0005 | IDS ↔ 防火墙**结果**关联(以及为什么不是Wazuh) | | 0006 | 精选拓扑层次结构 | | 0007 | 通过NetFlow进行设备级互联网(跨NAT的归属技巧) | | 0008 | 通过采样AdGuard的数组进行DNS每小时历史记录 | | 0009 | 通过远程syslog进行无损防火墙丢弃捕获 | ## 它故意不做什么 - 它是**被动的**——它观察;MikroTik防火墙执行阻止。 - 它只看到**WAN镜像**——不是隧道(Cloudflare / Tailscale)或纯内部LAN流量。 - 它是一个实验室工具:表单登录 + systemd加固,但**将其放在VPN或反向代理后面**——不要暴露其原始状态。 ## 运行它 ``` cp .env.example .env # set your endpoints pip install -r requirements.txt # 将凭证放入 $NETWATCH_CONFIG_DIR(或 NETWATCH_* 环境变量) uvicorn app:app --host 0.0.0.0 --port 8889 ``` 在网络方面,您需要一个MikroTik TZSP WAN镜像 + Suricata,以及可选的流量流(按设备)和远程syslog(防火墙丢弃)。请参阅 [`docs/runbooks/`](docs/runbooks/) 和 [`docs/services/`](docs/services/). ## 注意 来自我的实验室的参考实现——IP地址、主机名、凭据和设备目录已被**清理**。根据您的网络进行修改。不提供任何保证。 **许可证:** MIT.
标签:AdGuard, AV绕过, DEF CON 演示, DNS枚举, DNS过滤, DNS通配符暴力破解, FastAPI, IP地址监控, MikroTik, ntopng, PFX证书, Suricata, TCP/IP协议栈, VivaGraphJS, 地理定位, 威胁情报, 实时数据, 家庭网络, 开发者工具, 攻击检测, 数据可视化工具, 数据展示, 流量捕获, 深度包检测, 现代安全运营, 红队, 网络威胁情报, 网络安全, 网络安全分析, 网络安全工具, 网络安全平台, 网络安全监控, 网络安全策略, 网络安全解决方案, 网络安全评估, 网络安全防护, 网络安全防护工具, 网络安全防护平台, 网络安全防护解决方案, 网络性能监控, 网络拓扑, 网络流量, 网络设备管理, 被动式安全, 远程日志, 逆向工具, 防火墙, 隐私保护, 驱动开发