frp安全内网穿透,安全远程windows,暴露服务

2023-11-04

目录

概述

公网服务器端

内网Windows客户端

外网Windows客户端

附加:暴露多台内网Windows客户端

附加:暴露服务

总结


概述

frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。

但是直接暴露内网的IP或者IP某个端口给外网是不安全的,因此需要做一些安全的手段。这里采用STCP(secret TCP)的方式配置安全的内网穿透,即访问内网客户端的时候,需要外网客户端先完成密码认证。

其主要思路是:

  • 在公网服务器端正常配置frps.ini文件,主要是外网访问的端口
  • 在内网Windows客户端配置stcp,使得外网Windows客户端也需要相应配置才能访问
  • 如果要使用内网Windows客户端,也需要在外网Windows客户端启动frp

文件介绍:

  • frps,其中s表示server,为服务器端运行文件

  • frps.ini,其中s表示server,为服务器端配置文件

  • frpc,其中c表示client,为客户端运行文件

  • frpc.ini,其中c表示client,为客户端配置文件

网络结构图:

解释:之前直接访问公网服务器暴露的端口,就等于访问内网客户端的端口,其中没有任何的认证过程。如果有端口扫描的自动程序,就可能扫描到对应的端口,由于内网客户端可能在这个端口存在漏洞,因此可能被爆破。采用stcp以后,则需要完成密码认证,才能进行下一步的内网穿透服务,即通过外网Windows客户端的frpc与内网Windows客户端的frpc进行认证。

公网服务器端

  1. 查询防火墙状态
systemctl status firewalld

  1. 启动防火墙
systemctl start firewalld
  1. 设置防火墙开机自启
systemctl enable firewalld
  1. 添加防火墙暴露端口,需要与frp暴露端口一致。并查看端口暴露列表
firewall-cmd --zone=public --add-port=7000/tcp --permanent

systemctl restart firewalld

firewall-cmd --zone=public --list-ports
  1. 下载frp文件,并解压
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz

tar -zxvf frp_0.38.0_linux_amd64.tar.gz

cd frp_0.38.0_linux_amd64/

ls
  1. 修改配置frps.ini,注意要修改密码
vim frps.ini




[common]
bind_port = 7000
token=123123
dashboard_port = 7501
dashboard_user = admin
dashboard_pwd = admin123

解释:

  • “bind_port”表示用于客户端和服务端连接的端口,这个端口号在配置客户端的时候要用到。

  • “dashboard_port”是服务端仪表板的端口,若使用7501端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7501 (其中x.x.x.x为公网服务器的IP)查看frp服务运行信息。

  • “token”是用于内网客户端和外网服务端连接的口令。

  1. 启动服务器frps运行文件
./frps -c frps.ini


# 后台运行,log.log为日志文件
nohup ./frps -c frps.ini > log.log 2>&1 &

内网Windows客户端

  1. 开启支持远程Windows,直接搜索远程Windows即可

  1. 下载文件

https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_windows_amd64.zip

  1. 修改配置frpc.ini
[common]
server_addr = 服务器ip
server_port = 7000
token=123123

[secret_rdp]
type = stcp
sk = 123456
local_ip = 127.0.0.1
local_port = 3389
  1. 启动客户端frps运行文件
frpc.exe -c frpc.ini

  1. window10设置开机自启,编写startfrp.bat脚本,内容如下,需要修改为自己的绝对路径,并放到C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp目录下
C:\Users\zx\Desktop\frp\frpc.exe -c C:\Users\zx\Desktop\frp\frpc.ini
  1. (可选)如果是Windows10服务器,通过组策略设置脚本随服务器启动,开始->运行->gpedit.msc->计算机配置->Windows设置->脚本(启动/关机)

 

  • 添加bat启动脚本即可

 

外网Windows客户端

  1. 修改配置frpc.ini
[common]
server_addr = 服务器ip
server_port = 7000
token=123123

[secret_rdp_visitor]
type = stcp
role = visitor
sk = 123456
server_name = secret_rdp
bind_addr = 127.0.0.1
bind_port = 30009
  1. 启动客户端frps运行文件
frpc.exe -c frpc.ini

  1. 访问内网客户端,注意是外网Windows客户端的本地端口127.0.0.1: 30009

附加:暴露多台内网Windows客户端

frp当然也能同时暴露多台内网中的Windows客户端,其中公网服务器端的配置完全不用改变。只需要先在另外一台内网Windows客户端注册服务,然后外网Windows客户端修改对应配置即可。

  • 内网Windows客户端配置,只需要修改secret_anotherName为另外一个名字即可。
