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

feat(security): 新增nginx拦截脚本防止swagger页面访问

- 创建exapicheck.sh脚本用于自动添加nginx转发拦截配置
- 实现配置检查功能避免重复添加location ~* ^/(swagger-ui拦截规则
- 添加nginx配置文件备份和恢复机制确保系统安全
- 实现docker容器内nginx配置测试和重载功能
- 集成curl验证功能确保8996和443端口swagger访问被正确拦截
- 提供完整的日志记录和错误处理机制
- 生成需求文档和执行计划文档规范实施流程
上级 0fa62058
此差异已折叠。
# 8996访问页面漏洞修复需求文档
## 代码路径
- 代码路径:[AuxiliaryTool/漏洞修复/ExaptCheck/exapicheck.sh]
## 功能需求
### 功能目标
**目标:** 新增脚本来自动补充nginx转发拦截,将`http://192.168.52.62:8996/swagger-ui.html` 在访问时做拦截操作,返回403页面。
### 需求描述
- 输出脚本:`AuxiliaryTool/漏洞修复/ExtaptCheck/ExtaptCheck.sh`
- 脚本功能:
- **配置检查**:执行前先检查配置文件中是否已存在拦截配置,避免重复添加。通过检查是否包含 `location ~* \^/(swagger-ui` 关键字来判断。
- 在宿主机[/var/www/java/nginx-conf.d]目录下对nginx配置文件[meeting443.conf]新增转发拦截配置,需要加在根目录转发的上面。
- 根目录转发内容为:
- ```ignorelang
location / { }
```
- 配置文件内容:
- ```ignorelang
# 这里的 ^/ 表示匹配 URL 路径的开头
location ~* ^/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-docs|webjars) {
return 403;
}
```
- 添加后的效果:
- ```ignorelang
location ~* ^/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-docs|webjars) {
return 403;
}
location / { }
```
- 添加成功后需要做重载操作。
- 操作步骤:
- **说明**:环境中只会存在一个运行的ujava容器。
- 模糊查询ujava容器,docker ps | grep ujava
- 进入ujava容器
- 执行测试:`/usr/local/nginx/sbin/nginx -t`
- 检查测试结果是否存在`successful`,成功返回true,失败返回false,并去除新增的nginx配置。
- 如果成功则执行重载操作`/usr/local/nginx/sbin/nginx -s reload`,否则返回false
- 检查配置是否成功:
- **说明**:需执行以下两个验证命令,确保不同端口和路径的swagger访问均被拦截。
- 执行:`curl -k -v http://192.168.52.62:8996/swagger-ui.html` 查看是否正确返回403页面。
- 执行:`curl -k -v https://192.168.52.62/exapi/swagger-ui.html` 查看是否正确返回403页面。
- 日志打印:
- 实时日志打印,每一步骤都需要打印,日志文件可以存放在当前脚本所在目录下。
## 规范文档
- 代码规范: `Docs/PRD/01规范文档/_PRD_规范文档_代码规范.md`
- 问题总结: `Docs/PRD/01规范文档/_PRD_问题总结_记录文档.md`
- 方法总结: `Docs/PRD/01规范文档/_PRD_方法总结_记录文档.md`
- 文档规范: `Docs/PRD/01规范文档/_PRD_规范文档_文档规范.md`
- 测试规范: `Docs/PRD/01规范文档/_PRD_规范文档_测试规范.md`
---
\ No newline at end of file
# 8996访问页面漏洞修复计划执行文档
## 需求来源
- 需求文档: `_PRD_8996访问页面的漏洞修复需求文档.md`
## 实施计划
### 1. 脚本创建
- 脚本路径: `AuxiliaryTool/漏洞修复/ExaptCheck/exapicheck.sh`
- 脚本功能: 自动补充nginx转发拦截配置
### 2. 实现步骤
#### 2.1 配置检查
- 执行前先检查配置文件中是否已存在拦截配置
- 通过检查关键字 `location ~* ^/(swagger-ui` 判断
#### 2.2 配置添加
- 在宿主机 `/var/www/java/nginx-conf.d` 目录下操作
- 配置文件: `meeting443.conf`
- 在根目录转发配置上方添加拦截配置
#### 2.3 nginx配置测试
- 模糊查询ujava容器: `docker ps | grep ujava`
- 进入容器执行测试: `/usr/local/nginx/sbin/nginx -t`
- 检查结果是否包含 `successful`
- 失败则去除新增配置并返回false
#### 2.4 nginx重载
- 测试成功后执行: `/usr/local/nginx/sbin/nginx -s reload`
#### 2.5 配置验证
- 执行: `curl -k -v http://192.168.52.62:8996/swagger-ui.html`
- 执行: `curl -k -v https://192.168.52.62/exapi/swagger-ui.html`
- 验证是否正确返回403页面
#### 2.6 日志记录
- 实时日志打印
- 日志文件存放在脚本所在目录
### 3. 配置内容
```bash
# nginx拦截配置
location ~* ^/(swagger-ui|doc\.html|swagger-resources|v2/api-docs|v3/api-docs|webjars) {
return 403;
}
```
### 4. 执行流程图
```
开始
检查配置是否已存在 → 是 → 结束(配置已存在)
↓ 否
添加nginx拦截配置
查询ujava容器
进入容器执行nginx -t
检查是否successful
↓ ↓
失败 成功
↓ ↓
去除新增配置 执行nginx reload
返回false ↓
执行curl验证
检查返回403
结束
```
### 5. 实施状态
| 步骤 | 状态 | 说明 |
|------|------|------|
| 脚本创建 | [ ] | 待实施 |
| 配置检查 | [ ] | 待实施 |
| 配置添加 | [ ] | 待实施 |
| nginx测试 | [ ] | 待实施 |
| nginx重载 | [ ] | 待实施 |
| 配置验证 | [ ] | 待实施 |
| 日志记录 | [ ] | 待实施 |
### 6. 注意事项
1. 环境中只会存在一个运行的ujava容器
2. 需要两个验证命令,确保不同端口和路径的swagger访问均被拦截
3. 失败时需要自动回滚配置
4. 所有步骤需要输出日志
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论