V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
eastry
V2EX  ›  程序员

请教下 frp 的安全性

  •  
  •   eastry · 3 天前 · 5816 次点击

    最近整了个阿里云服务器,搭建了 frp 服务,准备将家里的小服务器的部分端口暴露给外网,方面自己在外使用。

    我的使用方式是这样的:

    1 、阿里云服务端只完全开放 7000 ,其他端口都不开放; 2 、阿里云服务端的 auth.token 设置为一个随机生成的复杂 token ; 3 、其他端口(比如:8080 ,8081 ,22 等),需要用到的时候,只要到阿里云上设置一下白名单并开放就行了。

    各位大佬帮忙看看,这么做有没有什么比较严重的风险。还有没有其他可以优化的地方。抱拳

    第 1 条附言  ·  3 天前
    总结一下,主要还是 frps 的端口直接暴露不是很好。两个主要的解决方案:

    1 、像 @totoro625 大佬提到的,使用类似 ddns-go 的工具,更新阿里云白名单的方法,只把 frps 的端口(如:7000 )暴露给家里的 ip 。
    2 、像 @Hanhairizhi 大佬的方法,写程序,主动去 ban 异常的 ip 。

    待我再研究研究。。。。。。
    72 条回复    2026-01-22 12:45:45 +08:00
    penzi
        1
    penzi  
       3 天前
    没有
    cheng6563
        2
    cheng6563  
       3 天前
    frp 里可以开下加密,没了。
    totoro625
        3
    totoro625  
       3 天前
    家里的小服务器肯定能随便跑脚本,跑一个 ddns 。推荐 https://github.com/jeessy2/ddns-go
    阿里云 crontab 弄个脚本,把 ddns 解析域名对应的 ip 自动过白名单
    7000 端口也不用对外开放

    需要访问的设备,如果是笔记本也可以弄个 ddns ,自动过白名单
    Sezxy
        4
    Sezxy  
       3 天前
    stcp 更安全,缺点是访问的时候要用到 frpc
    lmmir
        5
    lmmir  
       3 天前   ❤️ 1
    还不如用 easytier
    Ipsum
        6
    Ipsum  
       3 天前
    搞个 vpn ,在哪都像家一样。
    stephenhallo
        7
    stephenhallo  
       3 天前
    其实比较好的方式是搞个备案域名,然后阿里云服务器上只开放 443 端口,阿里云服务器上部署 nginx 将流量直接反向代理到 frp ,所有的项目文件,包括域名证书啥的都在小服务器上。这样相对安全一些。
    jifengg
        8
    jifengg  
       3 天前
    另外,建议改掉默认 7000 端口,现在 frp 7000 端口也是常规扫描端口了。可能阿里云自己也会检测哦
    eastry
        9
    eastry  
    OP
       3 天前
    @cheng6563
    transport.useEncryption = true
    transport.useCompression = true
    这两个配置吧,已加。感谢
    eastry
        10
    eastry  
    OP
       3 天前
    @totoro625 感谢感谢,昨天一直在找类似的东西。我去研究下。
    eastry
        11
    eastry  
    OP
       3 天前
    @stephenhallo 有想过这种方式,自己有备案的域名,但是是不是每个开放的端口都要一个子域名,这样有点麻烦哎。不过还是感谢你的建议
    eastry
        12
    eastry  
    OP
       3 天前
    @jifengg 嗯嗯,只是为了好描述写的 7000 ,真实情况是没有使用 7000 这个默认端口的。感谢建议。
    ashuai
        13
    ashuai  
       3 天前
    我以前在 win2003 上用过 ipsec ,双方配置同样的密钥就可以互访。现在的版本不知道怎么配了。不知道为什么这个方案很少看到人用
    eastry
        14
    eastry  
    OP
       3 天前
    @Ipsum 暂时还不打算用 vpn 。
    eastry
        15
    eastry  
    OP
       3 天前
    @lmmir 我去研究下 easytier 。感谢建议。
    eastry
        16
    eastry  
    OP
       3 天前
    @Sezxy stcp 是麻烦一点。
    stephenhallo
        17
    stephenhallo  
       3 天前
    @eastry 不用呀,所有域名都是通过 https 走 443 端口呀,添加新的服务只是需要修改配置文件,不需要额外开放端口
    youknowiam
        18
    youknowiam  
       3 天前
    我现在用 vnt+lucky 比较完美解决我远程、端口穿透的问题,无公网也能满速访问家里
    jingcjie
        19
    jingcjie  
       3 天前
    之前用 frp 为了在哪里都能随时访问,后面还是组网算了,我把 rdp 和 ssh 挂 frp 上,每天可以被扫几百次,麻了。
    ntedshen
        20
    ntedshen  
       3 天前
    Hanhairizhi
        21
    Hanhairizhi  
       3 天前
    我是自己写程序监控 frps 日志,有新 ip 进来如果不是本省的 ip 就加到防火墙黑名单,顺便也能阻止这些 ip 攻击其他服务端口。
    ICKelin
        22
    ICKelin  
       3 天前
    frp 会暴露在公网,一般都是尽量避免暴露在公网的,楼上有说 easytier 的了,也可以试试这个,https://github.com/smartethnet/rustun
    sherardxu
        23
    sherardxu  
       3 天前
    同阿里云,我使用 tailscale 暴露内网服务,延迟 7ms
    eastry
        24
    eastry  
    OP
       3 天前
    @stephenhallo 我有暴露多个家里服务器端口的需求,一个子域名只能链接一个吧。
    acisky
        25
    acisky  
       3 天前
    用阿里云 frp 暴露内网的 gogs 服务,不知道怎么被黑产盯上发了好多垃圾广告
    eastry
        26
    eastry  
    OP
       3 天前
    @acisky 你的 gogs 端口是直接暴露吗?还是在阿里云设置了 IP 白名单?
    laminux29
        27
    laminux29  
       3 天前   ❤️ 1
    既然这是给你个人使用的,你直接用端口敲门技术不就行了。端口敲门专门针对这个场景,甚至你连密码都不需要,天下无敌,100% 安全。
    vonfry
        28
    vonfry  
       3 天前
    如果不需要 udp 流量,可以用 ssh (reverse) forward ,本身就有加密,还能按需连接,而且本来 ssh 就是会开放使用的。固定导出的端口拿 systemd 写个 service 就好。

    另外安全问题,除了防拿你的服务器做转发外,更主要的是你 export 的那个服务。

    另外你拿阿里转发的话,如果是 http(s) 是会被阿里检测然后关掉的(解法是备案)。
    milkpuff
        29
    milkpuff  
       3 天前
    用 stcp ,不要直接暴露,会被疯狂扫描。
    suyuyu
        30
    suyuyu  
       3 天前
    求问 腾讯云轻量能不能跑 frp ?
    Achophiark
        31
    Achophiark  
       2 天前
    个人用户使用 frp 没有任何问题的,玩的就是效率,真是性能好,但没有零信任和其他可靠验证,对这方面要求高的可以看看 pangolin(类似开源 cloudflare tunnel)
    stephenhallo
        32
    stephenhallo  
       2 天前
    @eastry 不同子域名,只要是 https ,都走的是服务器的 443 端口呀
    Plutooo
        33
    Plutooo  
       2 天前
    我是家里服务器起一个脚本定时对 ip 加白
    byte10
        34
    byte10  
       2 天前
    我跟上面用 nginx 一样,家里所有需要暴漏的服务连接到 frp ,然后 nginx 代理这些端口。最近暴漏了 nas ,结果被攻击,还好群晖牛逼,3-5 次 密码不对就封锁😂。后来排查了很久,发现 nginx 有一个域名访问的问题,才终于解决攻击。
    DefoliationM
        35
    DefoliationM  
       2 天前 via Android
    tailscale 吧,不用开端口。
    rev1si0n
        36
    rev1si0n  
       2 天前
    这么麻烦干嘛,直接部署一个 openvpn-server ,android ,ios ,win ,linux ,mac 端客户端全覆盖,家里申请个公网 IP ,加 ddns 连服务器都不用。
    hxdyxd
        37
    hxdyxd  
       2 天前 via iPhone
    直接 ikev2 连回家就好了,7x24 小时挂着也不怎么耗电,网络环境跟家里完全一样
    PhDLuffy
        38
    PhDLuffy  
       2 天前
    frp 只开放 444 端口,用 https ,所有内网服务走 444 的 https 端口
    inframe
        39
    inframe  
       2 天前
    wireguard + docker ,或者楼上的 xx vpn,反正各种组网工具解决自己使用的问题
    nxuu
        40
    nxuu  
       2 天前
    @ashuai 估计都习惯用 linux 服务器了 windows 太占资源了
    iShinku
        41
    iShinku  
       2 天前
    自己用:tailscail 之类的回家 VPN
    指定用户用:CF 隧道+邮件认证
    只要不经过身份验证的访问,都认为是不安全的
    likaci
        42
    likaci  
       2 天前
    手机上 Clash 或者 Surge 常开的话, 内网开个 ss-server 最方便, 有公网 ip 就把 ss-server 的端口暴漏出来, 没有公网 ip 就用 frp 把 ss-server 暴漏出来, 用 ss 的密码来确保安全
    配置好策略在家访问直连, 外网访问走 ss-server. 这样完全无痛, 也不会因为 VPN 和翻墙冲突

    轻松访问家中的网络服务
    https://web.archive.org/web/20230324030158/https://community.nssurge.com/d/5
    gearfox
        43
    gearfox  
       2 天前
    想安全不折腾直接 easytier
    shilyx
        44
    shilyx  
       2 天前
    针对 tcp 协议:

    让 frp 在云上监听 127.0.0.1
    用 kcptun 在云上跑一个服务端,监听对应的 udp 端口
    在需要使用的地方跑 kcptun 的客户端,复原 tcp 端口
    kcptun 密码随意,有就行

    这样任何人无法从互联网扫描到你的业务,速度上不用担心,搞不好还更快了
    luis330
        45
    luis330  
       2 天前
    好奇请教一下,frp 会比 vpn 安全吗? 我现在是用 WireGuard ,感觉很方便啊,这样家里有很多服务很多端口,但只需要暴露 1 个端口。
    waltcow
        46
    waltcow  
       2 天前
    现在是公网 IP 接 ssserver-rust , 配合 clash 做规则
    SakuraYuki
        47
    SakuraYuki  
       2 天前
    @likaci surge 直接 ponte 或者 wg 更方便吧
    yisier
        48
    yisier  
    PRO
       2 天前
    可以试下我维护的 [nps]( https://github.com/yisier/nps),可以用 IP 白名单或 IP 黑名单
    a33291
        49
    a33291  
       2 天前
    除非 frp 自身有漏洞导致所在的机器被黑(可以跑 docker 内避免),然后隧道后还是各个机器自行保证安全,比如你通过 frp 保留内网 22 出去,人家不还是要密码或者 key 登录吗,和 frp 又没关系了
    Devifish
        50
    Devifish  
       2 天前
    frp 可以支持 websocket 来建立连接, 可以藏到 nginx 后面
    Molita
        51
    Molita  
       2 天前
    我用 tailscale 。
    然后有一些 flood immich 之类的东西用的 cf tunnel 转发一下,加了一层 access 的访问权限。
    spritecn
        52
    spritecn  
       2 天前
    走白名单 ,已经很安全了吧
    Jacksu
        53
    Jacksu  
       2 天前
    我的做法是,服务器开放 frps 端口(也就是你的 7000 ),有 token 的存在,这不会有什么问题。
    至于穿透服务我只开放在服务器的 127.0.0.1,然后在服务器再搭建一个 Nginx ,只开放 443 端口,所有服务通过域名访问,Nginx 做了处理,不是自己指定的域名不允许访问。SSH/RDP 这种就用 Nginx 的 stream 转发,按需开启
    glaz
        54
    glaz  
       2 天前
    @Ipsum VPN 不会被运营商把 IP 封了吗
    Sezxy
        55
    Sezxy  
       2 天前
    不用 stcp ,那最安全的方式还是暴露 vpn 的端口,先连上 vpn 就能访问家里所有服务
    CSGO
        56
    CSGO  
       2 天前
    你都用白名单了应该没问题。我是懒得弄,想要随时都能访问,用了 fail2ban ,但 frp 的日志,只能显示某 ip 进行连接,不包含任何连接成功错误等信息,所以我只做了简单的规则,比如 5 分钟内只允许 3 个 ip ,24 小时内只允许 20 次等这样,看自己情况。
    cat9life
        57
    cat9life  
       2 天前
    主要是软件本身总是被杀毒软件干掉 心累
    hidumouren
        58
    hidumouren  
       2 天前
    stcp 密钥方式; 可以试试这个,平时自己用的 GUI https://github.com/hidumou/frpc-gui
    xiaomushen
        59
    xiaomushen  
       2 天前
    @vonfry 我之前都是跑 ssh ( autossh )上的,但是用的人多了,就不稳了。换成 gost 后,终于舒服了
    Ipsum
        60
    Ipsum  
       2 天前 via Android
    @glaz 又不是 http 他封你干嘛
    glaz
        61
    glaz  
       2 天前
    @Ipsum 反正我如果用海外的服务器搭建 VPN ,连接几乎秒被墙 IP 。 国内的我就没试过。
    sparkssssssss
        62
    sparkssssssss  
       2 天前
    @glaz #54 国内流量几乎不会管,我用的 openvpn 好几年了,没有问题
    xiaomushen
        63
    xiaomushen  
       2 天前
    @glaz VPN 协议秒识别,当年要被 Ban
    idragonet
        64
    idragonet  
       2 天前
    配合 lucky 开 IP 白名单
    uncat
        65
    uncat  
       2 天前
    wireguard.

    用随便一台 linux ,通过 systemd-networkd 加份 netdev 和 network 就搞定了,很简单的。
    iSecret
        66
    iSecret  
       2 天前
    之前也是一直用 frp ,总觉得简单方便,后来越想越不对劲,翻了一下 frp server log 全是爆破扫描的连接日志,后来改用 tailscale 了,自建 DERP 服务器做中转。
    wsbqdyhm
        67
    wsbqdyhm  
       2 天前
    @youknowiam lucky 端口是不是随机的。
    smileeast
        68
    smileeast  
       2 天前
    如果不是需要给其他人使用,推荐用 easytier 或者 wireguard 之类的,反正都是自己用,能回家就行,我用 easytier 很舒服
    BadAngel
        69
    BadAngel  
       1 天前
    我理解最安全是任何端口都不开,出方向只开特定端口,起个出方向访问特定端口的域名请求,仅靠反向 tls 建联
    RangerWolf
        70
    RangerWolf  
       1 天前
    @eastry #11 有备案的话 阿里云弄一个泛域名解析,用 certbot 自动管理证书,我觉得好像还行
    kasusa
        71
    kasusa  
       1 天前
    frp 只要开个密码就行。没谁会破解开你的密码。

    或者你懒得加密码可以用安全组,只允许你家 ip 连服务器 7000 port 。其他人也用不了。
    julyclyde
        72
    julyclyde  
       1 天前
    ftp 开 HTTP 代理模式呗?
    CONNECT 到内网端口
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   4558 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:54 · PVG 17:54 · LAX 01:54 · JFK 04:54
    ♥ Do have faith in what you're doing.