編者按:本文通過(guò)實(shí)例介紹了多臺(tái)網(wǎng)絡(luò)共享存儲(chǔ)間通過(guò)SSH模式進(jìn)行Rsync同步,把一份文件變成多份,提高了存儲(chǔ)的安全性;遠(yuǎn)程用戶通過(guò)SSL VPN方式訪問(wèn)共享文件時(shí)與互聯(lián)網(wǎng)進(jìn)行隔離,提高了訪問(wèn)的安全性。
筆者單位用FreeNAS搭建了一臺(tái)供多用戶使用的網(wǎng)絡(luò)存儲(chǔ),以SMB共享方式為內(nèi)部用戶提供共享文件夾,運(yùn)行一直比較穩(wěn)定。現(xiàn)因用戶資料重要,且具有私密性,筆者從網(wǎng)絡(luò)安全、存儲(chǔ)安全和訪問(wèn)安全三個(gè)層面進(jìn)行設(shè)計(jì)并實(shí)施,很好地滿足了其防丟失、防竊取等安全性要求。

圖1 網(wǎng)絡(luò)拓?fù)鋱D
為用戶提供共享文件夾的FreeNAS服務(wù)器A位于內(nèi)部服務(wù)器區(qū),新搭建一臺(tái)FreeNAS服務(wù)器B作為主備份服務(wù)器,購(gòu)買一臺(tái)群暉DSM存儲(chǔ)C作為輔備份服務(wù)器,均部署在內(nèi)網(wǎng)服務(wù)器區(qū)。DMZ區(qū)部署一臺(tái)NTP服務(wù)器,為服務(wù)器A、B、C提供授時(shí),使其保持時(shí)間同步。服務(wù) 器A、B、C可以訪問(wèn)DMZ區(qū)的NTP服務(wù)器,但不能訪問(wèn)Internet,以保證其網(wǎng)絡(luò)安全。組網(wǎng)拓?fù)鋱D如圖1所示。
A作為Rsyn c(遠(yuǎn)程同步)的客戶端,B和C作為Rsync的服務(wù)端,A向B和C發(fā)起Rsync連接,連接時(shí)使用SSH協(xié)議以提高安全性。連接成功后按照PUSH(推)的方式將共享文件夾中的文件增量備份到B和C。其體系結(jié)構(gòu)如圖2所示。

圖2 Rsync備份服務(wù)器體系結(jié)構(gòu)
服務(wù)器A
IP:192.168.1.101
主機(jī)名:nasA
數(shù)據(jù)集:storA
服務(wù)器B
IP:192.168.1.102
主機(jī)名:nasB
數(shù)據(jù)集:storB
服務(wù)器C
IP:192.168.1.103
主機(jī)名:nasC
共享文件夾:storC
A和B均用默認(rèn)管理員帳號(hào)root登錄WebGUI,開啟SSH服務(wù),并勾選“以root用戶身份使用密碼登錄”選項(xiàng),勾選“自動(dòng)啟動(dòng)”選項(xiàng);C用系統(tǒng)安裝時(shí)創(chuàng)建的管理員帳號(hào)”superman”登錄,在“控制面板-終端機(jī)和SNMP-終端機(jī)”中啟動(dòng)SSH功能。
A與B、C進(jìn)行Rsync同步前,需要先建立SSH連接。為了避免每次連接時(shí)均要輸入被連接方的用戶名密碼,簡(jiǎn)化連接過(guò)程,實(shí)現(xiàn)自動(dòng)連接,需要在發(fā)起SSH連接的A服務(wù)器上生成公/私密鑰對(duì),并將A的公鑰放入被連接方的authorized_keys文件中。
(1)在A上生成公/私密鑰對(duì)
在A的WebGUI的命令行下,運(yùn)行“ssh-keygen -t rsa”命令,創(chuàng)建一個(gè)RSA類型的SSH密鑰對(duì)。運(yùn)行“cat.ssh/id_rsa.pub”,查看其公鑰,鼠標(biāo)選中公鑰文本的全部?jī)?nèi)容,復(fù)制到剪貼板。
(2)在B上粘貼A的公鑰
在B的WebGUI界面,點(diǎn)擊“帳戶-用戶-root”,編輯root帳戶,將A的公鑰粘貼到“Authentication-SSH公鑰”下,保存。這樣在B的root用戶的家目錄的.ssh子目錄下便產(chǎn)生了“authorized_keys”文件,其內(nèi)容為A的公鑰。當(dāng)A向B發(fā)起SSH連接時(shí),B檢索到認(rèn)證文件中有A的公鑰(證書),便會(huì)與A實(shí)現(xiàn)無(wú)需密碼認(rèn)證的連接。
(3)在C上粘貼A的公鑰
C是群暉的DSM(DiskStation Manager)系統(tǒng),其WebGUI界面下沒(méi)有命令行,需要通過(guò)SSH客戶端軟件來(lái)運(yùn)行命令行。SSH客戶端以管理員帳號(hào)superman(安裝DSM系統(tǒng)時(shí)創(chuàng)建)連接后,提示“Could not chdir to home directory/var/services/homes/superman:No such file to directory“,即DSM沒(méi)有為用戶創(chuàng)建家目錄。此時(shí)我們需要為用戶創(chuàng)建家目錄、.ssh目錄和認(rèn)證文件。運(yùn)行如下命令

