2016年9月18日 星期日

透過「SSH Tunnel (通道)」使用「NFS 服務」

應用 NFS 分享檔案是 Linux 使用者常用的方式,但是 NFS 的安全性有限,除非是使用最新的認證機制 ①。一個比較簡單的方法是透過 SSH 建立『通道 (Tunnel)』,利用 SSH 的安全機制加密 NFS 的通訊。
  前文幾篇用 AutoFS 自動建立 NFS 連線的說明,
所述步驟有些部分需要修改才可適用。以下就是在上述步驟需要增加、修改的說明。

一、「NFS 服務」設定的修改

透過「SSH 通道」連線「NFS 服務」』時,「NFS 服務」所接受的連線要求是來自『本機』,也就是『127.0.0.1』。因為原來「NFS 服務」的設定輸出並未包含『本機』來源,因此需要將之加入。
  設定輸出的檔案為 /etc/exports.d/SiB.exports,修改如下:
/home/Data     192.168.10.0/24(ro,sync)
/home/Media  192.168.10.0/24(ro,sync)
/home/Upload 192.168.10.0/24(ro,sync)
/home/Data      localhost(ro,insecure,sync)
/home/Media   localhost(ro,insecure,sync)
/home/Upload  localhost(ro,insecure,sync)
第 4 ~ 6 列設定是為『本機』連線所需而加上的。

二、設定「Portmapper」的開放權限

Portmapper 對應「RPC 服務」(註:NFS 服務機制所用)至監聽的埠口,預設沒有開放『本機』來源的連線。要讓經「SSH 通道」過來的連線可以連上「NFS 服務」,需將來自「本機」的連線開放。
  設定檔為 /etc/hosts.allow,在最後一列加上
portmap: 127.0.0.1/24
這列設定。不用重新開機或登出,會立即生效。

三、「AutoFS 服務」設定的修改

用「AutoFS 服務」自動連線「NFS 服務」的設定檔位在 /etc/auto.master.d/ 目錄下,其中設定「AutoFS 服務」掛載 NFS 連線後目錄的設定檔 nfs.autofs
/nfs    /etc/auto.master.d/auto.nfs    --timeout 60
內容不需修改。另一個設定掛載「NFS 服務」輸出目錄的的設定檔
Data -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Data
Media -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Media
Upload -rw,soft,intr,rsize=8192,wsize=8192 192.168.10.17:/home/Upload
已經不是由對外網路位址過去,要改成由「SSH 通道」的本地端,及對應的埠號
Data -rw,soft,intr,rsize=8192,wsize=8192,port=3049,mountport=30048,tcp 127.0.0.1:/home/Data
Media -rw,soft,intr,rsize=8192,wsize=8192,port=3049,mountport=30048,tcp 127.0.0.1:/home/Media
Upload -rw,soft,intr,rsize=8192,wsize=8192,port=3049,mountport=30048,tcp 127.0.0.1:/home/Upload
上例中『port=3049』與『mountport=30048』是設定「NFS 服務」連線的新埠號(註:與預設不同,避免與正常的「NFS 服務」衝突) ,而『tcp』是設定「NFS 服務」的連線是使用 TCP 協定。
  設定後要將「AutoFS 服務」重啟,剛才的新設定才會生效。

四、以 SSH 建立『重導通道』

接著就是建立「SSH 通道」,在使用者權限下就可以了。命令如下:
[SiB@Celeron-D ~]$ ssh 192.168.10.17 -p 5566 -L 3049:127.0.0.1:2049 -L 30048:127.0.0.1:20048
上例中 2049 與 20048 是建立 NFS 連線所需的預設埠號。下完命令後,就等「AutoFS 服務」建立「NFS 連線」了。

已測試版本:

  • Fedora 20, 24

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)