我可以向公共互联网公开的安全网络文件系统协议是什么?

我可以向公共互联网公开的安全网络文件系统协议是什么?

我家里有一台 DIY NAS(Debian),我偶尔会从远程设备使用它。NAS 有一个 SMB 文件服务器,目前我使用 SSH(私钥加密)和 SSH 端口隧道远程访问它

ssh [email protected] -L 448:localhost:445

然后连接到smb://localhost:448远程客户端。

当我远程使用 Android TV 时,这种方法不太好用,因为我必须使用 Termux 并完成整个 ssh 设置才能访问。

我的理解是,将我的 SMB 服务器的端口直接暴露给公共互联网是不安全的,是否存在一个在所有主要平台上都具有客户端支持的网络文件共享协议,并且足够安全地在互联网上暴露?

答案1

切勿暴露任何网络文件系统。相反,请使用 VPN(或 ssh 隧道),然后通过 VPN 暴露网络文件系统。

还要记住,长距离的网络文件系统会非常慢,而且体验不会很愉快。

如果设置 VPN 或 ssh 隧道太费力,可以将其自动化。

答案2

我的理解是,将我的 SMB 服务器的端口直接暴露给公共互联网是不安全的,是否存在一个在所有主要平台上都具有客户端支持的网络文件共享协议,并且足够安全地在互联网上暴露?

SSH 有一个内置功能:SFTP。许多 Android 文件管理器应用都支持它,并且可以通过 像可挂载文件系统一样对其进行处理sshfs

WebDAV 可能是一种选择,尽管对它的支持相对罕见(有时它可能被标记为“Nextcloud”,因为这是最常见的 WebDAV 用途)。

(SMB 被认为大多不安全,但大的部分原因是由于 Windows 内核 SMB 服务器中的错误。替代的 SMB 服务器实现(例如 Samba)的风险要小得多 - 一方面是因为不同的代码库不受同类错误的影响,另一方面是因为 Linux 上的用户空间 smbd 进程比 Windows 上的内核驱动程序更容易限制。

因此,如果你运行基于 Samba 的 SMB 文件服务器,那么它就还算可以。但还是建议至少虽然顶部有一个基于 IP 的防火墙允许列表,但至少面向 Windows 的漏洞不会使用它。

不幸的是,许多 Android 应用不支持新的 SMBv3 功能(例如传输加密);如果你幸运的话,它们会尽量支持 SMBv2,否则就需要 SMBv1;在这两种情况下,你基本上只能使用明文协议。此外,即使安全,在 WAN 上使用 SMBv1 也不是一个好的体验。)

解决上述所有问题的简单方法是停止暴露网络文件系统协议,而是暴露 VPN 协议,因为 VPN 服务器在设计时就考虑到了远程访问(就像 SSH 一样),而且暴露的风险通常要小得多。然后,一旦您连接到 VPN,就可以使用 SMB 或 NFS 或任何您想要的协议。

相关内容