ISA下FTP的解決辦法(2)_Ftp服務器教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!
      前面我們講過,FTP協議的數據傳輸存在兩種模式:主動模式和被動模式。這兩種模式發起連接的方向截然相反,主動模式是從服務器端向客戶端發起;被動模式是客戶端向服務器端發起連接。

        我們回到ISA的情況,如果采用被動模式,由于IIS是完全隨機的選擇一個端口,并告知客戶,然后客戶進行主動連接,這就意味著在ISA上,你要讓所有的端口都允許動態入站連接才行,這樣肯定不行,因為太危險了,等于打開了所有的端口連接。

        如果采用主動模式(PORT Mode),IIS選擇好端口后,主動與客戶進行連接,這時候不需要像PASV模式那樣打開所有的動態入站連接,而且正好相反,我們需要打開所有的動態出站連接即可,安全性增加很多。而且由ISA的IP PACKET FILTER只對ISA本機起作用,不會造成局域網內的客戶“放了羊”。

        所以,我個人這樣做的:

       。1)由于IIS和ISA都在一臺機器上,所以它倆都在偵聽21號端口(IIS默認情況下會偵聽所有地址的21端口),所以我們首先要讓IIS只偵聽內網地址的PORT 21,在DOS下,你可以通過NETSTAT -NA > abc.txt,然后打開這個文件,你會看到0.0.0.0 21 LISTENING字樣。

        輸入如下命令:

        net stop msftpsvc (停止FTP服務)
        進入\Inetpub\adminscripts\目錄
        cscript adsutil.vbs set msftpsvc/disablesocketpooling true (停止偵聽)
        net start msftpsvc (啟動FTP服務)

       。2)在IIS控制臺里面,ftp->Property->FTP Site->IP Address改為內網地址,F在,FTP服務只偵聽內網IP的21號端口了。

       。3)大家可能這時候有疑問,如果是IIS主動連接客戶端,那客戶端的防火墻是不是會阻止這個連接(PASV模式不存在這個問題)。為了防止這種情況,我們可以強制IIS不能與客戶端的任意端口進行連接,而只有客戶端連接IIS的端口進行數據傳輸。這樣就可以解決PORT MODE與客戶端防火墻的沖突。方法:修改注冊
      表,HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Msftpsvc\Parameters\,將EnablePortAttack的值由0改為1,然后重新啟動FTP服務。

       。4)在ISA里面,使用SERVER PUBLISH的方法發布FTP服務,其中:IP address of internal server 填寫ISA的內部網卡的IP,IP address of external server 填寫ISA的外部網卡的IP,Mapped server protocol 選擇 FTP Server。

       。5)然后在IP Packet Filter建立一條新RULES,Protocol->TCP,Direction->Outbound,Local Port->Dymanic,Remote Port->All。

        這是我的解決辦法,但是并不完美,主要是:

        (1)客戶不能使用PASV方法進行連接,原因上面已經講了。

        (2)由于第五條,所以ISA服務器隨著保證了對外部訪問的限制,卻無法限制ISA本機對外部的訪問。

      來源:網絡搜集//所屬分類:Ftp服務器教程/更新時間:2013-04-15
      相關Ftp服務器教程