type
status
slug
tags
category
icon
password
Property
Nov 15, 2022 02:50 PM
date
summary
frp简介
frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
通过在具有公网 IP 的节点上部署 frp 服务端,可以轻松地将内网服务穿透到公网,同时提供诸多专业的功能特性,这包括:
- 客户端服务端通信支持 TCP、KCP 以及 Websocket 等多种协议。
- 采用 TCP 连接流式复用,在单个连接间承载更多请求,节省连接建立时间。
- 代理组间的负载均衡。
- 端口复用,多个服务通过同一个服务端端口暴露。
- 多个原生支持的客户端插件(静态文件查看,HTTP、SOCK5 代理等),便于独立使用 frp 客户端完成某些工作。
- 高度扩展性的服务端插件系统,方便结合自身需求进行功能扩展。
- 服务端和客户端 UI 页面。
前言
为什么要隐藏流量特征
如下图正常使用FRP过程中,FRP会有明显的流量特征,容易被天眼等设备监测。
于是乎我翻看frp的配置信息发现,原来frp是支持使用TLS证书加密会话的,于是乎我就在想我们是不是可以使用自签tls证书加密frp通信这样,流量检测设备就没法监测发现流量特征了
frp配置tls
生成自签证书
首先我们可以使用openssl生成我们需要的证书,这里需要客户端、服务端和ca证书
1. 生成CA根证书
1.1 准备ca配置文件,得到ca.conf
vim ca.conf
内容如下
1.2 生成ca秘钥,得到client.key
openssl genrsa -out client.key 4096
1.3 生成ca证书签发请求,得到ca.csr
配置文件中已经有默认值了,shell交互时一路回车就行。
1.4 生成ca根证书,得到ca.crt
1.5利用CA证书进行签名
使用CA证书对其它证书进行签名的方法为:
openssl x509 -req -in client.csr -extensions v3_usr -CA ca.crt -CAkey client.key -CAcreateserial -out client.crt
2. 生成终端用户证书
2.1 准备配置文件,得到server.conf
vim server.conf
内容如下
IE 11还是使用CN。
2.2 生成秘钥,得到server.key
openssl genrsa -out server.key 2048
2.3 生成证书签发请求,得到server.csr
配置文件中已经有默认值了,shell交互时一路回车就行。
2.4 用CA证书生成终端用户证书,得到server.crt
开启配置
经过上面的操作已经得到了我们需要的文件,我们这时需要再服务的和客户端开启我们的配置
在frpc.ini添加如下内容
在frps.ini添加如下内容
测试连接正常
抓包验证
经过我们上面的配置frp交互已经使用了tls证书加密,这时候我们再抓包可以看到已经没有了原先的特征了。