内网穿透需通过架构设计实现安全过滤:禁用直连模式,Nginx前置强制HTTPS、路径鉴权与限流,FRP启用Token认证、绑定内网地址、关闭外网Dashboard,并落实服务最小权限配置。

内网穿透本身不自带安全过滤能力,所谓“反向安全过滤”不是工具内置功能,而是靠合理架构设计和外围组件协同实现的访问控制。核心思路是:不把内网服务直接暴露给公网,所有流量必须经过可控的入口层做校验与拦截。
明确入口边界,禁用直连式穿透
FRP、NPS 等工具默认支持 TCP/HTTP 直通模式,一旦配置不当,可能让攻击者绕过业务层鉴权,直接访问数据库管理端口、后台接口或调试页面。必须避免以下做法:
- 不使用
type = tcp映射内网 Redis、MySQL、MongoDB 的原生端口(如 6379、3306) - 不将内网开发环境的 Web 控制台(如 Actuator、Swagger UI、MinIO Console)直接映射到子域名或路径
- 不在 frpc 配置中开启
allow_ports宽泛范围(如1-65535),应严格限定仅需转发的端口
用 Nginx 做第一道访问闸门
Nginx 不只是反向代理,更是最轻量、最可控的前置过滤层。所有经 FRP 转发来的 HTTP/HTTPS 流量,必须先落到 Nginx,再由它决定是否放行:
- 强制 HTTPS + TLS 1.2+,关闭 SSLv3/TLS 1.0,防止降级攻击
- 配置
location /admin时加auth_basic或结合 JWT 校验中间件 - 对敏感路径(如
/api/v1/internal)返回 403,或通过deny all明确拦截 - 用
limit_req限制单 IP 请求频率,防暴力探测
在 FRP 层启用基础防护机制
FRP 本身提供有限但关键的安全开关,需主动开启:
-
Token 认证必须启用:frps.ini 中设置
token = xxx,所有 frpc 必须匹配,否则拒绝连接 -
绑定监听地址:frps.ini 中设
bind_addr = 127.0.0.1(若 Nginx 与 frps 同机),避免 frps 直接监听公网网卡 -
关闭 Dashboard 外网访问:生产环境注释掉
dashboard_port,或仅绑定内网地址(dashboard_addr = 127.0.0.1) -
启用加密与压缩:frpc.ini 中添加
use_encryption = true和use_compression = true,防中间人窃听与流量分析
最小权限原则落地到每个服务
穿透只是通道,真正泄露风险来自内网服务自身配置松散:
- Java 应用关闭 Actuator 的
/env、/jolokia等高危端点,或加 Spring Security 拦截 - MinIO 启用 IAM 策略,禁止匿名读写;Console 界面只允许特定 IP 段访问
- 内网数据库关闭远程 root 登录,为穿透用途单独创建低权限账号,并限制来源主机为 frps 所在服务器 IP


















