前言

近期和往常一样在网上逛着 Gayhub ,突然发现了一个项目可以使得 FRP 支持多用户认证(泪目啊 T_T ),往常的 FRP 使用过程中都是基于 Token 方式对用户身份鉴权的,但是这个 Token 一旦给了他人或将配置文件给了他人,也就意味着这个 Token 就泄露出去了,频繁的更换 Token 也意味着 FRP_Client 端也要频繁更新 Token 并重启,这显然不是明智之举。使用此插件可解决多用户认证的问题,为特定用户群体设置特定 Token 验证,解决了 FRP 唯一 Token 的问题,下面就说说食用方法吧。

fp-multiuser

这款插件也是 FRP 项目作者开发的,专门用于支持 FRPS 多用户鉴权的服务端插件,其项目链接如下:

fp-multiuser 会以一个单独的进程运行,并接收 FRPS 发送过来的 HTTP 请求。

需要 FRP 版本 >= v0.31.0

食用示例

  1. 将 fp-multiuser 下载到相关目录下,在该目录下创建一个文本文件,以 tokens 文件为例(文件名可自定义),内容为所有支持的用户名和 Token:

    user1=123
    user2=abc

    每一个用户占一行,用户名和 token 之间以 = 号分隔。

  2. 运行 fp-multiuser,指定监听地址以及 Token 存储文件路径:

    ./fp-multiuser -l 127.0.0.1:7200 -f ./tokens
  3. 在 frps 的配置文件中注册插件,并启动:

    # frps.ini
    [common]
    bind_port = 7000
    
    [plugin.multiuser]
    addr = 127.0.0.1:7200
    path = /handler
    ops = Login
  4. 在 frpc 中指定用户名,在 meta 中指定 Token,用户名以及 meta_token 的内容需要和之前创建的 Token 文件匹配:

    user1 的配置:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    user = user1
    meta_token = 123
    
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 6000

    user2 的配置:

    # frpc.ini
    [common]
    server_addr = x.x.x.x
    server_port = 7000
    user = user2
    meta_token = abc
    
    [ssh]
    type = tcp
    local_port = 22
    remote_port = 6000
  5. 启动 frps ,再运行 frpc ,此时即可食用不同用户和 Token 对其鉴权,例如在渗透测试中,可以使用临时 Token 去使用 socks 代理而不再担心唯一 Token 泄露了,使用完后可删除该 Token,较为完善的解决了 frps 唯一 Token 鉴权的问题。
注:食用该方法,原先的在 frps 中配置的 token 字段需删除或注释掉,否则仍优先 Token 鉴权,此方法将失效(应该未兼容~)。

开机自启动

为保证 fp-multiuser 服务能够开机自启动,故需要设置一下,写入的命令如下:

[root@tx3_yang ~]# vim /usr/lib/systemd/system/fp-multiuser.service
[Unit]
Description=A frp server plugin to support multiple users for frp
After=network.target

[Service]
Type=simple
User=nobody
Group=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/usr/local/fp-multiuser/fp-multiuser -l 127.0.0.1:7200 -f ./tokens
WorkingDirectory=/usr/local/fp-multiuser/

[Install]
WantedBy=multi-user.target

[root@tx3_yang ~]# 

其中,根据自己的设置可修改的字段如下:

  • ExecStart:启动的命令参数。
  • User:指定守护运行的用户,上述用户为 nobody 用户 ;若 fp-multiuser 服务指定的启动端口在 1024 以下,则必须为 root 用户,字段注释或删除则默认 root 守护程序运行。
  • Group:指定守护运行的用户组。
  • WorkingDirectory:指定插件所工作的目录,指定后可使用相对路径参数;否则,需使用绝对路径参数。

设置完后,先设置目录的用户与用户组权限:

chown -R nobody:nobody /usr/local/fp-multiuser

daemon-reload 重载配置一下:

systemctl daemon-reload

再设置开机自启:

systemctl enable fp-multiuser.service

启动 fp-multiuser

systemctl start fp-multiuser.service

其余操作命令如下:

# 停止运行
systemctl stop fp-multiuser.service

# 查看状态
systemctl status fp-multiuser.service
End

本文标题:FRPS设置多用户鉴权

本文链接:https://www.isisy.com/1368.html

除非另有说明,本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

声明:转载请注明文章来源。

最后修改:2022 年 10 月 09 日
如果觉得我的文章对你有用,请随意赞赏