一、前言
通过上次的《FRP入门篇》相信大家对于FRP有了初步的了解,在该文章提到FRP可以将内网服务以安全方式中转暴露到公网中,那么本文重点讲述在FRP中对安全的通信加密、BasicAuth 鉴权、TLS双向身份验证的操作使用。
对于FRP不太熟悉的同学可以先查看下入门篇文章:
二、通信加密
1、概述
将 frpc 与 frps 之间的通信内容加密传输,将会有效防止传输内容被截取。加密算法采用 aes-128-cfb,如果传输的报文长度较长,通过对传输内容进行压缩,可以有效减小 frpc 与 frps 之间的网络流量,加快流量转发速度,但是会额外消耗一些 CPU 资源。
2、使用
在frpc.ini配置文件中添加 use_encryption = true 即可

三、BasicAuth 鉴权
1、概述
BasicAuth 鉴权是通过在FRP客户对于代理的服务配置访问账号/密码,只有输入对应的账号/密码后才能进行访问,从而在一定程度上提高系统的安全性。
2、使用
2.1、客户端配置
在frpc.ini配置文件中添加以下配置:
http_user =
http_pwd =
比如:

2.2、启动客户端
执行启动命令:frpc -c frpc.ini
2.3、效果验证
如下图所示, 在浏览器上访问 http://my.frp:8888/,会弹出登录界面,只有输入上面配置的账号和密码后才能访问。

四、TLS双向身份验证
1、概述
通过配置use_encryption
能有效防止流量内容在通信过程中被盗取,但是无法判断对方的身份是否合法,存在被中间人攻击的威胁。为此 frp 支持 frpc 和 frps 之间的流量通过 TLS 协议加密,并且支持客户端或服务端单向验证,双向验证等功能。
单向验证则是frpc 需要额外加载 TLS 配置,frps 需要额外加载 ca 证书。frps 通过 ca 证书单向验证 frpc 的身份。这就要求 frpc 的 client.crt
对 frps 的 ca 是合法的。
双向验证则是frpc 和 frps 通过本地 ca 证书去验证对方的身份。理论上 frpc 和 frps 的 ca 证书可以不同,只要能验证对方身份即可。
本文则以双向验证的方式进行讲解。
2、使用
2.1、生成证书
本文采用OpenSSL 生成证书进行演示,OpenSSL是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。
准备工作
创建证书目录,并将系统默认配置文件复制到当前目录下
mkdir cert
cd cert
cp /etc/pki/tls/openssl.c
如下图所示:

生成CA证书
执行以下命令生成CA证书。
-subj "/CN=example.ca.com" -days 5000 -out ca.crt
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key
如下图所示:

生成FRPS证书
命令如下
openssl genrsa -out server.key 2048
openssl req -new -sha256 -key server.key
-subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=server.com"
-reqexts SAN
-config
-out server.csr
openssl x509 -req -days 365 -sha256
-in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial
-extfile
-out server.crt

注意这里IP或域名替换为自己的。
生成FRPC证书
命令如下
openssl genrsa -out client.key 2048
openssl req -new -sha256 -key client.key
-subj "/C=XX/ST=DEFAULT/L=DEFAULT/O=DEFAULT/CN=client.com"
-reqexts SAN
-config
-out client.csr
openssl x509 -req -days 365 -sha256
-in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial
-extfile
-out client.crt

注意这里IP或域名替换为自己的。
2.2、服务端配置
在服务端的frps.ini文件中添加以下证书对应配置内容,如:

2.3、客户端配置
在客户端的frpc.ini文件中添加以下证书对应配置内容,如:

然后将服务端和客户端进行重启即可。

版权声明:本文内容来自CSDN:不甘于平凡的溃败,遵循CC 4.0 BY-SA版权协议上原文接及本声明。
本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
原文链接:https:
如有涉及到侵权,请联系,将立即予以删除处理。
在此特别鸣谢原作者的创作。
此篇文章的所有版权归原作者所有,与本公众号无关,商业转载建议请联系原作者,非商业转载请注明出处。