前台演示
效果展示
效果展示
软件说明
# Web绝对防御(OpenResty/NGINX 端口转发 + 认证防护)
## 1. 目标
本方案用于在 Windows 环境下,通过 **OpenResty(= NGINX) 作为 Tomcat 前置网关**,实现:
- 对外仅暴露 OpenResty 端口
- Tomcat 不直接对公网开放(仅内网/本机可访问)
- 所有请求必须先经过 OpenResty
- 在 OpenResty 层进行 **用户名/密码认证** 与 **敏感上传接口阻断**
主要目的:降低/规避 Tomcat 及业务系统中常见的上传类入口(如 `uploadimage` / `upload` 等)被直接访问利用带来的风险。
## 2. 防护思路(核心机制)
- **改变暴露面**:外网访问入口从 Tomcat 改为 OpenResty。
- **统一鉴权**:OpenResty 做账号认证,通过后才允许转发到 Tomcat。
- **入口治理**:对疑似上传类路径在 OpenResty 层直接阻断或仅允许白名单。
这样即使攻击者知道业务上传 URL,也无法在未认证/未授权的情况下直接打到 Tomcat 上传接口。
## 3. 推荐部署拓扑
- 外网/客户端 -> `OpenResty:对外端口(80/443/自定义)` -> `Tomcat:内网端口(8081/自定义)`
建议:
- Tomcat 仅监听 `127.0.0.1` 或内网 IP
- 防火墙禁止外网直连 Tomcat 端口
- 对外只开放 OpenResty 端口
## 4. Windows 启动/停止
### 4.1 启动
在 OpenResty 根目录执行:
```bat
start nginx
```
### 4.2 查看进程
```bat
tasklist /fi "imagename eq nginx.exe"
```
### 4.3 停止 / 重载
```bat
nginx -s stop
nginx -s reload
```
## 5. 关键配置(端口转发 + 账号认证 + 上传入口防护)
说明:以下为配置思路示例,实际以你的 `conf/nginx.conf` 为准(端口、域名、路径规则需按实际系统调整)。
### 5.1 端口转发(反向代理到 Tomcat)
OpenResty 监听对外端口(示例 80),统一转发到 Tomcat(示例 `127.0.0.1:8081`):
```nginx
server {
listen 80;
location / {
proxy_pass http://127.0.0.1:8081;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
```
### 5.2 账号认证(Basic Auth)
对所有访问先做用户名/密码认证:
```nginx
location / {
auth_basic "Protected";
auth_basic_user_file conf/htpasswd;
proxy_pass http://127.0.0.1:8081;
}
```
`conf/htpasswd` 为账号文件(建议使用 `htpasswd` 工具生成加密口令,不要存明文密码)。
### 5.3 对 uploadimage 等上传入口:阻断(推荐)
若你确认系统存在或曾存在高风险上传入口(示例:`uploadimage`),可在 OpenResty 直接拦截:
```nginx
location ~* (uploadimage|uploadimg|fileupload|upload)\b {
return 403;
}
```
说明:
- 正则规则需按你们真实 URL 调整,避免误伤正常接口。
- 若上传接口必须保留,建议改为“仅允许内网/白名单访问”,或要求更强认证。
### 5.4 可选:限制请求体大小
限制上传体积以降低滥用风险:
```nginx
client_max_body_size 2m;
```
## 6. 上线建议流程
- 1) **先收口端口**:确保 Tomcat 端口不对公网开放
- 2) **配置转发**:OpenResty 统一 `proxy_pass` 到 Tomcat
- 3) **开启认证**:对站点或关键路径启用 `auth_basic`
- 4) **拦截上传入口**:对 `uploadimage` 等路径做 `403`
- 5) **重载并验证**:`nginx -s reload`
## 7. 验证清单
- 不带认证访问:返回 `401 Unauthorized`
- 带认证访问:业务正常
- 访问上传入口:返回 `403 Forbidden`
- 外网直连 Tomcat 端口:失败(超时/拒绝连接)
- THE END -
非特殊说明,本博所有文章均为博主原创。
如若转载,请注明出处:https://www.zzzmxxkj.com/313.html


共有 0 条评论