192 lines
12 KiB
Markdown
192 lines
12 KiB
Markdown
# VPSMaster
|
||
|
||
**VPS Diagnostics & Security Hardening Toolkit**
|
||
|
||
面向Linux VPS用户的开源服务器检测与安全管理工具。
|
||
|
||
[中文](README.md) · [English](README.en.md) · [已知限制](KNOWN_LIMITATIONS.md) · [贡献指南](CONTRIBUTING.md)
|
||
|
||
VPSMaster 是一款基于Python、面向Linux VPS用户的开源服务器检测与安全管理工具,提供系统环境检测、网络质量诊断、IP信息分析及基础安全体检。主要面向中文Linux社区及VPS初学者,也帮助有经验的用户了解服务器状态和风险。
|
||
|
||
当前以安全、易用、默认只读的CLI为基础;未来重点是Linux安全加固、配置备份/回滚、持续安全监控与可视化管理,目标是可控、可审计、可回滚的服务器管理。
|
||
**当前 `1.0.0b1` 是以 CLI 为核心的 Beta 公测候选,非生产稳定版;管理能力仍在规划中。**
|
||
项目强调安全、易用和检测结果透明:普通检测默认不修改 SSH、防火墙、路由或系统 DNS,未知结果不会被写成安全或成功。
|
||
|
||
> Open-source Linux VPS diagnostics, security auditing and future safe server hardening toolkit. Current Beta is read-only diagnostics; hardening and Web UI are Planned.
|
||
|
||
## Available / 当前可用
|
||
|
||
| 模块 | 当前 Beta 能力 | 判断边界 |
|
||
| --- | --- | --- |
|
||
| 服务器信息与资源 | Linux/内核/架构、CPU、内存、Swap、磁盘容量、可见配额、短时 steal/PSI | 不能证明硬件独享;没有 CPU/磁盘基准 |
|
||
| 网络基础 | DNS、分 IPv4/IPv6 的 TCP、证书验证 TLS、接口和路由信息 | 取决于权限、网络和目标服务,保留错误与未知 |
|
||
| Traceroute | 自主 UDP,可选系统 traceroute 的 ICMP/TCP;IP、RTT、响应/超时、可选 ASN/位置 | 默认30跳、最多64跳;跳点不响应不等于真实转发丢包 |
|
||
| BGP / ASN | RIPE RIS 前缀、起源 ASN、邻居及有限 AS_PATH 样本 | 采集器视角,不代表本机选路、商业上游或优质线路承诺 |
|
||
| IP 信息与风险 | 多来源归属、网络类型、代理/VPN/Tor/风险信息及冲突;可选 PTR/TCP25 | 不合成不透明“纯净度”;第三方可能失败、限额或缺字段 |
|
||
| 流媒体网页 | Netflix、Disney+、YouTube 等10项公开服务页面的基础可达性 | **不保证解锁、登录后地区权限或实际播放** |
|
||
| 基础安全体检 | SSH、监听端口、防火墙、固定敏感路径权限、更新缓存 | 只读提示,不是完整漏洞扫描或自动修复 |
|
||
| 本地报告 | 脱敏 JSON、Markdown、逐步恢复日志、失败隔离、中英文终端主题 | 分享前仍需人工复核;断电/SIGKILL不能保证未落盘数据 |
|
||
| 可选带宽与中国目标 | 多来源多轮有界下载/部分上传、固定中国候选与三城九方向追踪入口 | 需明确允许流量;大陆三网实验性,默认关闭;不是完整全国回程 |
|
||
|
||
“模块执行完成”不等于目标可用或检测结论完整。`success / failure / skipped / unsupported / unknown` 与原因、时间、方法和来源分别保留。
|
||
|
||
## 安装
|
||
|
||
需要 Linux、Python **3.10+** 及标准库 `venv`。运行时没有第三方 Python 包依赖;安装器不调用 pip、sudo 或系统包管理器。
|
||
先从可信渠道取得 ZIP 和校验文件,并阅读 `install.py`;校验和不能独立证明发布者身份。
|
||
|
||
```bash
|
||
sha256sum -c VPSMaster-v1.0.0-beta.1.zip.sha256
|
||
python3 -m zipfile -e VPSMaster-v1.0.0-beta.1.zip .
|
||
cd VPSMaster-v1.0.0-beta.1
|
||
python3 -I -B install.py --run
|
||
VM="$HOME/.local/share/vpsmaster/1.0.0b1/bin/vpsmaster"
|
||
"$VM" --version
|
||
"$VM" check --lang zh --theme framed
|
||
```
|
||
|
||
安装到用户目录的隔离环境,`--run` 首次只运行离线体检。缺少 Python/venv 会明确退出,不擅自安装系统依赖。
|
||
已有安装目录不会覆盖。需要另一路径时用 `python3 -I -B install.py --prefix "$HOME/vpsmaster-beta-test"`,并使用打印出的启动器路径。
|
||
|
||
### 更名与兼容性
|
||
|
||
- 项目旧名 **ProxyDoctor**;当前用户可见品牌统一为 **VPSMaster**。
|
||
- 新命令为 `vpsmaster`,同一安装目录保留 `proxydoctor` 兼容入口;两者调用同一实现。
|
||
- Python 包名、发行元数据中的旧包标识 `proxydoctor`、导入路径、已有 JSON schema 和 `PROXYDOCTOR_*` 环境变量保留。没有宣称支持新的 `VPSMASTER_*` 变量。
|
||
- 新默认目录为 `~/.local/share/vpsmaster/1.0.0b1`;旧安装、报告和 `~/.local/share/proxydoctor/` 不自动改名或迁移。
|
||
- 源码入口 `bash vpsmaster.sh ...` 与 `bash proxydoctor.sh ...` 均可用。提供的启动器与 Python workers 使用 `-B`,不通过删除缓存掩盖问题;外部自行导入不在此承诺范围。
|
||
|
||
## 使用
|
||
|
||
```bash
|
||
# 本机体检,不发起外部探测(--detect-public-ip 是另行选择的联网选项)
|
||
"$VM" check --lang zh --color always
|
||
"$VM" suite --offline --lang en
|
||
|
||
# 联网模式:目标服务会看到请求来源 IP
|
||
"$VM" quality --lang zh
|
||
"$VM" suite --lang zh --json-output report.json
|
||
"$VM" trace --target 1.1.1.1 --method udp --max-hops 30
|
||
"$VM" trace --target 1.1.1.1 --method tcp --tcp-port 443 --geo
|
||
"$VM" bgp --target 1.1.1.1
|
||
"$VM" ipquality
|
||
"$VM" media
|
||
|
||
# 本地导出和恢复;不覆盖已有文件
|
||
"$VM" report --input report.json --output report.md
|
||
"$VM" recover --journal report.json.events.jsonl --output recovered.json
|
||
"$VM" --help
|
||
```
|
||
|
||
ICMP/TCP 需要系统已有 traceroute,权限不足显示 `PERMISSION_DENIED`,缺依赖明确跳过/退出,不自动提权安装。
|
||
`--geo` 最多查询12个公网跳点,私有/保留地址不外发;位置是数据库推测,不是物理路径证明。
|
||
|
||
默认不运行带宽测试。确需测试时单独允许,并先核对命令预告的负载预算:
|
||
|
||
```bash
|
||
"$VM" bandwidth --allow-bandwidth --rounds 3 --sample-mib 4
|
||
# 实验性:中国大陆三网候选,并不保证三网都有可用节点
|
||
"$VM" bandwidth --china --allow-bandwidth --rounds 3 --sample-mib 1
|
||
"$VM" cn-nodes
|
||
"$VM" return-route --method udp --max-hops 30
|
||
```
|
||
|
||
下载方向为“节点 → 本机”,上传为“本机 → 节点”;中国候选当前下载为主。香港移动单独标注,不能替代大陆移动。
|
||
短文件成功不是线路容量;`attempted` 目前统计计划样本槽,包含失败后自动跳过的槽位,不是实际网络请求次数,需查看每个样本错误。
|
||
|
||
### CLI 示例输出
|
||
|
||
以下是**格式示意**,`<RTT>` 等为占位符,不是本发行包的测速成绩:
|
||
|
||
```text
|
||
1.0.0b1 · VPSMaster · 1.0 公测版(非最终版本)
|
||
1 127.0.0.1 <RTT> ms 内网/保留地址 AS? --- [reached]
|
||
追踪结果 reached
|
||
恢复日志: <本地文件路径>
|
||
```
|
||
|
||
终端逐项回显,支持 `default / iprisk / framed` 和中英文;`framed` 适配窄终端。
|
||
Linux纯文字控制台默认英文,显式 `--lang zh` 保留中文,但需要终端字体支持。
|
||
|
||
## 已验证环境与验收范围
|
||
|
||
已有实机基线是 **Ubuntu 22.04.5 Desktop / Python3.10.12 / x86_64** 与 **Ubuntu 24.04.3 Server / Python3.12.3 / x86_64**。
|
||
本次 VPSMaster 构建使用新 ZIP、全新 HOME/安装目录重新验收;**仅旁附与 ZIP SHA256 一致的验收报告可证明本构建通过**。
|
||
旧 ProxyDoctor 验收包保留,不能换名充当 VPSMaster 的通过证据。
|
||
|
||
当前测试不等于全新22 Server镜像、海外VPS、ARM或公网IPv6已全面验证。
|
||
ICMP/TCP 的回环成功和有限公网观察,不代表所有线路或完整公网路径可用。
|
||
版本与实际范围见 [当前状态](CURRENT_STATUS.md)、[发行说明](RELEASE_NOTES.md) 和包外验收报告。
|
||
|
||
## 安全与隐私
|
||
|
||
普通检测不修改 SSH、防火墙、路由或系统 DNS,不自动修复或上传完整报告。
|
||
安装器只创建指定的用户隔离环境;检测和导出会创建本地报告。联网 API、媒体页和测速服务仍会看到请求来源 IP。
|
||
提供的入口有超时与取消处理;Ctrl+C/SIGTERM 尝试保存已有结果,恢复以最后完整日志事件为准。
|
||
退出码:`0` 完成,`1` 有发现/不完整/存储失败,`2` 参数或安装错误,`130` 中断。
|
||
|
||
`--show-ip` 只影响终端显示;导出默认脱敏 IP、已知密钥字段和URL凭据,但不是任意文本匿名器。
|
||
不要公开原始日志、订阅地址、密码、Token或私钥。安全问题见 [SECURITY.md](SECURITY.md),未知不能当作安全保证。
|
||
|
||
## Roadmap / 安全加固开发路线 — Planned / 规划中
|
||
|
||
**现在主打可信检测,未来核心竞争力是安全加固。** 以下全部为长期规划,不是当前已有功能,不承诺固定交付日期。
|
||
|
||
### Phase 1 — 检测能力完善(Planned)
|
||
|
||
- CPU和磁盘性能基准;中国大陆电信、联通、移动节点覆盖。
|
||
- 网络线路/BGP分析、IP情报交叉验证、网络检测准确性与兼容性改善。
|
||
- 服务器安全体检规则扩展。
|
||
|
||
### Phase 2 — 一键安全加固(Planned,未来重点)
|
||
|
||
- SSH安全配置检查与加固、密钥认证和密码登录策略管理。
|
||
- UFW/nftables规则管理、Fail2ban等暴力破解防护。
|
||
- 不必要服务/开放端口检查、更新/补丁策略、用户与文件权限加固、Linux安全基线。
|
||
- 方案预览、风险解释及用户按需选择;当前Beta没有一键加固或自动修复。
|
||
|
||
### Phase 3 — 安全备份、验证与回滚(Planned)
|
||
|
||
- 修改前自动备份、变更差异、当前SSH管理连接检查与管理通道保留。
|
||
- 执行后SSH/网络复验、具备可靠机制时的超时回滚、操作审计日志。
|
||
- 配置恢复向导和失败恢复提示。
|
||
- 自动回滚不能保证恢复所有断网、重启、云安全组或宿主机故障。
|
||
|
||
### Phase 4 — 持续安全监控(Planned)
|
||
|
||
- 定期安全体检、配置漂移、SSH异常登录和可疑端口变化提醒。
|
||
- 安全报告历史对比、更新/风险变化提醒。
|
||
- 长期网络稳定性监测、VPS购买验收报告。
|
||
|
||
### Phase 5 — 可视化安全管理(Planned)
|
||
|
||
- 本地Web UI、安全评分与风险展示、加固任务管理。
|
||
- 备份/回滚界面、多服务器管理探索、可选服务部署维护。
|
||
- Web UI默认不得向公网直接暴露管理入口;评分必须说明依据和不确定性。
|
||
|
||
未来加固流程:**检测 → 解释 → 预览 → 确认 → 备份 → 执行 → 验证 → 回滚**。
|
||
默认只读、明确授权、替代SSH管理连接验证、云安全组考虑、幂等与审计、业务端口保护均为前提。
|
||
高风险变更不作无人值守默认动作,也不通过关闭安全保护或放宽权限“修复”。详见 [安全加固设计原则](SECURITY_ROADMAP.md)。
|
||
|
||
## Known Limitations / 已知限制
|
||
|
||
- 流媒体主要是公开网页可达性,不保证解锁、订阅权限、地区可用性或实际播放。
|
||
- 中国大陆三网测速仍为实验性能力,默认关闭;没有完整可靠三网覆盖承诺。
|
||
- BGP/IP 地理信息依赖第三方来源、准确性、服务条款和限额;位置不证明物理路由。
|
||
- 海外 VPS、ARM、公网 IPv6、全新 Ubuntu22 Server 镜像未全面验证;新GUI字体渲染须单独目视验收。
|
||
- Beta 不代表生产稳定性、独立安全认证或资源独享证明。
|
||
- **当前没有 Web UI、一键安全加固、自动代理部署或完整管理面板。** 也没有长时间监控、CPU/磁盘基准或完整全国三网回程。
|
||
|
||
详见 [KNOWN_LIMITATIONS.md](KNOWN_LIMITATIONS.md)。更新请安装到新的、确认不存在的目录;卸载前备份报告,只移除自己确认的安装目录。
|
||
|
||
## 贡献、Issues 与许可
|
||
|
||
欢迎文档、翻译、可复现Bug和有来源的检测规则贡献,见 [CONTRIBUTING.md](CONTRIBUTING.md)。
|
||
在有权访问的仓库中使用 [Issues](https://github.com/griffinmx/VPSMaster/issues) → New issue;[Bug 模板](.github/ISSUE_TEMPLATE/bug_report.md) 和 [功能建议模板](.github/ISSUE_TEMPLATE/feature_request.md) 已随源码提供。
|
||
仓库当前为Private,只有获授权用户可访问;未经所有者确认不会公开。敏感安全问题不要发到公开Issues。
|
||
|
||
项目采用 [MIT](LICENSE),保留旧品牌贡献者版权。标准库运行,不打包第三方测速客户端/地理数据库,不下载执行外部检测脚本。
|
||
感谢相关开源项目与数据服务,详见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md) 和 [OPEN_SOURCE_REFERENCES.md](OPEN_SOURCE_REFERENCES.md)。
|
||
本项目MIT许可不覆盖第三方API、数据库或测速服务,使用时仍需遵守其条款、配额与权限;没有长期或高负载使用授权保证。
|
||
数据保留/分享边界(含IP2Location适用缓存期限)见 [第三方接口条款](docs/DATA_SERVICES.md);当前工具不自动删除历史报告。
|