將A的公鑰粘貼到“authorized_keys”文件中,保存。當(dāng)A向C發(fā)起SSH連接時(shí),C檢索到認(rèn)證文件中有A的公鑰(證書),便會(huì)與A實(shí)現(xiàn)無(wú)需密碼認(rèn)證的連接。
(4)測(cè)試SSH連接
在A的WebGUI界面的命令行下,運(yùn)行

結(jié)果均連接成功,無(wú)需輸入密碼
本例中我們將A做為Rsync的客戶端,B和C做為Rsync的服務(wù)端,把A上所有用戶的共享文件夾遠(yuǎn)程同步到B、C服務(wù)器進(jìn)行備份。FreeNAS系統(tǒng)中Rsync客戶端方不需要啟用Rsync服務(wù),當(dāng)采用SSH認(rèn)證模式時(shí),服務(wù)器方也不需要啟用Rsync服務(wù),因此A和B不啟用Rsync服務(wù)。而C是群暉的DSM系統(tǒng),需要啟用Rsync服務(wù)。
(1)在A上創(chuàng)建Rsync任務(wù)
在A的WebGUI界面下,“任務(wù)-Rsync任務(wù)“中,添加2個(gè)Rsync任務(wù),分別是與B和C進(jìn)行同步。其設(shè)置參數(shù)為:
任務(wù)1

創(chuàng)建任務(wù)2之前,我們要查看C上共享文件夾的絕對(duì)路徑。用SSH客戶端軟件連接B,運(yùn)行“l(fā)s/“命令,發(fā)現(xiàn)有個(gè)volume1目錄,運(yùn)行” ls/ volume1“命 令,volume1下有個(gè)storC子目錄,共享文件夾的絕對(duì)路徑為“/volume1/storC”。
任務(wù)2


