MeridianNIP/meridian

GitHub: MeridianNIP/meridian

将 DNS 诊断、IPAM 查询、威胁情报集成和网络监控聚合到一个 MFA 门禁之后的自托管 Web 门户,解决运维人员频繁在多种命令行工具和外部平台之间切换的痛点。

Stars: 1 | Forks: 0

Meridian NIP

自托管 DDI + 网络运维门户 · Apache 2.0
可免费用于任何用途 —— 个人、商业或衍生作品。
LICENSE · NOTICE · meridiannip.com

License: Apache 2.0 Latest release Downloads Self-hosted Python apt repo

版权所有 © 2026 MeridianNIP。**"MeridianNIP"** 名称和标志均为商标;根据 LICENSE 第 6 条的规定,分支和衍生作品必须使用不同的名称和标志。 ## 它是什么 Meridian 是一个门户,它将管理员日常执行的 DNS / DHCP / IPAM(即 "DDI")和网络运维工作整合到一个单一的 Web UI 中。它是一个**读取器和工具平台** —— 它会查询外部的 IPAM / DHCP / 目录源(如 Infoblox、NetBox、BlueCat、phpIPAM、ISC Kea、LDAP、Entra),运行诊断工具(DNS 传播、DNSBL、TLS 扫描、traceroute、端口扫描等),并为你提供一个按用户固定的仪表板。它**不会**在这些外部源上修改 DNS / DHCP / IPAM 数据。 ### 核心特性 - **DNS 工具**:支持多解析器传播的 dig、DNSSEC 链、区域健康检查、反向 DNS、WHOIS(单个 + 批量)、证书透明度 / crt.sh、AXFR 检查、域名仿冒生成器、DNS 刷新、邮件认证 (SPF/DKIM/DMARC) 分析器 - **网络工具**:ping、traceroute / MTR、端口扫描、数据包捕获 (tcpdump 文件捕获)、SNMP walk、ASN 查询、BGP Looking Glass、IP 地理位置、IP 信誉 (8 个 DNSBL)、HTTP 安全标头审计、**子网/超网计算器** - **威胁情报**:VirusTotal、Censys、Shodan、AbuseIPDB、GreyNoise、URLScan、Pulsedive —— 所有这些均根据[安全上限](app/safety/limits.py)进行了速率限制,因此配置错误的循环不会将你的安装武器化 - **监控**:HTTP、HTTPS、TCP、ICMP ping、证书过期、DNS 记录 —— 全部限制在 30 秒的下限(不会对你自己的目标发起 DDoS 攻击) - **按用户划分的仪表板**,包含 runbook、向导、固定工具、文件、链接、消息和报告 - **管理界面**:用户与 RBAC、范围管理器、集成、漏洞、系统健康状态 (按组件 /healthz)、队列检查 (Celery workers + redbeat 调度)、webhook + 邮件 + 短信通知渠道、带有持久 ignoreip 的 fail2ban 管理卡片、锁定申诉审查、备份与恢复、带有 HMAC 行链完整性的审计日志、面向用户的 GDPR 数据导出与删除、可自定义的品牌标识 - **安全性**:argon2id 密码、带有备用恢复码的 TOTP MFA、单会话强制执行、审计行哈希链、应用层 CSRF (双重提交 cookie)、在审计插入时进行 PII 脱敏、带有可配置 ADMIN_CIDR 允许列表的 fail2ban、AppArmor 配置文件、带有 HKDF-lite 域分离子密钥的 AES-256-GCM 保险库 - **可操作性**:`/metrics` Prometheus 端点、按组件划分的 `/healthz`、在队列 UI 中可见的计划任务、自动备份、根据策略保留的监控结果样本 ## 安装 提供五种支持的安装方式。请根据你的实际情况进行选择。 ### 快速开始 — VM 设备 (Hyper-V / VMware / KVM,最快) 预构建的 Meridian 虚拟机。下载 → 导入 → 开机 → 登录。无需安装 Debian,无需 apt 仓库,无需运行 `install.sh`。大约需要 5 分钟。 请选择你的虚拟机管理程序支持的磁盘格式: | 虚拟机管理程序 | 资产 | |---|---| | Hyper-V | [`meridian-nip-v1.0.0.vhdx.zst`](https://github.com/MeridianNIP/meridian/releases/latest/download/meridian-nip-v1.0.0.vhdx.zst) (1.1 GB;zstd 压缩,导入前需解压) | | VMware / VirtualBox | [`meridian-nip-v1.0.0.ova`](https://github.com/MeridianNIP/meridian/releases/latest/download/meridian-nip-v1.0.0.ova) (1.4 GB;直接导入) | | KVM / Proxmox | [`meridian-nip-v1.0.0.qcow2`](https://github.com/MeridianNIP/meridian/releases/latest/download/meridian-nip-v1.0.0.qcow2) (1.4 GB) | 使用 [`SHA256SUMS-appliance`](https://github.com/MeridianNIP/meridian/releases/latest/download/SHA256SUMS-appliance) 进行验证。 开机后,找到 DHCP 分配的 IP,在浏览器中访问 `https://`,使用 `admin` / `password` 登录(首次登录时会强制要求更改密码并注册 MFA)。每次构建时都会重新生成设备独享的密钥(主密钥、行-HMAC 密钥、SSH 主机密钥),因此同一网络上的两台设备无法相互冒充。 ### 快速开始 — `apt install` (Debian 12/13 主机) 最简短的安装路径。添加 MeridianNIP 的 apt 仓库,安装软件包,放入应答文件,然后运行安装程序: ``` # Debian minbase 不附带 curl 或 gpg — 请先安装它们: sudo apt update && sudo apt install -y curl gpg ca-certificates curl -fsSL https://meridiannip.com/meridiannip.gpg \ | sudo gpg --dearmor -o /usr/share/keyrings/meridiannip-archive-keyring.gpg echo "deb [signed-by=/usr/share/keyrings/meridiannip-archive-keyring.gpg] https://meridiannip.com/apt stable main" \ | sudo tee /etc/apt/sources.list.d/meridian.list sudo apt update sudo apt install meridian-nip # 然后暂存 answers 文件: sudo cp /opt/meridian/answers.example.env /etc/meridian/answers.local.env sudo $EDITOR /etc/meridian/answers.local.env # 并启动 install.sh: sudo /opt/meridian/install.sh --unattended --config /etc/meridian/answers.local.env ``` 未来的版本可以通过 `sudo apt upgrade meridian-nip` 获取。签名密钥指纹为:`5072 F226 10C9 2331 A8E2 428C EE4D C4BD 960D 8B36`。 ### 快速开始 — ISO (Hyper-V / VMware / VirtualBox) 对于 Windows 用户或希望跳过 Debian 安装步骤的任何人,发布版本中还提供了一个预构建的**注入了 preseed 的 Debian 13 ISO**,作为 GitHub Release 资产: - **最新发布版本**:https://github.com/MeridianNIP/meridian/releases/latest - **直接下载 ISO**:https://github.com/MeridianNIP/meridian/releases/latest/download/debian-13.4.0-amd64-meridian-unattended.iso - **验证**:从同一个 Release 页面下载 `SHA256SUMS` 并运行 `sha256sum -c SHA256SUMS` 也支持使用 `scripts/repack-preseed-iso.sh` 自行重建 ISO —— 请参阅以下各种途径中的相关提示。如果你希望将自己的 SSH 公钥植入 preseed 中,此功能会非常实用 (`MERIDIAN_AUTHORIZED_KEY_FILE=...`)。 ### 方式 1 — Hyper-V (Windows 主机,免干预) 最适合使用 Hyper-V 管理器的 Windows 用户。引导脚本将构建一个第二代虚拟机,挂载注入 preseed 的 ISO,并自动完成后续步骤。从 `Start-VM` 到可通过 SSH 连接的 Debian 大约需要 10 分钟。 **要求:** 启用了 Hyper-V 功能的 Windows 10/11 专业版/企业版、管理员权限的 PowerShell、连接到局域网的 Hyper-V 虚拟交换机 (默认为 `WSL-Bridge`)。 ``` # 1. Clone 或复制源码(您将需要 install.sh + answers.example.env) git clone https://github.com/MeridianNIP/meridian.git cd meridian # 2. 获取注入了 preseed 的 ISO。最简单的方法:下载最新 release。 Invoke-WebRequest ` -Uri "https://github.com/MeridianNIP/meridian/releases/latest/download/debian-13.4.0-amd64-meridian-unattended.iso" ` -OutFile "C:\VMs\ISOs\debian-13.4.0-amd64-meridian-unattended.iso" # 或者:使用 WSL + xorriso 从源码重新构建: # sudo apt install xorriso # MERIDIAN_AUTHORIZED_KEY_FILE=~/.ssh/id_ed25519.pub ./scripts/repack-preseed-iso.sh # 3. 启动 VM (Windows 管理员 PowerShell) ./scripts/hyperv-bootstrap.ps1 ` -VMName meridian ` -Unattended ` -IsoPath "C:\VMs\ISOs\debian-13.4.0-amd64-meridian-unattended.iso" # 等待大约 10 分钟以完成 Debian 的安装 + 重启。 # 4. 从 Linux/WSL shell 中,准备您的本地 answers 文件然后推送。 # 仓库附带 answers.example.env 作为模板;复制一份 # 并进行编辑以匹配您的环境 (PORTAL_DOMAIN, STATIC_IP, # ADMIN_CIDR, 等等): cp answers.example.env answers.local.env $EDITOR answers.local.env # 推送源码 + 运行 install.sh: rsync -az ./ admin@:~/meridian/ ssh admin@ 'sudo rm -rf /opt/meridian && \ sudo mv ~/meridian /opt/meridian && \ sudo chown -R root:root /opt/meridian && \ sudo chmod 0755 /opt/meridian && \ sudo /opt/meridian/install.sh --unattended --config /opt/meridian/answers.local.env' ``` 植入 preseed ISO 的默认配置: - OS 账号:`admin` / `meridiannip` (在首次通过 SSH 登录时更改) - 门户管理员:`admin` / `password` (首次在浏览器登录时会强制要求更改密码并注册 MFA) - 主机名:`meridiannip` (如果你运行了多个实例,可以通过 `answers.local.env` 覆盖) - 静态 IP:由 `install.sh` 根据应答文件中的 `STATIC_IP` 进行配置 ### 方式 2 — VMware Workstation / Fusion / ESXi (或 VirtualBox) 相同的注入了 preseed 的 ISO 也可以在 VMware 等同于第二代 (UEFI) 的虚拟机以及启用 EFI 的 VirtualBox 中启动。一个构件即可覆盖这三种虚拟机管理程序。 ``` 1. Download the ISO from the latest release (see Quick start above) — OR rebuild it on a Linux/WSL host with scripts/repack-preseed-iso.sh 2. Copy the .iso to the VMware host 3. New VM: - Guest OS: Debian GNU/Linux 13 (64-bit) - Firmware: UEFI (Gen 2) — Secure Boot OFF - Disk: 40 GB dynamic - Memory: 4 GB fixed - vCPUs: 2 - Network: Bridged - CD/DVD: attach the .iso, set boot from CD first 4. Power on. Walk away for ~10 minutes. 5. SSH in as admin / meridiannip 6. rsync source + run install.sh (as in Path 1, step 4) ``` VirtualBox:相同的流程。请务必在 Settings → System → Motherboard 中启用 EFI。必须使用桥接网络,以便虚拟机能获取到局域网 IP。 ### 方式 3 — 原始 Debian 13 (或 12) 适用于物理硬件、现有的 Debian/Ubuntu 虚拟机,或任何你不想使用我们的 preseed 的场景。 **要求:** Debian 13 (主要目标) 或 Debian 12 (备选方案)。最低 4 GB 内存,20 GB 可用磁盘空间,需要互联网连接以使用 apt。 ``` # 全新 Debian 13 安装,包含 sshd + 标准工具 tasks。 # 创建一个具备 sudo 权限的用户(随意命名;install.sh 会通过 # $SUDO_USER 检测运行操作者,并将其接入 ddi-ssh)。 # 1. 将源码 Clone 到主机上 git clone https://github.com/MeridianNIP/meridian.git /tmp/meridian-src sudo mkdir -p /opt/meridian sudo cp -a /tmp/meridian-src/. /opt/meridian/ sudo chown -R root:root /opt/meridian # 2. 编辑 answers 文件(或使用示例) sudo cp /opt/meridian/answers.local.env /opt/meridian/answers.env sudo nano /opt/meridian/answers.env # - 设置 PORTAL_DOMAIN,如果需要固定 IP 则设置 STATIC_IP,将 ADMIN_CIDR # 设置为您的管理员工作站子网,等等。 # 3. 运行安装程序 cd /opt/meridian sudo ./install.sh --unattended --config /opt/meridian/answers.env # 或者以交互模式运行(将会在每次有意义的选择时给出提示并附带 # 说明): sudo ./install.sh # 4. 浏览至 https:///ui/login # 默认 portal 管理员:admin / password(首次登录时请修改密码 + 启用 MFA) ``` ### 常见的安装后步骤 - 立即更改门户管理员密码,注册 MFA,生成备用恢复码 - 进入 `Admin → Branding` 设置标志、颜色、组织名称、支持联系方式 - 进入 `Admin → Integrations` 连接配置 AD/LDAP、Entra、Infoblox、NetBox 以及通知渠道 - 进入 `Admin → Scope Manager` 仅启用你的团队需要使用的功能 - 进入 `Admin → Queues` 确认计划任务正在正常触发执行 - 一旦所有组件启动完毕,`/healthz` 应该会返回包含 `"status":"ok"` 的 JSON 数据 ## 运维操作 - **备份**:`sudo /opt/meridian/scripts/backup.sh` (默认通过 cron 每日运行)。恢复命令:`sudo /opt/meridian/scripts/restore.sh ` - **备份冒烟测试**:`sudo /opt/meridian/scripts/smoke-backup-restore.sh` 会演练完整的备份 → 打包 → dry-run 恢复的流程。在任何与备份相关的更改后请运行此脚本。 - **诊断 (Doctor)**:`sudo /opt/meridian/venv/bin/python -m app.cli doctor` 用于飞行前诊断 - **迁移**:`sudo /opt/meridian/scripts/migrate.sh` 会应用所有待定的数据库模式变更。install.sh 会自动运行此脚本;如需升级,请使用 `sudo /opt/meridian/install.sh --upgrade` - **Fail2ban 管理**:通过 `Admin → System Health → Fail2ban Jails` 可以实时解封 IP 或设置持久化的 ignoreip。如果你被 SSH 锁定在外,请参阅 `/opt/meridian/docs/admin/lockout-recovery.md` - **GDPR**:任何已登录的用户都可以通过 `Settings → Privacy & data` 导出他们的数据档案或删除他们的账户 ## 架构一览 (单页视图) ``` ┌─────────────────────────────────────────────────────────────────┐ │ Browser ──TLS──> nginx (port 443) ──> gunicorn (uvicorn) │ │ │ │ │ ▼ │ │ FastAPI + Jinja2 │ │ │ │ │ ┌──────────────────┬────────────────┼────────────────┐ │ │ ▼ ▼ ▼ ▼ │ │ PostgreSQL 17 Valkey (broker) BIND9 AppArmor │ │ (data + audit) │ (sandbox (per-svc │ │ │ resolver) profiles)│ │ ▼ │ │ Celery workers + beat (redbeat schedule) │ │ │ │ fail2ban (sshd, nginx, meridian-login) │ │ systemd-networkd · HMAC row chain · AES-256-GCM vault │ └─────────────────────────────────────────────────────────────────┘ ``` - **前端**:Jinja2 + 原生 JS (无 SPA 框架) + 普通 CSS - **后端**:Python 3.13 + FastAPI + SQLAlchemy 2.x - **数据库**:PostgreSQL 17 (版本 13) / 15 (版本 12),SCRAM-SHA-256 仅限本地连接 - **代理 / 缓存**:Valkey (Debian 13) / Redis (Debian 12) - **工作队列**:Celery + redbeat (调度从 `jobs` 表中读取) - **Web 服务**:Nginx (TLS + 完整的安全标头) - **DNS**:BIND9 递归解析器,隔离在 127.0.0.1 上 - **证书**:通过 certbot (Let's Encrypt) 实现的 ACME 或自签名证书 ## 安全性:没有网络炸弹 每一次轮询、监控、扫描和外部 API 集成都内置了硬性的下限/上限。请参阅 [`app/safety/limits.py`](app/safety/limits.py) 查看这些常量。默认值是保守的;管理员可以有意提高这些限制,但开箱即用的部署绝对无法被武器化,进而对你的局域网或外部服务发起 DDoS 攻击。 ## Apache 2.0 下的发行 你可以: - 将 Meridian 运行在生产环境中用于任何目的,包括商业用途或其他用途 - 根据你的需要修改源代码 - 分发修改后的版本,包括商业分发,前提是你需要: - 在分发中包含本 LICENSE - 注明对修改文件所做的任何更改 - 保留版权 + 所有权声明 (参见 NOTICE) - 使用不同于 "MeridianNIP" 的名称和标志 (受商标保护,非许可证授予;参见 LICENSE 第 6 条) 你不可以: - 使用 "MeridianNIP" 作为你的分支或衍生作品的名称 - 要求贡献者对损害承担责任 (LICENSE 第 8 条) ## 许可证 [Apache License 2.0](LICENSE)。
标签:Apache 2.0, Awesome, BlueCat, DDI, Debian, DHCP管理, DNSBL, DNSSEC, DNS传播, DNS管理, DNS黑名单, Docker 部署, Entra ID, GitHub, Infoblox, IPAM, IP地址管理, ISC Kea, IT管理, LDAP, MFA, NetBox, phpIPAM, Python, SEO, TLS扫描, Traceroute, Web界面, 仪表板, 仪表盘, 企业网络, 多因素认证, 威胁情报, 局域网管理, 开发者工具, 开源, 情报分析, 插件系统, 数据可视化, 数据统计, 文件查看, 无后门, 测试用例, 端口扫描, 系统管理, 网络安全, 网络工具, 网络智能平台, 网络诊断, 网络运维, 自托管, 路由追踪, 逆向工具, 门户系统, 隐私保护, 集成开发