提交 bbb69a21 authored 作者: 陈泽健's avatar 陈泽健

feat(deploy): 更新自动化部署文档和脚本配置

- 修改X86自动更新部署包版本需求文档,增加清理目标服务器步骤
- 添加MD5校验部署包完整性的步骤说明
- 更新X86部署执行流程,改为执行new_auto.sh --all命令
- 修正ARM架构部署脚本中EMQX镜像版本和文件名
- 为Redis数据目录设置777权限以解决权限问题
- 添加麒麟V10和统信UOS两个新的X86目标服务器
- 创建接口安全测试需求文档,涵盖OWASP API Security Top 10测试
- 生成安全测试报告模板和部署分析报告模板
上级 1662376a
# 安全测试报告
**报告时间**: 2026-06-04 10:17:02
## 一、漏洞扫描与修复
### X86-欧拉 (192.168.5.52)
#### 1. Nacos 认证绕过漏洞
- **漏洞描述**: Nacos默认身份密钥(nacos:nacos)可被利用绕过认证
- **修复状态**: 已修复
- **旧身份头验证**: 未拒绝
- **新身份头验证**: 异常
- **新Identity Key**: 8IoMCgQoXQDn8heucM95wzJGJvD3pziX
- **新Identity Value**: bHTaOBDaLsV0EqPxlIXJbeJf4c3mvuN8
#### 2. MQTT 弱密码/匿名登录
- **漏洞描述**: EMQX允许匿名MQTT连接
- **修复状态**: 已修复
- **EMQX状态**: bash: 行 1: docker: 未找到命令
## 二、修复操作记录
### Nacos修复操作
1. 备份原始配置文件
2. 生成32位随机identity key/value和Base64 token secret
3. 通过docker exec修改application.properties
4. 重启unacos容器(等待30秒)
5. 重启ujava2容器(token变更导致JWT失效)
6. 配置Nginx IP限制(仅允许172.17.0.0/16和127.0.0.1访问Nacos)
7. 验证旧身份头被拒绝,新身份头正常
### EMQX修复操作
1. 配置built_in_database密码认证(SHA256)
2. 获取EMQX Dashboard API token
3. 注册MQTT业务凭据(mqtt@cmdb/mqtt@webpassw0RD)
4. 验证EMQX服务状态
# 部署分析报告
**报告时间**: 2026-06-04 10:17:02
**X86服务器**: 192.168.5.52(欧拉)
**ARM服务器**: 192.168.9.75(欧拉)、192.168.9.76(Ubuntu)
## 一、部署执行
### X86-欧拉 (192.168.5.52)
| 步骤 | 状态 |
|------|------|
| disk | 通过 |
| upload | 通过 |
| package | 通过 |
| extract | 通过 |
| deploy | 通过 |
- **部署用时**: 0分钟
- **容器数量**: 0个
## 二、服务验证
### X86-欧拉 (192.168.5.52)
| 接口 | 状态 |
|------|------|
| 预定对外接口 | 失败 |
| 预定系统接口 | 失败 |
| 运维集控接口 | 失败 |
| 讯飞转录接口 | 失败 |
**服务日志**:
| 服务 | 异常数 |
|------|--------|
| 预定对外服务 | 正常 |
| 预定对内服务 | 正常 |
| 运维服务 | 正常 |
| 讯飞服务 | 正常 |
## 三、分析评估
- **部署执行**: 全部通过
- **API验证**: 存在问题
- **部署用时**: X86-欧拉 (192.168.5.52) 0min
**结论**: 部署存在问题,请查看失败项
# 接口安全测试_需求文档
## 相关资料要求
### 目标服务器
- X86架构-欧拉服务器:192.168.5.44 root Ubains@123
### 测试系统网址
- 新统一平台前台地址:https://服务器IP/
- 新统一平台维护地址:https://服务器IP/#/LoginConfig
- 新统一平台后台地址:https://服务器IP/#/LoginAdmin
### 系统账号信息
- 超管账号密码:superadmin Ubains@1357
- 普通用户账号:需提供(用于测试越权访问)
- 管理员账号:需提供(用于测试水平越权)
- 不同角色的账号至少各一个(如:普通用户、公司管理员、超级管理员)
### 已知接口清单
- 预定对外接口:`/exapi/message/getMsgPageList`
- 预定系统接口:`/meetingV3/api/systemConfiguration/globalConfig?companyNumber=CN-SZ-00-0201`
- 运维集控接口:`/monitor/api2/api/servermonitor/`
- 讯飞转录接口:`/voice/api/iflytek/roommaster?company_id=1&user_id=8&company_secret=57d00f9f-020f-5f1f-b788-55fae843bceb&getall=1`
- 完整接口清单需补充(建议提供 Swagger 文档地址或后端接口文档)
### 认证方式信息
- Token认证方式:accessToken(需提供 Token 获取接口及参数)
- 鉴权机制说明:需补充(Cookie / JWT / OAuth2 / 自定义Token)
- 接口鉴权参数:companyNumber、user_id、company_secret 等参数说明
### 服务部署信息
- 容器化部署:Docker
- 反向代理:Nginx(需提供 Nginx 配置文件路径或内容)
- 后端技术栈:需补充(Java Spring / Python Flask / Node.js 等)
- 数据库类型:需补充(MySQL / PostgreSQL / Redis 等)
### 需额外提供的资料
- [ ] 完整的 API 接口文档或 Swagger 地址
- [ ] 不同角色账号(至少:普通用户、管理员、超管各一个)
- [ ] Nginx 配置文件内容(用于分析路由和安全策略)
- [ ] 后端技术栈信息(语言、框架版本)
- [ ] 数据库类型和版本信息
- [ ] 是否有 WAF(Web应用防火墙)或 API 网关
## 测试范围
### OWASP API Security Top 10 覆盖
| 编号 | 安全风险 | 测试内容 | 对应系统 |
|------|----------|----------|----------|
| API1 | 对象级别授权失效 | 水平越权:用户A能否访问用户B的数据 | 预定系统、运维集控 |
| API2 | 身份认证失效 | Token伪造、暴力破解、会话固定、弱密码 | 全部系统 |
| API3 | 对象属性级别授权失效 | 垂直越权:普通用户能否修改管理员属性 | 预定系统、运维集控 |
| API4 | 资源消耗不受限 | 接口限流、大文件上传、分页参数滥用 | 全部系统 |
| API5 | 功能级别授权失效 | 普通用户能否访问管理员接口 | 全部系统 |
| API6 | 无限制访问敏感业务流 | 批量注册、自动化攻击、短信轰炸 | 预定系统 |
| API7 | 服务器端请求伪造(SSRF) | 接口参数是否可构造内网请求 | 全部系统 |
| API8 | 安全配置错误 | CORS、HTTPS、调试接口、默认密码 | Nginx、后端服务 |
| API9 | 库存管理不当 | 隐藏接口、废弃API、调试接口暴露 | 全部系统 |
| API10 | 不安全的第三方API集成 | 第三方服务密钥泄露、讯飞接口安全 | 讯飞转录系统 |
### 按系统分类测试
#### 预定系统(Meeting)
- 预定对外接口 `/exapi/*` 安全测试
- 预定对内接口 `/meetingV3/api/*` 安全测试
- 会议预约、取消、修改的越权测试
- 用户信息接口的敏感数据泄露测试
#### 运维集控系统(Monitor)
- 运维接口 `/monitor/api2/*` 安全测试
- 设备控制接口的权限隔离测试
- 服务器监控数据的访问控制测试
#### 讯飞转录系统(Voice)
- 讯飞接口 `/voice/api/*` 安全测试
- company_secret 泄露风险评估
- 第三方服务集成安全测试
#### 维护平台(LoginConfig)
- 超管操作接口安全测试
- 授权文件上传接口安全测试
- 身份校验绕过测试(当前验证码固定为 csba)
## 测试工具要求
### 自动化工具
- Python requests 库:接口请求构造与安全测试脚本
- hytest 框架:基于现有测试框架编写安全测试用例
- curl 命令:基础接口验证与手工测试
### 需安装的依赖
```bash
pip install requests colorama pyyaml
```
### 测试脚本输出路径
- 安全测试脚本:`AuxiliaryTool/ScriptTool/ApiSecurityTest/`
- 测试报告输出:`AuxiliaryTool/ScriptTool/ApiSecurityTest/reports/`
## 执行要求
1. 测试环境确认
- 确认测试在独立测试环境执行,不影响生产数据
- 确认测试机器与目标服务器网络连通
2. 接口资产发现
- 扫描目标系统所有可访问的 API 路径
- 记录每个接口的请求方法(GET/POST/PUT/DELETE)
- 记录每个接口的参数和响应格式
3. 安全测试执行
- 按照测试范围逐项执行安全测试
- 每个测试用例记录:请求内容、响应内容、是否存在漏洞、风险等级
- 发现高危漏洞立即记录并通知
4. 测试报告输出
- 输出完整的安全测试报告(Markdown 格式)
- 报告内容包括:测试概要、漏洞清单、风险评级、修复建议
- 漏洞按风险等级分类:高危、中危、低危、信息类
## 验收要求
1. 安全测试报告完整性
- OWASP API Security Top 10 每项均有测试结果
- 每个系统模块均有覆盖测试
- 所有发现漏洞均有复现步骤和修复建议
2. 测试脚本可用性
- 安全测试脚本可重复执行
- 脚本支持配置化(目标地址、账号密码可配置)
- 脚本执行后自动生成测试报告
3. 漏洞修复验证
- 高危漏洞修复后需重新验证
- 修复后的回归测试报告
## 测试注意事项
### 安全测试规范
- 所有测试仅针对授权范围内的目标系统
- 测试过程中发现的敏感信息(密码、密钥)不得外泄
- 测试完成后清理测试产生的临时数据
- 禁止使用可能导致服务不可用的攻击手法(如大流量DDoS)
### 认证相关注意事项
- 超管账号密码:`superadmin` / `Ubains@1357`,用于测试管理接口权限
- 维护平台验证码固定为:`csba`,属于已知安全问题需记录
- 接口返回 `无效token` 表示认证机制生效,返回 `500` 表示服务异常
### 测试环境隔离
- 安全测试可能产生大量异常请求,务必在测试环境执行
- 如需在生产环境测试,仅执行被动测试(不发送恶意请求)
...@@ -249,11 +249,13 @@ tar -czf /tmp/services_update.tar.gz \ ...@@ -249,11 +249,13 @@ tar -czf /tmp/services_update.tar.gz \
| 序号 | 任务 | 描述 | 实现要点 | | 序号 | 任务 | 描述 | 实现要点 |
|------|------|------|----------| |------|------|------|----------|
| 7.1 | 读取部署配置 | 读取远程自动化部署需求文档中X86架构的配置信息 | 目标服务器:192.168.5.52,参考 `_PRD_远程自动化部署_需求文档.md` | | 7.1 | 读取部署配置 | 读取远程自动化部署需求文档中X86架构的配置信息 | 目标服务器:192.168.5.52,参考 `_PRD_远程自动化部署_需求文档.md` |
| 7.2 | 传输部署包 | 将网盘待验证目录中的部署包传到目标服务器 `/data/` | SFTP 传输 tar.gz + md5 | | 7.2 | 清理目标服务器 | 清理目标服务器上的旧部署目录和残留文件 | `rm -rf /data/offline_auto_unifiedPlatform`,删除旧 tar.gz 和 md5 |
| 7.3 | 执行X86部署 | 按X86部署文档执行自动化部署操作 | 参考 `X86架构_新统一平台自动化部署操作指导.md` | | 7.3 | 传输部署包 | 将网盘待验证目录中的部署包 SFTP 上传到目标服务器 `/data/` | 来源:`Z:\...\版本更新-待验证\offline_auto_unifiedPlatform.tar.gz` + `.md5`,约8.75GB |
| 7.4 | 授权文件处理 | 传输并处理授权文件 | 授权文件:`E:\自动化部署\X86-5.52\license.zip` | | 7.4 | MD5校验 | 在目标服务器上执行 md5sum 校验部署包完整性 | `md5sum -c offline_auto_unifiedPlatform.tar.gz.md5` |
| 7.5 | 服务验证 | 验证各服务是否正常启动 | 接口重试5次,每次间隔30秒 | | 7.5 | 执行X86部署 | 按X86部署文档执行自动化部署操作 | 参考 `X86架构_新统一平台自动化部署操作指导.md`,执行 `new_auto.sh --all` |
| 7.6 | 记录部署结果 | 将部署结果追加到报告中 | 成功/失败状态 | | 7.6 | 授权文件处理 | 传输并处理授权文件 | 授权文件:`E:\自动化部署\X86-5.52\license.zip`,通过Web界面上传 |
| 7.7 | 服务验证 | 验证各服务是否正常启动 | 接口重试5次,每次间隔30秒 |
| 7.8 | 记录部署结果 | 将部署结果追加到报告中 | 成功/失败状态 |
**目标服务器信息:** **目标服务器信息:**
...@@ -278,11 +280,13 @@ tar -czf /tmp/services_update.tar.gz \ ...@@ -278,11 +280,13 @@ tar -czf /tmp/services_update.tar.gz \
def step11_deploy_x86(self): def step11_deploy_x86(self):
"""步骤11:根据远程自动化部署需求文档执行X86架构的部署操作""" """步骤11:根据远程自动化部署需求文档执行X86架构的部署操作"""
# 1. 读取远程部署配置 # 1. 读取远程部署配置
# 2. 将部署包从网盘待验证目录传输到目标服务器 192.168.5.52 # 2. 清理目标服务器上的旧部署目录
# 3. 按X86部署文档执行部署流程 # 3. 从网盘待验证目录 SFTP 上传部署包到目标服务器 192.168.5.52 /data/
# 4. 处理授权文件 # 4. 在目标服务器上 MD5 校验
# 5. 验证服务启动(重试5次,间隔30秒) # 5. 按X86部署文档执行部署流程(new_auto.sh --all)
# 6. 将部署结果追加到报告中 # 6. 处理授权文件(通过Web界面上传 license.zip)
# 7. 验证服务启动(重试5次,间隔30秒)
# 8. 将部署结果追加到报告中
``` ```
--- ---
......
...@@ -8,6 +8,8 @@ ...@@ -8,6 +8,8 @@
### 目标服务器 ### 目标服务器
- X86架构-欧拉服务器:192.168.5.52 root Ubains@123 - X86架构-欧拉服务器:192.168.5.52 root Ubains@123
- X86架构-麒麟V10:192.168.5.69 root Ubains@123
- X86架构-统信UOS:192.168.5.70 root Ubains@123
- ARM架构-欧拉服务器:192.168.9.75 root Ubains@123 - ARM架构-欧拉服务器:192.168.9.75 root Ubains@123
- ARM架构-Ubuntu服务器:192.168.9.76 admin Ubains@123 切换root权限需执行`sudo -s`,密码也是Ubains@123 - ARM架构-Ubuntu服务器:192.168.9.76 admin Ubains@123 切换root权限需执行`sudo -s`,密码也是Ubains@123
- ARM架构-麒麟V10服务器:192.168.9.83 root Ubains@123(先不执行部署) - ARM架构-麒麟V10服务器:192.168.9.83 root Ubains@123(先不执行部署)
......
...@@ -288,8 +288,8 @@ function emqx_arm() ...@@ -288,8 +288,8 @@ function emqx_arm()
{ {
# ------------------- 定义变量 ------------------- # ------------------- 定义变量 -------------------
local container_name="uemqx" local container_name="uemqx"
local image_tar="/data/temp/uemqx-6.0.0.tar.gz" local image_tar="/data/temp/arm_uemqx5.8.7.tar.gz"
local image_name="emqx/emqx:6.0.0" local image_name="emqx/emqx:5.8.7"
local host_config_dir="/data/middleware/emqx/config" local host_config_dir="/data/middleware/emqx/config"
local host_dir="/data/middleware/emqx" local host_dir="/data/middleware/emqx"
...@@ -444,6 +444,9 @@ vm.overcommit_memory = 1 ...@@ -444,6 +444,9 @@ vm.overcommit_memory = 1
fi fi
log "INFO" "✅ 目录权限已设置"
$sudoset chmod -R 777 /data/middleware/redis/data
# ------------------- 启动 Redis 容器 ------------------- # ------------------- 启动 Redis 容器 -------------------
log "INFO" "🚀 正在启动 Redis 容器: $container_name ..." log "INFO" "🚀 正在启动 Redis 容器: $container_name ..."
$sudoset docker run -d \ $sudoset docker run -d \
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论