[common]
server_addr = 服务器ip
server_port = 7000
token=123123

[secret_anotherName]
type = stcp
sk = 123456
local_ip = 127.0.0.1
local_port = 3389
  • 外网Windows客户端配置,只需要修改secret_anotherName_visitorsecret_anotherName为对应内网Windows客户端名字即可。
[common]
server_addr = 服务器ip
server_port = 7000
token=123123

[secret_anotherName_visitor]
type = stcp
role = visitor
sk = 123456
server_name = secret_anotherName
bind_addr = 127.0.0.1
bind_port = 30009

附加:暴露服务

当然也可以暴露内网中的web服务给外部使用,只需要修改frpc.ini的对应端口即可,同暴露多台内网Windows客户端类似。

如果是需要别人直接访问web服务,可以修改直接修改内网客户端frpc.ini为如下配置,就直接可以用公网ip(域名): vhost_http_port 端口访问,(ip地址只能在custom_domains 中使用一次,导致其它web服务只能使用tcp暴露)

第一个web服务是222.222.22.22:8080,或者aaa.test.com:8080;其中8080为vhost_http_port服务端配置

第二个web服务是bbb.test.com:8080;其中8080为vhost_http_port服务端配置

第三个web服务是222.222.22.22:2131;

[web01]
type = http
local_ip =  {可以是域名,比如aaa.target.com,local_port=80(http默认端口)}
local_port = 80
custom_domains = {此处填写服务端的公网IP(222.222.22.22)、或者域名(aaa.test.com)}

[web02]
type = http
local_ip =  {可以是域名,比如aaa.target.com,local_port=80(http默认端口)}
local_port = 80
custom_domains =  {域名(bbb.test.com)}

[web03]
type = tcp
local_ip = {可以是域名,比如aaa.target.com,local_port=80(http默认端口)}
local_port = 80
remote_port = 2131


完整比如:
[common]
server_addr = 服务器ip
server_port = 7000
token=123123

[web01]
type = http
local_ip = a.com
local_port = 80
custom_domains = 222.222.22.22

[web02]
type = https
local_ip = b.com
local_port = 443
custom_domains = bbb.test.com

[web03]
type = tcp
local_ip = c.com
local_port = 80
remote_port = 2131

(注意版本问题,我这边用frp_0.11.0_windows_amd64版本可以,frp_0.22.0_windows_amd64和frp_0.38.0_windows_amd64版本都不可以,会报错do http proxy request error: no such domain(The page you requested was not found.)。这点真的很坑,我搞了一晚上才试出来)

或者最简单的方法ngrok:

https://blog.csdn.net/wxqee/article/details/100840131

总结

有点麻烦,但是尽量安全一点的暴露内网端口,如果有什么问题,可以评论。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

frp安全内网穿透,安全远程windows,暴露服务 的相关文章

