ISA下FTP的解決辦法(2) |
發(fā)布時(shí)間: 2012/8/14 11:23:34 |
前面我們講過,F(xiàn)TP協(xié)議的數(shù)據(jù)傳輸存在兩種模式:主動(dòng)模式和被動(dòng)模式。這兩種模式發(fā)起連接的方向截然相反,主動(dòng)模式是從服務(wù)器端向客戶端發(fā)起;被動(dòng)模式是客戶端向服務(wù)器端發(fā)起連接。
我們回到ISA的情況,如果采用被動(dòng)模式,由于IIS是完全隨機(jī)的選擇一個(gè)端口,并告知客戶,然后客戶進(jìn)行主動(dòng)連接,這就意味著在ISA上,你要讓所有的端口都允許動(dòng)態(tài)入站連接才行,這樣肯定不行,因?yàn)樘kU(xiǎn)了,等于打開了所有的端口連接。 如果采用主動(dòng)模式(PORTMode),IIS選擇好端口后,主動(dòng)與客戶進(jìn)行連接,這時(shí)候不需要像PASV模式那樣打開所有的動(dòng)態(tài)入站連接,而且正好相反,我們需要打開所有的動(dòng)態(tài)出站連接即可,安全性增加很多。而且由ISA的IPPACKETFILTER只對(duì)ISA本機(jī)起作用,不會(huì)造成局域網(wǎng)內(nèi)的客戶“放了羊”。 所以,我個(gè)人這樣做的: (1)由于IIS和ISA都在一臺(tái)機(jī)器上,所以它倆都在偵聽21號(hào)端口(IIS默認(rèn)情況下會(huì)偵聽所有地址的21端口),所以我們首先要讓IIS只偵聽內(nèi)網(wǎng)地址的PORT21,在DOS下,你可以通過NETSTAT-NA>abc.txt,然后打開這個(gè)文件,你會(huì)看到0.0.0.021LISTENING字樣。 輸入如下命令: netstopmsftpsvc(停止FTP服務(wù)) 進(jìn)入\Inetpub\adminscripts\目錄 cscriptadsutil.vbssetmsftpsvc/disablesocketpoolingtrue(停止偵聽) netstartmsftpsvc(啟動(dòng)FTP服務(wù)) (2)在IIS控制臺(tái)里面,ftp->Property->FTPSite->IPAddress改為內(nèi)網(wǎng)地址,F(xiàn)在,F(xiàn)TP服務(wù)只偵聽內(nèi)網(wǎng)IP的21號(hào)端口了。 (3)大家可能這時(shí)候有疑問,如果是IIS主動(dòng)連接客戶端,那客戶端的防火墻是不是會(huì)阻止這個(gè)連接(PASV模式不存在這個(gè)問題)。為了防止這種情況,我們可以強(qiáng)制IIS不能與客戶端的任意端口進(jìn)行連接,而只有客戶端連接IIS的端口進(jìn)行數(shù)據(jù)傳輸。這樣就可以解決PORTMODE與客戶端防火墻的沖突。方法:修改注冊(cè)表,HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\,將EnablePortAttack的值由0改為1,然后重新啟動(dòng)FTP服務(wù)。 (4)在ISA里面,使用SERVERPUBLISH的方法發(fā)布FTP服務(wù),其中:IPaddressofinternalserver填寫ISA的內(nèi)部網(wǎng)卡的IP,IPaddressofexternalserver填寫ISA的外部網(wǎng)卡的IP,Mappedserverprotocol選擇FTPServer。 (5)然后在IPPacketFilter建立一條新RULES,Protocol->TCP,Direction->Outbound,LocalPort->Dymanic,RemotePort->All。 (1)客戶不能使用PASV方法進(jìn)行連接,原因上面已經(jīng)講了。 (2)由于第五條,所以ISA服務(wù)器隨著保證了對(duì)外部訪問的限制,卻無法限制ISA本機(jī)對(duì)外部的訪問。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |