V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。
Autonomous
V2EX  ›  NAS

如何减少 NAS 端口暴露至公网

  •  
  •   Autonomous · 4 天前 via iPhone · 3297 次点击
    NAS 的域名是 example.com ,部署了 SSL 证书,上面有若干敏感服务,例如端口号是 1234 ,将其映射到公网,防火墙放行,通过访问 https://example.com:1234 获得服务。
    一段时间后被爆破攻击,考虑隐藏这个端口,不再暴露至公网,防火墙不再放行。考虑引入一种验证机制,验证通过后直接访问 https://example.com:1234 获得服务,允许在服务端和客户端进行配置,配置好后应当自动完成这种验证,无需用户手动操作,有何较好的方案
    第 1 条附言  ·  3 天前
    感谢各位,看建议比较多的是使用 WireGuard ,遂尝试部署了下,踩了好多坑,终于调通,全过程发到另一个帖子了 https://www.v2ex.com/t/1073258
    58 条回复    2024-09-17 14:49:47 +08:00
    yeh
        1
    yeh  
       4 天前
    docker 部署个 ss ,vmess 啥的

    写个规则,在外先回家,再访问 nas 。
    dropdatabase
        2
    dropdatabase  
       4 天前   ❤️ 1
    Port Knocking
    ggmm001
        3
    ggmm001  
       4 天前
    通过子域名做反向代理
    hronro
        4
    hronro  
       4 天前 via Android
    用 VPN 。我路由器上直接配置拒绝所有由公网到内网的连接,简单粗暴。
    tomczhen
        5
    tomczhen  
       4 天前
    HTTPS 双向验证
    SeanChang
        6
    SeanChang  
       4 天前
    用雷池 WAF 挡一下。

    家庭网络告别裸奔:群晖一键部署雷池 WAF 防火墙教程: https://xuanyuan.me/blog/archives/908
    dfdd1811
        7
    dfdd1811  
       4 天前
    自己的就 vpn 回家,通过内网连。需要公共就 fail2ban 。我群晖的端口都不放公网了
    Trim21
        8
    Trim21  
       4 天前
    我用的是 pomerium ,直接把所有需要验证的服务都丢到反向代理后面去就行了
    SeanChang
        9
    SeanChang  
       4 天前
    安装后把群晖或者群晖的上流的软路由之类的端口全关闭,或者用群晖的防火墙关闭端口,只留一个端口,外网通过访问这个端口进入再通过雷池 WAF 监听这个端口,根据域名判断进行反向代理即可。

    雷池最近更新了几个版本,上面的教程可能有点过时了,可以做个参考。
    mikewang
        10
    mikewang  
       4 天前 via iPhone
    参考 https://v2ex.com/t/982608
    端口处于打开状态,域名不正确选择直接关闭连接,可一定程度上避免基于 ip 的 http 扫描
    heavymetals
        11
    heavymetals  
       4 天前
    我用的 wireguard 回家,路由器只要开一个 wireguard 端口就行
    pxiphx891
        12
    pxiphx891  
       4 天前
    用 wireguard
    wshcdr
        13
    wshcdr  
       4 天前
    群晖上开启两步验证,就安全多了
    CodeAllen
        14
    CodeAllen  
       4 天前
    像 zerotier 这样虚拟内网不就好了,VPN 是最简单的方式,权限验证也都很成熟,而且都有加密,要说缺点就是得后台跑服务
    0o0O0o0O0o
        15
    0o0O0o0O0o  
       4 天前 via iPhone
    wireguard
    fiveStarLaoliang
        16
    fiveStarLaoliang  
       4 天前   ❤️ 3
    1. tailscale 、wireguard 等组网工具
    2. 端口隐射加秘钥验证
    3. 端口敲门
    4. 其他待补充
    COOOOOOde
        17
    COOOOOOde  
       4 天前 via Android
    说起来我有一个想法,做一个服务维护一个防火墙的时限白名单 再暴露一个网页服务,网页上输入密码后将当前访问 ip 加到白名单上,每个 ip 限制时间访问比如一天,过期移除白名单。
    不知道有没有现成的
    suuuch
        18
    suuuch  
       4 天前
    我有一个特别不方便的做法,就是在每天凌晨我在睡觉的时间里,有几个小时是直接关机的。。通过日志,能看出来被访问的频率大幅度降低。
    Andrue
        19
    Andrue  
       4 天前
    一定要用公网就双向 tls 试试,当然最好还是用组网工具做安全环境比较好
    heavymetals
        20
    heavymetals  
       4 天前
    @COOOOOOde 有的 vpn 脚本有这种功能,具体是哪个忘了,就是用梯子之前先访问一个链接,把当前 ip 添加到白名单里,然后才能连接上
    Autonomous
        21
    Autonomous  
    OP
       4 天前 via iPhone
    @SeanChang 研究了下雷池,感觉大而重啊
    totoro625
        22
    totoro625  
       4 天前
    @COOOOOOde #17 我自己手搓了一个
    后台运行 ddns-go 将当前机器 ip 解析到一个 ddns 域名上,机器每隔 5 分钟将当前 ddns 的 ip 添加到白名单,每天 24 点清空
    手机是访问一个 web 网页,写入当前访问 ip 到 cloudflare kv ,再获取 ip 进行放行

    GPT 写了一个通过点击网页按钮,PHP 执行 shell 放行当前访问 ip 的脚本,但是感觉开放这个网页,并给这么高的权限更加不安全
    leconio
        23
    leconio  
       4 天前 via iPhone
    自爆让运营商回收公网 ip ,然后打洞那个是动态端口,动态端口实时更新到 cf ,然后 cf302 到 nas 。
    securityCoding
        24
    securityCoding  
       4 天前 via Android
    套个 cf
    glcolof
        25
    glcolof  
       4 天前
    用 n2n 组建虚拟局域网,与局域网一样使用,但是不暴露任何端口在公网。
    但是需要一台公网服务器做中转。
    GooMS
        26
    GooMS  
       4 天前 via Android
    Tail scale
    piero66
        27
    piero66  
       4 天前 via Android
    用虚拟组网,不要用端口映射
    mcone
        28
    mcone  
       4 天前
    你平时也就几个 ip 访问你的 nas 吧(手机网络,家庭公网,公司电脑,常用梯子),加个白然后其他防火墙伺候就行了。
    说了你可能不行,我前两个网都加的甚至都是/16 ,从后台看爆破的就少多了
    farmer01
        29
    farmer01  
       4 天前
    最安全的还是 VPN 回家。
    zyq2280539
        30
    zyq2280539  
       4 天前
    开防火墙,所有开放端口一律手动控制,尽量使用 nginx 来进行转发,这样有问题可以查日志。
    bluedawn
        31
    bluedawn  
       4 天前 via iPhone
    你是不是在找 Tailscale ?
    lineezhang8848
        32
    lineezhang8848  
       4 天前
    vpn
    bluedawn
        33
    bluedawn  
       4 天前 via iPhone
    如果需要提供外部服务,用 cloudflare tunnel 穿透,不暴露任何端口,还能有 cf 的 cdn 防护
    yinmin
        34
    yinmin  
       4 天前 via iPhone
    https 双向证书认证,绝对安全
    z5238384
        35
    z5238384  
       4 天前
    推荐一下 nginx proxy manager 搭配 crowdsec 就好,家用基本够了,参考: https://sspai.com/post/88908 , 就 2 个 docker 的事情。 你如果要方便的话,还是这个,真不像暴露端口,直接 vpn ,相信也不问了
    skadi
        36
    skadi  
       4 天前
    暴露一个端口,nginx 代理二级域名.全都开启 passwd
    BugCry
        37
    BugCry  
       4 天前 via Android
    一堆花里胡哨的,@dropdatabase 是正解
    MrOops
        38
    MrOops  
       4 天前
    我用的 nginx proxy manager 反代,然后把 npm 的端口在 cloudflare 做一个 origin rules ,这样一举两得,又能减少端口暴露,又能甩掉端口号直接访问,配合 cf 的 zero trust ,还可以通过 email/github/google 等服务做验证。
    缺点就是国内访问有点慢,不过反正服务都是我自己用,而且 24 小时挂梯子,不算什么大问题
    Jhma
        39
    Jhma  
       4 天前
    都 2024 了还在暴露服务端口,哪天被勒索了就知道痛了,说三遍:只开放 VPN 端口!只开放 VPN 端口!只开放 VPN 端口!
    boshok
        40
    boshok  
       4 天前
    Cloudflare Tunnel
    GeekGao
        41
    GeekGao  
       4 天前
    用 Tailscale ,这类免费 VPN 轻松解决安全问题。
    其他啥 Port Knocking 的,还要装额外的服务端/客户端,不方便
    z5e56
        42
    z5e56  
       4 天前 via Android
    ssh tunneling
    Autonomous
        43
    Autonomous  
    OP
       3 天前
    感谢各位爷,先后尝试了 SS 和 WireGuard ,踩了好多坑终于把 WireGuard 调通,同城同运营商延迟大概 100~200ms
    xdzhang
        44
    xdzhang  
       3 天前
    我直接暴露在外的,只屏蔽了国外 ip 。
    Jacobson
        45
    Jacobson  
       3 天前
    搞台堡垒机,然后家里专门开一台 WIN 对外公开,并且只允许这保堡垒机的 IP 连接相关端口,其余 IP 一律拒绝。
    ic3z
        46
    ic3z  
       3 天前 via iPhone
    frp 配置 stcp 只能本地连
    qfchannel
        47
    qfchannel  
       3 天前
    我全走 cf 隧道,除了 bt 没漏别的
    WizardLeo
        48
    WizardLeo  
       3 天前
    @MrOops 用 origin rules 就得走 cf 的 cdn 了吧,访问自家 nas 还得走一遍全球有点得不偿失。我感觉就 op 的需求,国内直连得是必须的。
    glcolof
        49
    glcolof  
       3 天前
    @Autonomous 延迟有点高了,是不是哪里的配置不够优化?
    我这边测试下来,广电省内跨城到电信,延迟 50 毫秒左右。同城电信到电信 30 毫秒左右。
    Rinndy
        50
    Rinndy  
       3 天前 via iPhone
    你们都是 ipv4 公网?
    sn0wdr1am
        51
    sn0wdr1am  
       3 天前
    使用 zerotier 进行虚拟局域网组网,是不是一个方案?
    Autonomous
        52
    Autonomous  
    OP
       3 天前
    @CodeAllen
    @GooMS
    @bluedawn
    @GeekGao
    @sn0wdr1am

    很久以前部署过 ZeroTier ,没搞通,考虑到我有公网 IP ,所以还是喜欢点对点的模式,不依赖任何中转,开源的解决方案。
    Autonomous
        53
    Autonomous  
    OP
       3 天前
    @glcolof 可能是测延迟的链接有问题,我用的是 Loon ,内置的测延迟链接是 http://www.gstatic.com/generate_204 ,即使我在内网都有 15-20ms
    Autonomous
        54
    Autonomous  
    OP
       3 天前
    @Rinndy 老用户了,跟装机小哥关系好,公网 IP 一直在
    lin41411
        55
    lin41411  
       2 天前 via iPhone
    做个 wireguard ,双向密钥认证基本没破解可能。只需要开放一个自定义端口,要扫出来也很不容易。

    要求不高就直接用 wireguard 客户端连接,要求高就用 clash 做分流,家里服务有走 wireguard ,国内服务直连,国外就走梯子。
    lianyanjiajia
        56
    lianyanjiajia  
       2 天前
    我用 cloudflare tunnel + tailscale 一个端口都不用开
    wuzeiyicixing
        57
    wuzeiyicixing  
       2 天前
    你就一个也别开啊,VPN 回去。。。
    bluedawn
        58
    bluedawn  
       1 天前 via iPhone
    @Autonomous 有公网 ip 更好了,tailscale 只是用自己的服务器打个洞,流量会用你的公网 ip 直连的,zerotier 我感觉不太好使。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5415 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 01:31 · PVG 09:31 · LAX 18:31 · JFK 21:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.