我有一個家用 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 或任何您想要的。