0


FRP隧道代理研究与优化

FRP:frp 是一个开源、简洁易用、高性能的内网穿透和反向代理软件,支持 tcp, udp, http, https等协议。

URL:https://github.com/fatedier/frp

最新的0.44版:

1.plugin_key_path如果和plugin_crt_path对于插件https2https和为空,则使用自动生成的证书https2http。
2.服务器仪表板支持 TLS 配置。

特点:

1.客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
2.采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
3.代理组间的负载均衡。
4.端口复用,多个服务通过同一个服务端端口暴露。
5.多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 6.客户端完成某些工作。
7.高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
8.服务端和客户端 UI 页面

FRP代理类型:

类型 描述
tcp 单纯的 TCP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
udp 单纯的 UDP 端口映射,服务端会根据不同的端口路由到不同的内网服务。
http 针对 HTTP 应用定制了一些额外的功能,例如修改 Host Header,增加鉴权。
https 针对 HTTPS 应用定制了一些额外的功能。
stcp 安全的 TCP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
sudp 安全的 UDP 内网代理,需要在被访问者和访问者的机器上都部署 frpc,不需要在服务端暴露端口。
xtcp 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。
tcpmux 支持服务端 TCP 端口的多路复用,通过同一个端口访问不同的内网服务。

1. 了解目录:

作者工具的帮助手册:https://gofrp.org/docs/overview/

大概分析了一下它的内容:
Cmd:命令行模式
Conf:配置文件示例
Pkg:主要文件
Web:web模式

2. 工作模式

客户端:(frpc) 加载配置:(frpc.ini)
服务端:(frps) 加载配置:(frps.ini)

3. 使用

命令:
(linux)
./frps -c frps.ini
./frpc -c frpc.ini
(windows)
frps.exe -c frps.ini
frpc.exe -c frpc.ini

二开:
TLS加密

tlsenable = true #frpc.ini中加入

传输压缩

use_encryption = true
use_compression = true #frpc.ini中加入,开启tls不必进行传输压缩

信息修改

新版:\frp-dev\pkg\msg\msg.go
旧版:\frp\models\msg\msg.go
Version string

json:"NS_learn"

Hostname string

json:" NS_ip"

Os string

json:" NS_0s"

Arch string

json:" NS_ac"

User string

json:" NS_username"

PrivilegeKey string

json:" NS_pKEY"

Timestamp int64

json:" NS_time"

RunId string

json:" NS_rID"

Metas map[string]string

json:" NS_m"
流量特征修改

新版:\pkg\util\net\tls.go
旧版:\frp\utils\net\tls.go
var (FRP_TLS_HEAD_BYTE = 0x16 # 0x16十六进制修改)
c.Write([]byte{byte(FRP_TLS_HEAD_BYTE),byte(0x71),byte(0x72)}) #修改
sc, r := gnet.NewSharedConnSize(c, {4}) #4修改
buf := make([]byte, {3}) #3修改
if n == 1 && int(buf[0]) == FRP_TLS_HEAD_BYTE { #1修改

写死配置

pkg\config\client.go # frpc
pkg\config\server.go # frps

(根据自己想要的配置来进行写死)

GO编译

set GOARCH=amd64
set GOOS=linux
go build main.go

效果

在这里插入图片描述

优化FRP-Github链接

https://github.com/CllmsyK/nsfrp_0.45_amd64

使用

目标:nsfrp_0.44.exe
VPS:./nsfrp_0.44_mad64

拓展方法
方法一:远程加载frpc.ini(配置隐藏)

缺点:看命令日志会暴露一个web服务端,对流量做分析仔细点还是能看到
优点:隐藏配置文件,给溯源团队增加工作量
使用:

思考:配置文件只是用于加载,通过快速打点获取公网上的任何一台web服务,将配置文件上传,再通过公网得配置文件来加载进去frpc.exe中,接着把该配置文件从该web服务器上删除,如果再给该vps Ip做个CDN隐藏,是否能让溯源团队工作量增加。
在这里插入图片描述

方法二:购买CDN域名来替代真实IP(有钱即可)
方法三:通过域前置隐藏真实IP(未实现)
标签: web安全

本文转载自: https://blog.csdn.net/weixin_47533648/article/details/127346704
版权归原作者 Cllmsy_K 所有, 如有侵权,请联系我们删除。

“FRP隧道代理研究与优化”的评论:

还没有评论