最近在折腾家庭 NAS 的外网文件访问方案,也看了不少关于 WebDAV 、SFTP 在性能和安全性方面的讨论,发现很多结论差异很大,想结合自己的场景再请教一下各位如何选择。
网络环境:家庭宽带(电信)、公网 IPv4 ,上行 50Mbps ,下行 1000Mbps ,有域名,有 DDNS 脚本进行 IP 绑定。 设备:群晖 NAS (最新版 DSM ) 使用场景:同城同运营商,偶尔会跨运营商。手机客户端用 Documents by Readdle ,电脑客户端用 Mountain Duck 5 或者 RaiDrive (旧版,无广告的),电脑在外基本要靠手机热点联网。
主要用途是:办公文件管理(列目录、找文件、在线编辑等),偶尔大文件传输,有时还会访问 3000+文件的超大目录。
看了前段时间飞牛的问题,在安全方面也有考虑,希望不要被攻破。但由于家人都要使用,设备太多,全部配 VPN 也不现实,还是得通过 DDNS 直连。
考虑了好久现在有 2 种方案:
WebDAV 套 Nginx 反代后暴漏到公网,限制本省 IP 访问。 使用群晖官方套件的 WebDAV 服务,套一层内置的 Nginx 反代后通过高位端口映射出去。WebDAV 和 Nginx 都启用 https ,TLS 强制 1.3 版本。所有用户设置 50 位以上的强密码,群晖启用自动封锁。
SFTP 直接暴漏到公网,限制本省 IP 访问。
目前 DSM 最新版的 OpenSSH 版本信息为OpenSSH_8.2p1, OpenSSL 1.1.1u 30 May 2023,通过高位端口直接映射出去,给所有用户都生成 ed25519 的密钥(带 passphrase ),仅允许密钥认证,禁止密码登录。所有的公钥都添加restrict,command="internal-sftp"限制使用范围。群晖启用自动封锁,且强制所有用户登录 SFTP 后进入家目录,不得进入其他路径。
综合性能、安全、稳定等多方面因素,上面两个方案哪个更合适呢?
1
w568w 8 小时 54 分钟前
从性能和安全性来说 SFTP 是更好的,处理小文件速度快很多,而且搭建起来更容易。
但是从兼容性来说,WebDAV 对移动端 app 兼容性更好。 我的个人建议是两个都开。另外密码不用搞这么麻烦吧,网络安全重在意识,你这个有点过度保护了,容易把自己锁外面 |
2
chachi 8 小时 53 分钟前
都可以,我觉着主要看客户端兼容性。
|
3
Autonomous OP |
4
dilidilid 8 小时 11 分钟前 via iPhone
如果你的数据规模没有很大的话,也许办公文件用 one drive 这种公有云是更好的选择
|
5
lqzhgood 8 小时 0 分钟前
通过 WebDAV 这种非“文件系统”的协议传输其实是一种内容的同步,会丢失 创建时间 等文件信息~
建议直接上 zerotier 等 vpn 方案, 然后通过 nfs/smb 等方式直接共享文件(而非同步)~ 这样能得到更好的安全和接近“本地”的体验~ 也无需考虑同步方案带来的冲突问题 上述缺点是大量操作(如 3000+文件搜索)相当于本地通过 50M 带宽操作对比原来同步访问(本地硬盘速度)会很慢,非高频可以远程到 nas 上远端操作~ |
6
billgong 7 小时 59 分钟前
VPN 才是正道。直接暴露端口就是给 0day 留机会。
|
7
nananqujava 7 小时 53 分钟前
我用的 WebDAV 因为客户端支持的多
|
8
coffeesun 7 小时 9 分钟前 via Android
手机端用的是 cloudflare tunnel 的 webdav ,pc 端用的是 zerotier 局域网方案,两端路由跑 zerotier
|
9
MYDB 7 小时 3 分钟前 via iPhone
代理回家然后 smb 是最通用的,不用配置任何第三方软件
|
10
Autonomous OP @dilidilid OneDrive 太慢了呀,既然有了 NAS 当然首选自己的机器呢
@lqzhgood @billgong @coffeesun 我也知道 VPN 好,我自己就用 VPN ,但是家人设备太多,实在管理不过来,一想到分流配置就头大。至于 0day ,这么宝贵的 0day 拿来打我也不合适吧 @nananqujava 确实 WebDAV 支持的很多,有好多客户端不支持 SFTP |
11
billgong 6 小时 38 分钟前
@Autonomous #10 0day 刷肉鸡,肉鸡攻 DDoS 。多一只鸡就能早几十 ms 拖垮一个服务🤣
你提到 OneDrive 了,如果只是需要像 Dropbox 那样同步文件,Syncthing 蛮方便的,能自己 NAT 打洞。 也可以研究一下 Cloudflare Zero Trust ,不过你有公网 IP ,啥都过一遍 CF ,尤其还在国内的话,会比较慢。我之前回国通过 CF One 打洞翻墙流量从国外家宽出口,稳得一批,比 AARNet 的 VPN 还稳 |
12
dilidilid 6 小时 18 分钟前 via iPhone
国内 OneDrive 这么慢,连 50M 上传的家宽都不如吗……
|
13
ingram22mb30 5 小时 24 分钟前 via Android
webdav 可以做防盗链和虚拟路径的,适合分享文件。
SFTP 和 Samba 适合用来传输(写入)文件。 |
14
Autonomous OP @dilidilid
@billgong 因为有自己的 NAS 了呀,就不考虑 OneDrive 、Dropbox 之类的啦,因为所有文件都是集中化管理了,家里的电脑、手机平板还有电视都从 NAS 里面存取内容。 @ingram22mb30 看来 SFTP 适合我,主要是自己用,不用于分享文件。 |
15
pxiphx891 4 小时 35 分钟前
我使用 wireguard ,连入内网就可以访问 afp 了
|
16
yinmin 3 小时 36 分钟前 via iPhone
群晖里有 l2tp/ipsec vpn server 。android 、ios 、windows 都内置 l2tp/ipsec client ,配置 vpn 后用 smb 协议很方便的。也可以自己在 docker 用 hwdsl2/ipsec-vpn-server 部署 vpn server 容器。
l2tp/ipsec 还有一个好处,用公共 wifi 时连入 vpn ,能防止 wifi 窃听,在酒店休息时看视频费手机流量,用 wifi+vpn 会安全很多。 另外,你的 nginx 反代可以优化(假设 ddns 域名是 home.domain.com ):(1) dns 设置 *.home.domain.com 配置 cname 为 home.domain.com ( 2 ) webdav 使用独特子域名,例如:dav768812.home.domain.com (3)使用通配符证书 *.home.domain.com ,避免通过证书获取到实际域名( 4 ) nginx 使用 stream 模块做 sniproxy ,不设 default ,将 dav768812.home.domain.com 指向后端的 https 服务。 黑客不知道 webdav 独特域名的情况下,nginx 将阻止访问后端服务。通过 nginx 的 sniproxy 功能,你可以将多个 https 服务聚合在一个 tcp 端口,通过不同的子域名访问不同的后端服务,子域名本身就可以做为一个 key 做安全保护。 |
17
TossPig 3 小时 32 分钟前
咋没有考虑一下,在群晖上跑个 s3 服务?
|
18
yinmin 3 小时 27 分钟前 via iPhone
接#16 常见的 ios/android 第三方 vpn 软件大都支持 socks5 over tls/mtls 。OP 可以部署 socks5 over tls/mtls 服务,通过 nginx sniproxy 聚合在某个 tcp 端口里,然后在手机的第三方 vpn 软件里加一条内网 ip 的规则。
|
19
BadAngel 3 小时 6 分钟前
关键还是看你的需求是什么
SFTP/NFS/SMB/CIFS 主要是工作生产使用,客户端变动很少,建议使用白名单限制 WebDAV 移动设备用的比较多,建议不要暴露公网,使用 VPN 等反向回家访问 |
20
thereone 47 分钟前
需不需要用客户端挂载,不需要客户端挂载的话仅网页访问那随意了,前面套一个 WAF 把 IP 地区限制和身份认证打开就行了。可以跑个可道云来做共享私有云盘,你说的主要用途完全可以满足。也不需要 VPN 认证网页认证即可。如果需要客户端同步的那就单独找一个只允许客户端连接的同步软件不允许直接网页打开连接的这样开放一个端口就行了。
|
21
gvdlmjwje 33 分钟前
我是方案一,不过我加一个只允许国内 IP 访问我的公网 IP ,有什么办法吗
|