随机推荐

  • 软件测试基础理论学习记录一

    今天是学习 软件测试 的第一天 由于刚开始的综述比较简单 就一次性把前三章看完了 主要包括软测背景 软件开发过程和软测实质三部分内容 1 软件测试背景 通过几个比较有名的软件错误案例 如Intel奔腾浮点除法缺陷等 引出 软件缺陷 的概念
  • Rust数据结构——排序算法(一)

    Rust数据结构 排序算法 一 0x01 常见的排序算法 排序算法是数据结构中很常见的算法 如果你了解过数据结构 那么对 常见的排序算法有哪些 这个问题的回答都懒得答了 那么我还是来列举下吧 选择排序 插入排序 希尔排序 冒泡排序 快速排序
  • TypeScript 常用的工具类型

    TypeScript 常用的工具类型 总结了常用的工具类型 文章目录 TypeScript 常用的工具类型 Awaited
  • App测试经典面试题及参考答案

    正己守道 厚德载物 App测试面试题及参考答案 最近整理了一些关于App测试的面试题 本参照答案是本人在工作实践中总结 仅代表个人观点 如有错误 请谅解 1 问 说一些你在测试过程中常用到的adb命名 答 回答本问题时 首先不要想到哪个命名
  • Python中的继承

    Python中的继承 文章目录 Python中的继承 继承的概念 一 继承的语法 单继承 多继承 二 子类与父类 1 子类重写父类方法 2 子类调用父类的同名方法和属性 super 调用父类方法 小汇总 结语 继承的概念 面向对象编程 OO
  • NSX-T 架构(3)

    传输节点 Edge 在第一篇我们提到了Edge Edge节点 VMware NSX Edge节点是专用于运行无法分发到管理程序的网络服务的服务设备 它们被分组在一个或多个集群中 代表一个能力池 Edge不是一个干活的实例 它是个池 里面专门
  • 龙书笔记(5)

    今天说下颜色和光照 一 颜色 1 颜色表示 RGB数据可用2种不同的结构表示 1 D3DCOLOR eg D3DCOLOR brightRed D3DCOLOR ARGB 255 255 0 0 四个参数的顺序是 Alpha r g b 2
  • 用户界面的需求分析与设计原则

    一 引言 用户界面是人与计算机之间的媒介 用户通过用户界面来与计算机进行信息交换 因此 用户界面的质量 直接关系到应用系统的性能能否充分发挥 能否使用户准确 高效 轻松 愉快地工作 所以软件的友好性 易用性对于软件系统至关重要 目前国内软件
  • python课程设计——单项选择标准化考试

    功能要求 本系统采用序列或字典保存单个试题 每个数据应当包括 题干 选项 答案等信息 本系统功能 1 试题录入 可以随时添加试题 2 试题抽取 每次从试题库中可以随机抽出N道题 N由键盘输入 3 答题 用户可实现输入自己的答案 4 自动判卷
  • MySQL基础语句

    文章目录 前言 帮助信息 注释 数据库操作类语句 连接数据库 查看数据库列表 展示所有数据库 查询当前数据库叫啥 创建数据库 删除数据库 修改数据库编码格式 使用某个数据库 查看当前数据库下所有数据表 表操作 表的约束 查询表结构 查询某个
  • 看懂低压降稳压器(LDO)一篇就够了

    电源管理是电子系统中的的一个基本模块 智能手机 电脑和我们所熟知的绝大多数电子产品都需要这个模块去实现本身的功能 随着人们对电子产品便携性的追求 计算能力的增长 以及传感器的多样化 电源管理设计有了更高的要求 为了满足新的电源设计上的更高的
  • ctfshow php特性

    web89 要求使用get方式传递数据 intval函数如果数组里有值 就输出1 构造payload num 0 web90 这里使用了 intval num 0 函数调用 其中第二个参数为 0 表示使用合适的进制进行转换 intval 函
  • 巴比特

    摘要 元宇宙变得越来越重要 因为它为企业提供了一种与来自世界各地的用户进行交流和协作的新途径 从小企业到大公司 每个品牌都可以踏入虚拟世界 并从中获益 那么一般的企业如何将业务转移到元宇宙呢 这7个步骤了解一下 热点资讯 Meta 宣布大幅
  • 偏微分方程(Partial Differential Equation II)

    数学物理方法 正交曲面坐标系下的分离变量 球函数 勒让德方程的解 勒让德函数 连带勒让德函数 球谐函数 柱函数 贝塞尔方程的解 贝塞尔函数 球贝塞尔方程 偏微分方程 Partial Differential Equation I 偏微分方程
  • php网页如何适应手机端,PC网页的移动端适配兼容性应该如何实现自动适配

    概念 移动时代的今天 现如今随着智能手机的不断发展 移动端搜索的比例也在不断增加 而传统的PC站点在手机端的用户体验度很差 这容易导致大量用户的流失 所以做一个对应的手机站是非常有必要的前端代码的编写永远逃不过 兼容 二词 从前PC时代 因
  • 第四届“泰迪杯”数据分析技能赛通知

    各有关单位 为推广我国高校数据分析实践教学 培养学生数据分析的应用和创新能力 增加校企交流合作和信息共享 提升我国高校的教学质量和企业的竞争能力 由泰迪杯数据分析技能赛组织委员会主办 广东泰迪智能科技股份有限公司承办 广东省工业与应用数学学
  • cgminer 2.2.4 参数详解!

    日期 2012 02 13 分类 Cgminer 版权声明 转载时请以超链接形式标明文章原始出处和作者信息及本声明 http bitcoin blogbus com logs 192244223 html cgminer2 2 4已经发布
  • 用Cookie添加登录界面的记住密码功能

    在网上看到很多关于cookie记录登录密码的功能 但是大部分都是jsp界面 最近刚好有个项目用到了cookie功能 所以编写了这个介绍 补全一下 1 第一步 首先需要在登录界面中写一个form表单 这个不用多说
  • kubernetes理论概念详情(K8S)

    1 优势 2 四组基本概念 3 核心组件 4 其他概念 5 基本命令
  • frp安全内网穿透,安全远程windows,暴露服务

    目录 概述 公网服务器端 内网Windows客户端 外网Windows客户端 附加 暴露多台内网Windows客户端 附加 暴露服务 总结 概述 frp 是一个专注于内网穿透的高性能的反向代理应用 支持 TCP UDP HTTP HTTPS