V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lazyjohnzhou
V2EX  ›  NAS

请教一下 NAS 的网络安全

  •  
  •   lazyjohnzhou · 3 天前 · 1796 次点击
    最近入手了极空间 Z4 Pro ,计划自建一些简单的云服务自己使用,初衷是想把数据留在自己手上,不想在各个平台之间转。唯一就是有点担心网络安全问题,所以想请教一下:
    1. 使用 Docker 的话就要对外暴露端口,这个安全性是不是会比不使用 Docker 低很多?我现在使用 DDNSTO 来做内网穿透,这种方式是不是因为只暴露特定的端口,在一定程度上能提高一点安全性?
    2. 我想用 CouchDB 来实现 Obsidian 同步,但是 CouchDB 的管理端口和服务端口不能分开,是不是应该用 nginx 来做一个反向代理来禁止外网管理 CouchDB ?
    3. 使用极空间自身例如相册、文件同步之类的服务安全性是不是会高很多?
    4. 使用 Docker 的话,是不是一般来说最坏的情况只是容器被入侵,导致被映射到容器中的目录被访问或破坏,NAS 系统本身还是安全的?
    5. 有没有一些 NAS 安全性的最佳实践?
    18 条回复    2024-06-28 19:30:01 +08:00
    ladypxy
        1
    ladypxy  
       3 天前 via iPhone
    要安全,就不要把 NAS 连接到网上。而是通过 VPN 访问家里网络,然后再访问 NAS
    lazyjohnzhou
        2
    lazyjohnzhou  
    OP
       3 天前
    我是个网络小白,还有几个问题:
    1. 如果使用 VPN 或 WireGuard 来访问 NAS 的话,手机和电脑就要在打开 VPN 应用的时候才能访问 NAS 吗?
    2. 我看有人说要限制 NAS 暴露的地址和端口,这个我不太明白。要实现的话是不是需要在路由器中限制端口?还是说在 NAS 系统中就可以限制?
    3. 在极空间中可以设置 IP 白名单或者 IP 自动禁止吗,还是要在 Docker 负责做代理的容器中做这个事情?
    4. 对于个人 NAS 来说,需要考虑设置自动备份数据到百度云盘吗?
    lazyjohnzhou
        3
    lazyjohnzhou  
    OP
       3 天前
    @ladypxy 那是不是手机和电脑都要连上 VPN 之后才能访问 NAS ?
    dilu
        4
    dilu  
       3 天前
    @lazyjohnzhou #2
    1. 是
    2. 如果你没开 DMZ 主机就是把流量全部给 Nas 的话,别配置端口转发就行
    3. 没用过极空间不知道,但是群晖是有自动封锁 ip 的,并且你的 nas 完全在内网,绝对是安全的可以不用管什么白名单
    bluicezhen
        5
    bluicezhen  
       3 天前
    @lazyjohnzhou #2
    1. 在家(即 PC/Phone 和 Nas 在同一个局域网)不用开 VPN ,在公网访问需要开 VPN 访问
    2. Nas 和 路由器中都可以限制对外暴露的端口,如需放通端口,则需要 Nas 和路由器都放通。两者有任何一个屏蔽则屏蔽
    3. 不了解极空间(不信任这些国产 Nas 但尊重 OP 的选择)
    4. 可以加密同步至云盘,我目前通过 rclone + aliyundrive-webdav 每天定时加密备份重要文件的阿里云盘
    dann73580
        6
    dann73580  
       3 天前
    用 docker 安个雷池 waf 或者南墙 waf 反向代理必须公开的服务,其他的走内网穿透或者 vpn 回 nas 确保安全即可。
    SawyerGuo
        7
    SawyerGuo  
       3 天前
    做好定时备份就行了,你搞那么多你认为安全的操作,万一一个没配置好,没准还更危险了。
    CodeAllen
        8
    CodeAllen  
       3 天前
    绿联 DX4600 主要存数据挂迅雷下载,有想看的电影电视剧远程就添加下载了回家就能看,docker 只跑了 clash 客户端。家庭内网通过 NVIDIA Jetson Nano 组建 zerotier 家庭网络,台式机都通过网线设置 WOL 可以通过 Jetson Nano 唤醒,在外可以通过 zerotier 连到 Jetson Nano 上操作。其他服务我用的少,手里两台云服务器,阿里云和京东云,阿里云用来自建 zerotier 的 planet 服务。
    Goalonez
        9
    Goalonez  
       3 天前
    你的 1 和 4 是不是有一点冲突。
    极空间不用 docker 应该也没法直接跑服务,没有 ssh 权限。端口的话路由器只开对应服务的端口,做好服务的安全认证。
    obsidian 用自带的文档备份里的双向同步也可以实现。不过最好再加上 git 插件,同步一份到 git 仓库,这样同时也拥有了版本管理。
    自带服务的安全性不清楚,反正暂时没见有人出过问题。
    走 vpn 。或者就完全使用官方的网络,毕竟买了他家的东西,如果出问题那就找官方售后。
    GG5332
        10
    GG5332  
       2 天前
    1 、如果你说的对外是指对互联网,那么使用 docker 跟对外暴露端口之间没有必然关系,你的 NAS 是你内网中的设备,在它上面的 docker 容器开的也只是内网 IP 地址的端口,如果你没有在路由器上主动做端口映射这个端口在公网不可见。如果你有公网 IP 并且直接把容器的端口映射到公网,那你就增加风险暴露面,自然安全性就低了,DDNSTO 没有使用过,不确定是否更加安全
    2 、如果你能够区分 CouchDB 的管理和服务的 URL 区别,你可以用 Nginx 来做管理
    3 、相对的,一般用户来说,企业给你提供的服务比自己架设的好一点,对于内行的人,那就是反过来的。
    4 、不是,有容器逃逸漏洞的话,是能够把你整个网络攻陷。
    5 、减少公网暴露面 + 强校验 + 定期检查
    我的做法供参考:
    主路由 Openwrt 上面部署 Nginx 作为统一网关,选择一个高位端口作为唯一对外暴露的端口,该端口不直接承接任何服务,只是作为其他服务请求入口,直接 IP 加端口访问也不会有任何信息返回。需要对外的服务通过四级域名在 nginx 上配置转发到内网端口,重要服务启用双因子认证。域名信息不主动暴露,使用了一段时间连个尝试的攻击都没有看见,因为找不到服务入口。
    rhwood
        11
    rhwood  
       2 天前
    如果注重安全,请一定通过 vpn 。
    比如用 tailscale 异地组网,然后通过 vpn 访问 nas 。
    1.tailscale 中的节点其中一个有公网 ip ,或者两个节点都支持 ipv6 ,那么基本就能直连 nas 。
    2.如果上述条件不满足,tailsscale 的访问速度堪忧,这时候会在 tailscale 加入一个有公网 ip 的 vps ,vps 可以直连 nas ,并且 vps 再通过 haproxy 监听 tailscale 分配的内网 ip ,其他客户端通过 vps 的中转连接 nas 。
    zhucegeqiu
        12
    zhucegeqiu  
       2 天前
    软路由搭个 ss server ,手机电脑 clash 配置好分流,家里的域名用自己搭的 ss
    Jimson
        13
    Jimson  
       1 天前
    手持 z4 一年,目前都是用 tailscale 进行连接,挺方便的。
    - 手机上需求不多,直接 app store 安装极空间 app 就可以了,平时应急手机看电影也基本够用
    - 平时电脑的话,电脑开启 tailscale ,由于已经异地组网,可以直接通过本地 ip 直连,一开始延迟等方面速度有问题,后面自建 derp 腾讯云中转速度也挺可观的。
    - 家里宽带已开通公网,只需要把所需的端口转发开放出去就行了
    - 其余的没啥的,我本意是用来备份相册偶然玩玩 pt 下载电影,这一年用下来还算是方便省心,不需要过度配置些什么东西。
    zhangzihan1989
        14
    zhangzihan1989  
       1 天前
    @CodeAllen 极空间直接挂载迅雷、百度、阿里等网盘,即可以直接看也能下载用平替 infuse 的极影视看
    SakuraYuki
        15
    SakuraYuki  
       1 天前
    群晖设置了外国 ip 禁止访问以及输错一次密码永久封禁,外加强密码和 2 次验证,应该就差不多了吧
    huangcjmail
        16
    huangcjmail  
       1 天前
    @SakuraYuki #15 输错一次密码永久封禁,这么激进吗👀
    findex
        17
    findex  
       1 天前 via iPhone
    先简单说一下,物理隔离是有必要的。不建议 All in one 。你想跑的服务可以放到另外一台机器上,nas 就好好的用来做存储,计算放在其他计算机上。安全而言,上个物理防火墙,设置白名单,登陆方式 2FA ,或者用 usb key 。 像是你的各种需求,单独来一台 PVE 主机可以解决。 现在的各种国产 nas 确实在硬件上堆料,给人一种刚买 nas 跑什么计算服务的错觉。 计算上服务器。
    bluedawn
        18
    bluedawn  
       1 天前
    我的方案:
    1. 能够使用 IPv6 的情况下,安装 Tailscale 在所有需要连接到 nas 的设备上,在 Tailscale 的 ACL 设定中设置 nas 和一些 server 的 tag ,以及特定用户/组可以访问的端口,通过 tailscale 统一管理而不开放任何端口在 nas 防火墙上。根据 tailscale 官方的文档关闭 nas 上的 tailscale 的 userscape 模式,保证所有访问 nas 的 tailscale ip 都能被记录到。
    2. 在(至少一个) nas 上搭建 DNS 服务器( AdguardHome 或者其他),将 tailscale 上特定域名的 DNS 服务器指向 nas (或多个 nas 上的 dns 服务器),之后所有的访问在这个域名下进行。(多个 nas 的多个 dns 服务器可以保证不会有单点故障)
    3. 在 nas 上搭建需要的服务,所有服务均只允许 127.0.0.1 访问,即本地访问,但由于防火墙开启所以所有服务均只能由本地的反向代理服务器访问。nas 上的反向代理服务器管理所有服务并设定子域名,使用 ACME-DNS 兼容服务自动化申请 SSL 证书进行 HTTPS 加密。(这样申请证书无需翻墙)
    4. 在 tailscale 连接正常的情况下,正常访问设定的域名即可。
    5. 使用 Cloudflare Tunnel 进行公网服务隧穿,保证一些需要公开到互联网上的服务可以正常访问。
    6. 所有第三方服务不使用任何 nas 第三方套件,而是使用 Docker 容器,并不使用任何需要 privilege 的容器保证被入侵后的不可提权的安全性。

    弱点:
    1. 一旦在外使用 ipv4 访问,tailscale 速度等于 0 ,还不如用 cloudflare tunnel
    2. 某些平台安装 tailscale 不方便,基本无法连接 nas ,但是考虑到安全性就不管了
    3. 没想到,欢迎拍砖

    TDLR
    用 Tailscale+反向代理+CloudflareTunnel
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1109 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:45 · PVG 02:45 · LAX 11:45 · JFK 14:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.