■
筆者的單位最近需要架設(shè)一臺(tái)FTP服務(wù)器,并將其放在互聯(lián)網(wǎng)上,用于在異地的分公司向總公司回傳數(shù)據(jù)。本公司有互聯(lián)網(wǎng)出口和網(wǎng)絡(luò)設(shè)備。公司的網(wǎng)絡(luò)架構(gòu)如圖1所示。
圖1 網(wǎng)絡(luò)架構(gòu)圖
筆者以前曾在局域網(wǎng)內(nèi)部架設(shè)過(guò)FTP服務(wù)器,用于局域網(wǎng)內(nèi)部幾臺(tái)計(jì)算機(jī)之間傳遞數(shù)據(jù)。因此認(rèn)為這項(xiàng)工作比較簡(jiǎn)單,只需要在服務(wù)器上安裝FTP服務(wù)器軟件,再在防火墻上開(kāi)放相應(yīng)的端口即可。但在實(shí)際實(shí)施過(guò)程中,這項(xiàng)看似簡(jiǎn)單的工作,最初卻頗費(fèi)周折,一直無(wú)法成功開(kāi)通FTP服務(wù)。直到認(rèn)真研究了FTP協(xié)議的原理,對(duì)FTP協(xié)議有了重新的認(rèn)識(shí)后,修改了之前不正確的配置,才最終解決問(wèn)題。現(xiàn)與大家分享一下,筆者處理這項(xiàng)工作的過(guò)程和一些經(jīng)驗(yàn)。
根據(jù)公司的業(yè)務(wù)需求和條件,F(xiàn)TP服務(wù)器搭建,考慮使用公司一臺(tái)服務(wù)器用于架設(shè)FTP服務(wù)器,F(xiàn)TP服務(wù)器考慮采用Server-U軟件,該軟件功能強(qiáng)大、設(shè)置簡(jiǎn)單、性能穩(wěn)定。而網(wǎng)絡(luò)部分,考慮在公司網(wǎng)絡(luò)出口的防火墻上將FTP服務(wù)器的內(nèi)網(wǎng)IP地址與出口公網(wǎng)IP地址進(jìn)行端口映射,并開(kāi)放相應(yīng)端口。
此外,由于公司的FTP要放置到互聯(lián)網(wǎng)上,存在一定的安全風(fēng)險(xiǎn)。因此在實(shí)施前,筆者設(shè)定了幾條實(shí)施原則,以盡量降低安全風(fēng)險(xiǎn),即:FTP服務(wù)器的默認(rèn)端口應(yīng)該修改為非默認(rèn)端口。
在防火墻上只開(kāi)放必要的、最少的端口,F(xiàn)TP服務(wù)器禁止匿名用戶訪問(wèn),只允許指定賬號(hào)有訪問(wèn)權(quán)限。
圖1 設(shè)置FTP端口
根據(jù)以上的思路和設(shè)定的原則,筆者進(jìn)行了FTP的安裝和配置。
首先,進(jìn)行FTP服務(wù)器的配置。
在服務(wù)器中安裝Serv-U軟件。在該軟件中,添加新的域“gs”,設(shè)置域的 IP地址和端口號(hào),并在域中添加用戶,設(shè)定用戶名、密碼、該用戶主目錄和用戶權(quán)限。其中域的IP地址就是服務(wù)器的內(nèi)網(wǎng)地址“192.168.2.2”。域的用戶名、密碼就是FTP登錄的用戶名和密碼。主目錄就是FTP服務(wù)器的登錄目錄。最后將FTP端口號(hào)修改為“5566”(如圖1)。FTP服務(wù)器搭建完成后,在公司局域網(wǎng)內(nèi)部進(jìn)行測(cè)試,訪問(wèn)FTP服務(wù)器192.168.2.2正常。
其次,進(jìn)行網(wǎng)絡(luò)配置。在防火墻中將內(nèi)網(wǎng)地址192.168.2.2的5566端口與出口地址60.13.25.240的5566端口進(jìn)行端口映射,開(kāi)放60.13.25.240的5566端口。
以上配置完畢后,在互聯(lián)網(wǎng)中進(jìn)行測(cè)試,遠(yuǎn)程客戶端計(jì)算機(jī)卻無(wú)法連接FTP服務(wù)器。
如上所述,在安裝FTP服務(wù)器后,F(xiàn)TP在內(nèi)網(wǎng)測(cè)試正常。但從互聯(lián)網(wǎng)中,用遠(yuǎn)程客戶端無(wú)法連接FTP服務(wù)器。
重新檢查網(wǎng)絡(luò)配置和FTP網(wǎng)絡(luò)協(xié)議,我發(fā)現(xiàn)自己忽略了一個(gè)最簡(jiǎn)單的問(wèn)題。FTP是File Transfer Protocol(文件傳輸協(xié)議)的縮寫,用來(lái)在兩臺(tái)計(jì)算機(jī)之間互相傳送文件的協(xié)議。FTP協(xié)議要用到兩個(gè)TCP連接,一個(gè)是命令鏈路,默認(rèn)使用21端口,用來(lái)在FTP客戶端與服務(wù)器之間傳遞命令;另一個(gè)是數(shù)據(jù)鏈路,默認(rèn)使用20端口,用來(lái)上傳或下載數(shù)據(jù)。FTP工作時(shí)需要有2個(gè)端口,默認(rèn)是21端口和20端口,分別做管理端口和數(shù)據(jù)傳送端口。因此要開(kāi)通FTP應(yīng)該在防火墻上放開(kāi)2個(gè)端口。而之前出于安全考慮,只想開(kāi)放盡量少的端口,而忽略了FTP協(xié)議的工作原理,只開(kāi)放了用作管理端口的5566端口,沒(méi)有開(kāi)放數(shù)據(jù)端口。因此考慮增加一個(gè)端口5565端口,用作數(shù)據(jù)傳送端口。
在防火墻上開(kāi)放5565端口后,進(jìn)行測(cè)試,遠(yuǎn)程客戶端依然無(wú)法連接FTP服務(wù)器。為找到原因,臨時(shí)在防火墻上將60.13.25.240地址的端口全部放開(kāi)。但遠(yuǎn)程客戶端還是無(wú)法連接FTP服務(wù)器。由此可知,雖然已經(jīng)找到了未開(kāi)放數(shù)據(jù)傳送端口的問(wèn)題,但還有問(wèn)題沒(méi)有找到。
繼續(xù)學(xué)習(xí)FTP的原理了解到,相比內(nèi)網(wǎng)沒(méi)有限制和要求的環(huán)境而言,在互聯(lián)網(wǎng)上的FTP服務(wù)要比之復(fù)雜得多。FTP協(xié)議有兩種工作方式:PORT方式和PASV方式,中文意思為主動(dòng)方式和被動(dòng)方式,所謂的主動(dòng)、被動(dòng)是相對(duì)于服務(wù)器而言。
PORT方式(主動(dòng)方式)是客戶端與服務(wù)器建立一條命令鏈路后,由客戶端打開(kāi)一個(gè)大于1024的隨機(jī)端口,并通知服務(wù)器。服務(wù)器與此端口連接,建立數(shù)據(jù)鏈路,傳送數(shù)據(jù)。
PASV方式(被動(dòng)方式)是客戶端與服務(wù)器建立一條命令鏈路后,由服務(wù)器打開(kāi)一個(gè)大于1024的隨機(jī)端口,并通知客戶端,客戶端與該端口連接,建立數(shù)據(jù)鏈路,傳送數(shù)據(jù)。
從上面的介紹可以看出,兩種方式的命令鏈路連接方法是一樣的,而數(shù)據(jù)鏈路的建立方法就完全不同。由此可知,在局域網(wǎng)內(nèi)部搭建FTP服務(wù)器,由于網(wǎng)絡(luò)環(huán)境簡(jiǎn)單,無(wú)所謂采用哪種方式。而在互聯(lián)網(wǎng)上的FTP服務(wù),只能采用被動(dòng)方式(PASV方式)。因?yàn)?,如果采用主?dòng)方式(PORT方式),建立數(shù)據(jù)鏈路時(shí)客戶端將隨機(jī)打開(kāi)一個(gè)大于1024端口的隨機(jī)端口,由于客戶端打開(kāi)的數(shù)據(jù)端口是隨機(jī)端口,用戶側(cè)的網(wǎng)絡(luò)防火墻無(wú)法設(shè)置開(kāi)放端口,除非全部開(kāi)放。而采用被動(dòng)方式,在服務(wù)器上FTP軟件可以設(shè)定開(kāi)放端口范圍,服務(wù)器側(cè)的防火墻上可以指定開(kāi)放。
由此找到了問(wèn)題的所在。是筆者之前把FTP協(xié)議想簡(jiǎn)單了,沒(méi)有考慮到FTP還有主動(dòng)方式和被動(dòng)方式之分。
圖2 配置PASV端口范圍
圖3 設(shè)置IP地址
根據(jù)上面分析的原因,在Server-U軟件中,在服務(wù)器“設(shè)置”的“高級(jí)”菜單中,配置PASV端口范圍,將端口范圍設(shè)置為“5565-5565”,也就是只開(kāi)放5565這一個(gè)端口,作為數(shù)據(jù)端口(如圖2)。
并且在域“設(shè)置”的“高級(jí)”菜單中勾選“運(yùn)行被動(dòng)模式數(shù)據(jù)傳輸,使用IP”的復(fù)選框。并設(shè)置IP地址為“60.13.25.240”。此處填寫的IP地址就是公司出口IP地址(如圖3)。
做好這些配置后,經(jīng)測(cè)試,遠(yuǎn)程客戶端可以連接FTP服務(wù)器,并且登錄正常。FTP服務(wù)使用5566端口為管理端口,5565端口為數(shù)據(jù)鏈路端口。至此,F(xiàn)TP服務(wù)器搭建完成。并實(shí)現(xiàn)了最初的設(shè)定,使用非默認(rèn)端口,在防火墻上只開(kāi)放必要的、最少的端口的目標(biāo)。
FTP的訪問(wèn)有主動(dòng)方式和被動(dòng)方式之分,適用在不同的環(huán)境和條件。在互聯(lián)網(wǎng)中開(kāi)放FTP,采用被動(dòng)方式,雖然服務(wù)器主動(dòng)打開(kāi)隨機(jī)數(shù)據(jù)端口是有安全風(fēng)險(xiǎn)的,但這種方式下,可以設(shè)置開(kāi)放數(shù)據(jù)端口的范圍,網(wǎng)絡(luò)防火墻可以進(jìn)行端口開(kāi)放設(shè)置,因此安全風(fēng)險(xiǎn)是可控的。而采用主動(dòng)方式,雖然服務(wù)器不用開(kāi)放隨機(jī)數(shù)據(jù)端口,服務(wù)器比較安全,但客戶端側(cè)的網(wǎng)絡(luò)防火墻不容易進(jìn)行端口開(kāi)放配置,因此無(wú)法采用。所以在互聯(lián)網(wǎng)環(huán)境中,F(xiàn)TP一般都是使用被動(dòng)方式。
做完這項(xiàng)工作后,筆者深有感觸。在進(jìn)行每一項(xiàng)新工作之前,應(yīng)該對(duì)工作中所要用到的知識(shí)進(jìn)行認(rèn)真的學(xué)習(xí)和準(zhǔn)備,才能高效、順利地完成各項(xiàng)工作。