当前位置: 首页 > news >正文

安全访问云端内部应用:用frp的stcp功能解决SSH转发的痛点

文章目录

    • 前言
    • stcp方案的核心优势
    • 实战部署流程(基于frp_0.61.1)
      • 网络拓扑架构
      • 第一步:配置frps服务端(云服务器)
      • 第二步:暴露内部应用(云服务器)
      • 第三步:企业内网访问端配置(企业内网服务器)
      • 访问内部服务
    • 小结
    • 参考资料

前言

在迁移企业内部应用上云时,遇到了一个典型的安全困境:如何让部署在云服务器上的内部Web应用只允许企业内网访问?传统方案是用SSH本地端口转发,但在实际运维中,我总被它脆弱的连接稳定性困扰——网络抖动就断连、长时间闲置就超时,重启客户端还要重新建立连接。直到深度使用了frp的 stcp(secret tcp) 功能,才算彻底解决了这个老大难问题。

stcp方案的核心优势

frp的stcp功能通过双向认证+流量加密实现了真正的企业级安全访问:

  • 零公网暴露:云服务器无需开放任何业务端口
  • 自动重连:内置心跳机制保障隧道稳定
  • 访问控制:通过secretKey实现设备级授权
  • 多协议支持:完美适配HTTP/SSH/RDP等协议

实战部署流程(基于frp_0.61.1)

网络拓扑架构

公有云
企业内网
访问 localhost:8080
加密隧道
流量转发
本地访问
frps 7000
frpc
内部应用 127.0.0.1:8080
frpc visitor
内部用户

第一步:配置frps服务端(云服务器)

# frps.toml
bindPort = 7000
auth.token = "your_secure_token_here" # 强烈建议设置认证令牌

第二步:暴露内部应用(云服务器)

# frpc.toml
serverAddr = "frps.yourcompany.com"
serverPort = 7000
auth.token = "your_secure_token_here"[[proxies]]
name = "secure_webapp"
type = "stcp"
secretKey = "your_scp_secret_key_here"
localIP = "127.0.0.1"
localPort = 8080  # 内部应用真实端口

说明

  • proxies中使用了stcp。stcp(Secure TCP)是 FRP 中一种基于预共享密钥的安全 TCP 代理,专为需要安全访问内网服务的场景设计。它通过密钥验证机制实现类似 VPN 的安全连接,避免服务直接暴露在公网。

第三步:企业内网访问端配置(企业内网服务器)

# frpc_visitor.toml
serverAddr = "frps.yourcompany.com"
serverPort = 7000
auth.token = "your_secure_token_here"[[visitors]]
name = "webapp_access"
type = "stcp"
serverName = "secure_webapp" # 与云服务器代理名一致
secretKey = "your_scp_secret_key_here"
bindAddr = "127.0.0.1"
bindPort = 8080  # 本地访问端口

访问内部服务

配置完成后,内网用户直接访问本地端口即可:

# 访问Web应用
curl http://127.0.0.1:8080/api/v1/data# 或浏览器访问
http://localhost:8080

小结

在实施这套方案的过程中,我发现stcp模式最精妙的设计在于双向身份验证

  • 访问端必须知道 serverName + secretKey
  • 服务端验证访问端的token合法性
  • 任何单点验证失败立即拒绝连接

这种零信任架构恰好契合了企业内部应用的安全需求。更值得称赞的是,当我们将frpc配置为系统服务后,运维人员再也不用半夜被叫醒重启断掉的SSH隧道了。

参考资料

  • frp v0.61.1 官方文档
  • stcp配置示例库
  • 企业级安全加固指南
http://www.lryc.cn/news/583943.html

相关文章:

  • 探索 Google NotebookLM:AI 驱动的效率提升新利器
  • MySQL事务实现原理
  • 低频低压减载装置
  • 构建分布式光伏“四可”能力:支撑新型电力系统安全稳定运行的关键路径
  • turbopack打包机制
  • 边缘计算与AI结合:为物联网设备带来智能决策能力
  • 对S32K144做的VCU安装快速开发Simulink库及VCU例程介绍
  • C#System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。
  • JS实现页面实时时间显示/倒计时
  • Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用(341)
  • selenium跳转到新页面时如何进行定位
  • 编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
  • 如何使用Java WebSocket API实现客户端和服务器端的通信?
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)
  • Android 应用常见安全问题
  • Windows Edge 播放 H.265 视频指南
  • 多模态大语言模型arxiv论文略读(156)
  • 论文阅读笔记:VI-Net: Boosting Category-level 6D Object Pose Estimation
  • web前端面试笔记
  • 微软365 PDF导出功能存在本地文件包含漏洞,可泄露敏感服务器数据
  • C#集合:从基础到进阶的全面解析
  • qemu vcpu的创建过程
  • Debian-10编译安装Mysql-5.7.44 笔记250706
  • Windows 11 安装过程中跳过微软账户创建本地账户
  • 深度学习_全连接神经网络
  • 深入理解Java虚拟机:Java内存区域与内存溢出异常
  • Linux 操作系统如何实现软硬件解耦?从容器与硬件接口封装谈起
  • 数字孪生技术引领UI前端设计新趋势:增强现实与虚拟现实的融合应用
  • 计算机学科专业基础综合(408)四门核心课程的知识点总结
  • Docker高级管理--容器通信技术与数据持久化