(2)在C上啟用rsync服務(wù)
在C的WebGUI界面下,“控制面 板-文件服務(wù)-rsync”,啟用rsync服務(wù)。
(3)測(cè)試Rsync任務(wù)
在A的WebGUI界面下,“任務(wù)-Rsync任務(wù)”中,選中任務(wù)1,點(diǎn)擊任務(wù)1最右邊的“>”箭頭展開任務(wù)1,點(diǎn)擊“立即運(yùn)行”,彈出“任務(wù)已開始”的提示,根據(jù)數(shù)據(jù)量大小不同,經(jīng)過(guò)一段時(shí)間同步,任務(wù)狀態(tài)顯示”SUCCESS”。同樣,測(cè)試一下任務(wù)2,同步也是成功的。
之后,每過(guò)一個(gè)小時(shí),A就會(huì)運(yùn)行任務(wù)1和任務(wù)2,向B、C發(fā)起Rsync請(qǐng)求,進(jìn)行增量備份,即只需把上次同步以來(lái),有改變的文件備份到B和C上。
如果要在B上查看從A同步備份過(guò)來(lái)的文件,在B的WebGUI界面的命令行下,運(yùn)行“l(fā)s/mnt/storB”,發(fā)現(xiàn)該目錄下有個(gè)“storA”子目錄,其內(nèi)容與A上的“/mnt/storA”完全相同,表明已同步成功。
同樣,SSH客戶端軟件查看C上的“/volume1/storC”下也有“storA”子目錄,同步成功。
由于A、B、C服務(wù)器均未對(duì)Internet開放服務(wù),內(nèi)網(wǎng)用戶訪問(wèn)A提供的共享文件夾是相對(duì)安全的。如何讓遠(yuǎn)程辦公的移動(dòng)用戶既能訪問(wèn)A,又保證安全,我們對(duì)移動(dòng)用戶設(shè)計(jì)了通過(guò)SSL VPN的訪問(wèn)方式,并設(shè)置網(wǎng)絡(luò)隔離策略,當(dāng)移動(dòng)用戶連接VPN后,就會(huì)與Internet隔離,無(wú)法打開Internet網(wǎng)頁(yè),與Internet相連的程序如QQ、微信等也會(huì)處于離線狀態(tài)。內(nèi)、外網(wǎng)絡(luò)邊界有一臺(tái)天融信的多合一網(wǎng)關(guān),其帶有IPSEC VPN和SSL VPN功能,需要對(duì)其進(jìn)行網(wǎng)絡(luò)隔離設(shè)置,設(shè)置如下:
在多合一網(wǎng)關(guān)的WebGUI界面下,“SSL VPN-模塊管理”中,編輯“全網(wǎng)接入”模塊,參數(shù)如下:
DHCP服務(wù)器類型:本地
虛擬網(wǎng)卡接口IP:10.10.10.1//為多合一網(wǎng)關(guān)添加一個(gè)Loopback環(huán)回接口
虛擬網(wǎng)卡接口IP子網(wǎng)掩碼:255.255.255.0
工作模式:網(wǎng)絡(luò)隔離(禁止上網(wǎng))
在“網(wǎng)絡(luò)管理-DHCP-DHCP服務(wù)器”中,為“l(fā)o”(Loopback環(huán)回接口)創(chuàng)建一個(gè)地址池,此處為100.100.100.0/24。
在“用戶認(rèn)證-用戶管理-添加組”中,新建一個(gè)用戶組,命名為“share folder”,編輯這個(gè)組,基本信息設(shè)置如下:
所屬父組:root
//此組為一級(jí)組
虛地址池:100.100.100.0/255.255.255.0//上一步中創(chuàng)建的地址池
繼承父組的屬性配置:否
//需要定制組的屬性
強(qiáng)制下級(jí)組或用戶繼承屬性配置:是
繼承父組的角色權(quán)限:否
//需要定制角色權(quán)限
認(rèn)證策略設(shè)置如下:
使用全局認(rèn)證設(shè)置:不勾選
認(rèn)證因子:勾選口令認(rèn)證
口令復(fù)雜度:勾選包含大小寫字母、數(shù)字、特殊字符等
其他屬性設(shè)置如下:
SSL VPN全網(wǎng)接入工作模式:網(wǎng)絡(luò)隔離(禁止上網(wǎng))
在“SSL VPN-資源管理”中,添加一條允許SSL VPN用戶訪問(wèn)的資源,設(shè)置如下:
資源名稱:共享文件夾
訪問(wèn)方式:全網(wǎng)接入
//在3.1的SSL VPN模塊設(shè)置中已為全網(wǎng)接入模塊設(shè)置了網(wǎng)絡(luò)隔離工作模式
資源地址:http://192.1 68.1.101//這里只是為用戶訪問(wèn)A服務(wù)器設(shè)置一個(gè)鏈接,實(shí)際上用戶使用時(shí)不需要點(diǎn)擊這個(gè)鏈接
IP地址:192.168.1.101//A服務(wù)器的IP地址
網(wǎng)絡(luò)掩碼:255.255.255.255
協(xié)議類型:IP
SSL VPN用戶連接成功后,運(yùn)行“\192.168.1.101”訪問(wèn)共享文件夾。
之所以不在訪問(wèn)方式中選擇“應(yīng)用Web化”,在協(xié)議類型中選擇”文件共享“,是因?yàn)镾SL VPN模塊管理中“應(yīng)用Web化”模塊無(wú)法編輯,也就無(wú)法設(shè)置網(wǎng)絡(luò)隔離工作模式。
在“用戶認(rèn)證-角色管理”中添加角色,角色名為“共享文件夾”。編輯此角色,組選擇3.3中創(chuàng)建的“share folder”組,SSLVPN資源選擇3.4中創(chuàng)建的“共享文件夾”資源。
在“用戶認(rèn)證-用戶管理”中添加用戶,其設(shè)置如下:
名稱:user1
所屬父組:share folder
帳號(hào)類型:本地
口令:
//設(shè)置用戶口令
確認(rèn)口令:
此處采用角色管理,用戶屬于“share folder”組,share folder組屬于“共享文件夾”角色,“共享文件夾”角色擁有訪問(wèn)“共享文件夾”這一SSLVPN資源的權(quán)限。
在“網(wǎng)絡(luò)管理-路由-路由表”中,添加兩條靜態(tài)路由,設(shè)置如下:
路由1設(shè)置
目的地址:100.100.100.0
目的掩碼:255.255.255.0
網(wǎng)關(guān):10.10.10.1
出接口:sslvpn0
//多合一網(wǎng)關(guān)自帶SSL VPN 0虛接口,用于SSL VPN數(shù)據(jù)包路由
路由2設(shè)置
目的地址:10.10.10.0
目的掩碼:255.255.255.0
網(wǎng)關(guān):0.0.0.0
出接口:sslvpn0
此外,當(dāng)在3.2中創(chuàng)建了DHCP地址池以后,路由表中便自動(dòng)產(chǎn)生了如下一條路由3:
目的地址:10.10.10.1
目的掩碼:255.255.255.2 55
網(wǎng)關(guān):0.0.0.0
出接口:lo
當(dāng)移動(dòng)用戶user1以SSL VPN方式連接多合一網(wǎng)關(guān)時(shí),從網(wǎng)關(guān)的DHCP地址池100.100.100.0/24中獲取一個(gè)臨時(shí)地址如100.100.100.5/24,訪問(wèn)方式為“全網(wǎng)接入”。
由于SSL VPN模塊全網(wǎng)接入的工作模式為“網(wǎng)絡(luò)隔離(禁止上網(wǎng))”,用戶user1此時(shí)已無(wú)法打開Internet網(wǎng)頁(yè),與Internet相連的程序如QQ、微信等也會(huì)處于離線狀態(tài),這實(shí)際上是通過(guò)路由黑洞實(shí)現(xiàn)的。
用戶僅能訪問(wèn)IP地址為192.168.1.101的A服務(wù)器,而無(wú)法訪問(wèn)內(nèi)網(wǎng)中其它IP地址。這大大提高了移動(dòng)用戶訪問(wèn)共享文件夾的安全性。
多臺(tái)網(wǎng)絡(luò)存儲(chǔ)服務(wù)器間通過(guò)Rsync遠(yuǎn)程同步進(jìn)行增量備份,既可以避免只有一臺(tái)存儲(chǔ)存在的單點(diǎn)故障問(wèn)題,又可以避免手工備份造成的工作量加大和數(shù)據(jù)不一致缺陷,而通過(guò)SSL VPN及網(wǎng)絡(luò)隔離措施,既可以為移動(dòng)用戶提供遠(yuǎn)程訪問(wèn)共享文件夾服務(wù),又可以保證其訪問(wèn)過(guò)程中的安全性。