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.)