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

请教下 frp 的安全性

  •  
  •   eastry · 1 天前 · 5133 次点击

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

    我的使用方式是这样的:

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

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

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

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

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

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

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

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

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

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

    用随便一台 linux ,通过 systemd-networkd 加份 netdev 和 network 就搞定了,很简单的。
    iSecret
        66
    iSecret  
       13 小时 30 分钟前
    之前也是一直用 frp ,总觉得简单方便,后来越想越不对劲,翻了一下 frp server log 全是爆破扫描的连接日志,后来改用 tailscale 了,自建 DERP 服务器做中转。
    wsbqdyhm
        67
    wsbqdyhm  
       13 小时 15 分钟前
    @youknowiam lucky 端口是不是随机的。
    smileeast
        68
    smileeast  
       13 小时 13 分钟前
    如果不是需要给其他人使用,推荐用 easytier 或者 wireguard 之类的,反正都是自己用,能回家就行,我用 easytier 很舒服
    BadAngel
        69
    BadAngel  
       3 小时 35 分钟前
    我理解最安全是任何端口都不开,出方向只开特定端口,起个出方向访问特定端口的域名请求,仅靠反向 tls 建联
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   1032 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 19:12 · PVG 03:12 · LAX 11:12 · JFK 14:12
    ♥ Do have faith in what you're doing.