55 lines
2.2 KiB
Markdown
55 lines
2.2 KiB
Markdown
|
|
# 外网加固部署与生产验证(2026-06-06)
|
|||
|
|
|
|||
|
|
## Git 推送
|
|||
|
|
|
|||
|
|
| 项 | 状态 |
|
|||
|
|
|----|------|
|
|||
|
|
| Commit | `e5e2582` — `fix(security): 外网攻击面加固 BL-01~05` |
|
|||
|
|
| 远程 | `http://66.154.115.8:3000/admin/Nexus.git` `main` |
|
|||
|
|
| Push | ✅ `722917b..e5e2582` |
|
|||
|
|
|
|||
|
|
## 生产部署
|
|||
|
|
|
|||
|
|
| 项 | 状态 |
|
|||
|
|
|----|------|
|
|||
|
|
| 方式 | `ssh -i nz-admin.pem azureuser@20.24.218.235` → `sudo nx update` |
|
|||
|
|
| 版本 | **e5e2582** `fix(security): 外网攻击面加固 BL-01~05` |
|
|||
|
|
| 容器 | `nexus-prod-nexus-1` 重建 healthy |
|
|||
|
|
| `/health` | `ok` |
|
|||
|
|
|
|||
|
|
## 生产探测(部署后 — 2026-06-06)
|
|||
|
|
|
|||
|
|
`https://api.synaglobal.vip`:
|
|||
|
|
|
|||
|
|
| 探测项 | 结果 | 判定 |
|
|||
|
|
|--------|------|------|
|
|||
|
|
| `GET /health/detail` | **401** | ✅ BL-02 |
|
|||
|
|
| `GET /openapi.json` `/docs` `/redoc` | **404** | ✅ BL-04 |
|
|||
|
|
| `GET /api/install/status` | **404** | ✅ |
|
|||
|
|
| `GET /api/install/env-check` 等 | **404** | ✅ BL-05 |
|
|||
|
|
| `POST /api/install/lock` | **404** | ✅ BL-05 |
|
|||
|
|
| `POST /api/settings/bing-wallpapers/sync` | **401** | ✅ BL-03 |
|
|||
|
|
| `GET/POST /api/servers/` | **401** | ✅ |
|
|||
|
|
| Agent 假 Key | **401** | ✅ |
|
|||
|
|
|
|||
|
|
**备注**:`POST /api/install/init-db` 等若 body 不满足 Pydantic,FastAPI 在 handler 前返回 **422**(非 403 指纹);带合法 body 的锁定请求为 404。可接受,后续可用 router 级 Depends 提前 404。
|
|||
|
|
|
|||
|
|
## WebSocket(BL-07 已澄清)
|
|||
|
|
|
|||
|
|
| 场景 | 结果 | 说明 |
|
|||
|
|
|------|------|------|
|
|||
|
|
| 外网无 token / 假 token | HTTP **403** | Starlette 在 `accept()` 前 `close(4001/4401)` 时,黑盒常见 HTTP 403,**非反代故障** |
|
|||
|
|
| 直连 `ws://127.0.0.1:8600/ws/alerts` 无 token | HTTP **403** | 与经 HTTPS 一致,排除仅反代问题 |
|
|||
|
|
| 1Panel `root.conf` | 含 `Upgrade` / `Connection` | 全站反代至 8600,配置正常 |
|
|||
|
|
| 登录后 `wss://.../ws/alerts?token=<JWT>` | **连接成功** | 2026-06-06 生产验证 |
|
|||
|
|
| 登录后 `wss://.../ws/sync?token=<JWT>` | **连接成功** | 同上 |
|
|||
|
|
|
|||
|
|
**结论**:BL-07 标为**接受**(与 risk-acceptance ADR-011 一致);外网探测脚本以「无 token 拒绝连接」为 PASS,不要求 HTTP 层可见 4001/4401。
|
|||
|
|
|
|||
|
|
## 本地测试(推送前已通过)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
pytest tests/test_install_locked_404.py tests/test_external_attack_surface_hardening.py -q
|
|||
|
|
# 12 passed
|
|||
|
|
```
|