加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

FRP指定访问者 安全地泄露内网服务

发布时间:2021-11-14 16:45:54 所属栏目:安全 来源:互联网
导读:之前的教程介绍的frp内网穿透都是用tcp模式,但是tcp模式是直接把端口映射到公网IP上,很容易被扫描爆破,还是存在一定的风险。我们可以使用frp提供的stcp模式来避免公开暴露端口,要求访问者运行一个frpc作为身份认证和流量转发,把访问者的本地端口绑定到
之前的教程介绍的frp内网穿透都是用tcp模式,但是tcp模式是直接把端口映射到公网IP上,很容易被扫描爆破,还是存在一定的风险。我们可以使用frp提供的stcp模式来避免公开暴露端口,要求访问者运行一个frpc作为身份认证和流量转发,把访问者的本地端口绑定到内网frpc服务上。不再公开映射内网frpc端口。
 
frps配置
 
作为中间传输的服务器端的frps配置不变,参考之前的文章,如果想自定义其他端口,注意两端的frpc中的"server_addr"、"server_port"参数要一致。frps用到的端口要在防火墙或者宝塔那里放行。
 
frps.ini
 
[common]
bind_port = 7100
token=12310086N
 
dashboard_port = 7501
dashboard_user = admin
dashboard_pwd = admin123
 
 
 
客户端
 
stcp模式的演示,我们以windwos的远程桌面为例,不再直接把内网的3389端口映射到公网IP的端口上,而是通过stcp模式指定验明访问者分身,要求访问者也要运行一个frpc 作为身份校验和流量转发,让访问者把访问本地端口的请求转发到内网机器上。
 
frpc两端分为外部的"控制端"和处于内网中的"受控端"。
 
内网中的受控端
 
编辑 fcpc.ini文件。服务[secret_rdp]之类的服务名可以自定义,见名知意即可。
 
[common]
server_addr = 服务器ip
server_port = 7100
token=12310086N
 
[secret_rdp]
type = stcp
sk = 58iD9tfjPIHQ0dWO
local_ip = 127.0.0.1
local_port = 3389
frpc.exe -c frpc.ini
 
 
外网的控制端
 
编辑 fcpc.ini文件,服务[secret_rdp_visitor]之类的服务名可以自定义,见名知意即可。
 
[common]
server_addr = 服务器ip
server_port = 7100
token=12310086N
 
[secret_rdp_visitor]
type = stcp
role = visitor
sk = 58iD9tfjPIHQ0dWO
server_name = secret_rdp
bind_addr = 127.0.0.1
bind_port = 30009
frpc.exe -c frpc.ini
 
 
牵线成功
 
两端都显示连接成功了,frp的在线面板里也看到stcp中多了"secret_rdp"一个连接记录。
 
 
 
 
控制端启动连接成功时候也会看到frps出现连接成功的日志。
 
 
 
连接
 
我们在外网的控制端,打开远程桌面,输入 "127.0.0.1:30009",就弹出来连接成功的登录界面了。
 
 
 
原 理
 
原理两端的frpc启用的stcp模式,就是要求frps把一端访问本地端口的请求转发到内网frpc上。一端必须运行访客模式的frpc表明身份才会被frps接纳再转发。
 
受控端
 
受控端中frpc读取配置文件:
 
“[secret_rdp]”服务中,以stcp模式,把受控端本地的3389转发到服务器的frps上。
"sk"是stcp服务的密钥,两端中的"sk"不匹配,不允许连接。
受控端stcp模式以服务名的形式匹配连接,不需要映射到公网IP的端口上,也不再需要remote_port。
控制端
 
控制端中的配置:
 
[secret_rdp_visitor]服务中"role=visitor"是指定本机的服务为"访问者"的stcp模式。
"sk"密钥。
控制端中的“server_name”是指定要连接的受控端中的服务名,服务名必须一致。
控制端中的"bind_addr"必须是"127.0.0.1"。
"bind_addr"、"bind_port"这两个参数是指本地端口。指定本地frpc转发要通过frps和受控端连接的本地端口。
流程
 
frps启动,等着两端frpc的stcp转发配置。
受控端frpc启动,读取配置文件:服务名[secret_rdp]以stcp模式,将本地的3389端口转发到frps上。
控制端frpc读取配置文件和frps连接。
控制端frpc的配置指定"sk"密钥和受控端的服务名,要frps把控制端本地30009端口和受控端的[secret_rdp]服务绑定上。
控制端访问本地30009端口,请求被控制端的frpc转发到frps上,frps再将请求转发到受控端的[secret_rdp]服务上。
受控端[secret_rdp]服务里也指明了受控端哪些端口来接收响应处理被转发请求。
 
总 结
 
流程就是frpc指定使用stcp访问,要求校验正确身份和服务名后再转发请求,把访问者的本地端口绑定到内网frpc服务上。不再直接把受控端映射到公网端口上,也避免因为公开被扫描爆破的风险,安全的暴露内网服务。表达水平有限,多读几遍上面的步骤,就是把访问者的本地端口绑定到内网frpc服务上,这一套下来比较绕,如果没看懂,照着教程操作一次,理解了就豁然开朗了。同时也可以着手实践安全的暴露其他的内网服务,比如MySQL:指定控制端访问本地的33306端口的响应由内网的MySQL 3306响应。
 
 
 
本文转载自微信公众号「Linux就该这么学」,可以通过以下二维码关注。转载本文请联系Linux就该这么学公众号。

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读