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

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

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

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

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

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

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

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

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

    要求不高就直接用 wireguard 客户端连接,要求高就用 clash 做分流,家里服务有走 wireguard ,国内服务直连,国外就走梯子。
    lianyanjiajia
        56
    lianyanjiajia  
       28 天前
    我用 cloudflare tunnel + tailscale 一个端口都不用开
    wuzeiyicixing
        57
    wuzeiyicixing  
       28 天前
    你就一个也别开啊,VPN 回去。。。
    bluedawn
        58
    bluedawn  
       27 天前 via iPhone
    @Autonomous 有公网 ip 更好了,tailscale 只是用自己的服务器打个洞,流量会用你的公网 ip 直连的,zerotier 我感觉不太好使。
    swordspoet
        59
    swordspoet  
       25 天前
    @Autonomous #43 我的是深圳电信,WireGuard + ipv6 没有调通,感觉可能是路由器的防火墙阻断了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2958 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 14:27 · PVG 22:27 · LAX 07:27 · JFK 10:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.