关于linux:FRP指定访问者安全地暴露内网服务

7次阅读

共计 2385 个字符,预计需要花费 6 分钟才能阅读完成。

之前的教程介绍的 frp 内网穿透都是用 tcp 模式,然而 tcp 模式是间接把端口映射到公网 IP 上,很容易被扫描爆破,还是存在肯定的危险。咱们能够应用 frp 提供的 stcp 模式来防止公开裸露端口,要求访问者运行一个 frpc 作为身份认证和流量转发,把访问者的本地端口绑定到内网 frpc 服务上。不再公开映射内网 frpc 端口。
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

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
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

客户端
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
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

外网的管制端
编辑 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 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

牵线胜利
两端都显示连贯胜利了,frp 的在线面板里也看到 stcp 中多了 ”secret_rdp” 一个连贯记录。
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

管制端启动连贯胜利时候也会看到 frps 呈现连贯胜利的日志。

FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

连贯
咱们在外网的管制端,关上远程桌面,输出 “127.0.0.1:30009”, 就弹出来连贯胜利的登录界面了。
FRP 指定访问者: 平安地裸露内网服务 FRP 指定访问者: 平安地裸露内网服务

原理
原理两端的 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 响应。

正文完
 0