FTP防火牆設定

2021-06-18 04:22:36 字數 4419 閱讀 5014

需要開很多埠的。

有很多人對ftp的問題多多,大家參考、討論一下。

我的環境:

server:isa sp1,iis

client:windows 2000 and xp, cuteftp

主要討論isa和ftp在同一臺機器上的處理辦法。

ftp的特殊性:

大多數的tcp服務是使用單個的連線,一般是客戶向伺服器的乙個周知埠發起連線,然後使用這個連線進行通訊。但是,ftp協議卻有所不同,它使用雙向的多個連線,而且使用的埠很難預計。一般,ftp連線包括:

乙個控制連線(control connection)

這個連線用於傳遞客戶端的命令和伺服器端對命令的響應。它使用伺服器的21埠,生存期是整個ftp會話時間。

幾個資料連線(data connection)

這些連線用於傳輸檔案和其它資料,例如:目錄列表等。這種連線在需要資料傳輸時建立,而一旦資料傳輸完畢就關閉,每次使用的埠也不一定相同。而且,資料連線既可能是客戶端發起的,也可能是伺服器端發起的。

在ftp協議中,控制連線使用周知埠21,因此使用isa的ip packet filter就可以這種連線進行很好的安全保護。相反,資料傳輸連線的目的埠通常實現無法知道,因此處理這樣的埠**非常困難。ftp協議使用乙個標準的埠21作為ftp-data埠,但是這個埠只用於連線的源位址是伺服器端的情況,在這個埠上根本就沒有監聽程序。ftp的資料連線和控制連線的方向一般是相反的,也就是說,是伺服器向客戶端發起乙個用於資料傳輸的連線。連線的埠是由伺服器端和客戶端協商確定的。ftp協議的這個特徵對isa**以及防火牆和nat的配置增加了很多困難。

除此之外,還有另外一種ftp模式,叫做被動模式(passive mod)。在這種模式下,資料連線是由客戶程式發起的,和剛才討論過的模式(我們可以叫做主動模式)相反。是否採取被動模式取決於客戶程式,在ftp命令列中使用passive命令就可以關閉/開啟被動模式。

前面我們講過,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改為內網位址。現在,ftp服務只偵聽內網ip的21號埠了。

(3)大家可能這時候有疑問,如果是iis主動連線客戶端,那客戶端的防火牆是不是會阻止這個連線(pasv模式不存在這個問題)。為了防止這種情況,我們可以強制iis不能與客戶端的任意埠進行連線,而只有客戶端連線iis的埠進行資料傳輸。這樣就可以解決port mode與客戶端防火牆的衝突。方法:修改註冊

表,hkey_local_machine\system\currentcontrolset\services\msftpsvc\parameters\,將enableportattack的值由0改為1,然後重新啟動ftp服務。

(5)然後在ip packet filter建立一條新rules,protocol->tcp,direction->outbound,local port->dymanic,remote port->all。

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

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

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

我也把我的方法做了一下實驗,使用serv-u做的,有一點錯誤,不過終歸做了出來,下面總結一下:

pasv伺服器放在isa後面,其實就是要解決兩個問題:

1。pasv的埠。我上面的方法提出使用secondary connection,但事實證明不對,應該每個pasv埠都建立一條primary connection,然後分別建立server publishing rules,有多少個pasv埠,就要建立多少條。

這裡還可以引出另乙個話題,就是對web publishing rules的運用,tony你應該知道,通過web publishing rules也可以發布ftp伺服器,但rule裡面只給了乙個ftp埠的選項,很明顯,這是為port模式的ftp伺服器準備的,因為port模式的資料連線是由伺服器發起的,在伺服器一邊,不存在穿過防火牆的問題。

需要好好考慮的是如何通過那個只能填乙個埠的選項來發布隨機的pasv埠?我從今天的實驗找到了一點靈感,就是也象上面說的那樣,每個pasv埠都設定一條web publishing rules!我還未做這個實驗,還不能證實這樣做行不行,相信晚上就會有結果了。

當然,還需要考慮如何控制pasv模式埠的範圍,serv-u可以設定,而iis的ftp不行。

幸好,還是有乙個好訊息,就是serv-u本身具有返回isa外網位址這樣的功能,方法是先選中新建ftp伺服器的屬性,在domain標籤裡選擇「enable dynamic dns」,此時會出現第二個標籤,叫「dynamic dns」,然後到tz0.com申請動態網域名稱,申請後會得到乙個key,在此標籤中填入此key即可。最後一步,是到新建伺服器的settings屬性中,選擇advanced標籤,選中「allow passive mode data transfer」,旁邊的ip位址框留空。這個框對於撥號使用者不用填,只有出口使用固定位址才需要填。

這樣,serv-u向客戶端返回ip和埠前,會先向tz0.com查詢到isa外網的位址,再傳送給客戶端。

解決了這兩個問題,剩下的工作就簡單了。

從以上內容也可以說明一點,從內網不能發布iis的ftp伺服器,因為iis既沒有選項可以選擇pasv埠的範圍,也沒有辦法讓其返回isa外網的位址。而serv-u這兩條都可以滿足。當然,在微軟的**上也可能有方法解決iis的這兩個問題。

發布ftp伺服器的時候,要注意ftp伺服器有port和pasv兩種模式。兩者的共同點,是都使用21埠進行使用者驗證及管理,差別在於傳送資料的方式不同,port模式的ftp伺服器資料埠固定在20,而pasv模式則在1025-65535之間隨機。發布的時候要考慮這個差別。

如果ftp伺服器在內部網路中,在建立server publish rules時(雖然web publish rules也能發布ftp伺服器,但它並沒有提供對port和pasv模式的處理),protocol definitions中的21 inbound條目要建立乙個secondary connection,為20埠上的inbound或1025-65535埠之間的inbound。

如果ftp伺服器建立在isa伺服器上,就需要在ip packet filters中設定相關的條目,對於port模式,很簡單,開放20 inbound就是,但pasv模式就麻煩一點,因為ip packet filters不能設定埠段,但我們也不可能把幾萬個埠逐個寫一遍,只能把local port設定為dynamic,remote port設定為all ports,當然,對安全性這是個損害。

幸運的是,有些pasv模式的ftp伺服器能夠設定pasv模式埠的範圍,比如serv-u,它能夠把pasv模式埠控制在最多50個埠範圍內,如果為serv-u設定的併發使用者數不多,那麼我們就可以為每個pasv埠寫一條filter,不需要開放所有的埠了。如果使用iis的ftp伺服器,這個ftp伺服器沒有提供選擇pasv模式埠的功能,只能如上所述那樣,開放dynamic和all ports。

從你上面的出錯資訊來看,你應該是使用ie來訪問ftp伺服器吧。ie的ftp客戶端與其它專業ftp客戶端不同,不能夠自動檢測ftp伺服器的型別以及根據伺服器的型別改變客戶端的種類。ie只提供了乙個手工選項來改變port和pasv客戶端角色,就是internet選項->高階->為ftp站點啟用資料夾檢視,選擇它,ie為pasv模式客戶端,不選則為port客戶端。你需要根據伺服器的型別手工更改這個選項。如果伺服器的出口是adsl類的鏈路,還要把「使用被動ftp(為防火牆和dsl數據機相容性)」一項選上,這兩個選項只在ie5。5以上版本提供。

防火牆設定

目錄導航 一 iptables防火牆 二 firewall防火牆 centos7 的防火牆配置跟以前版本有很大區別,centos7這個版本的防火牆預設使用的是firewall,與之前的版本centos 6.x使用iptables不一樣 目錄導航 一 iptables防火牆 1 基本操作 servic...

防火牆設定

防火牆設定 firewall cmd zone public add port 80 tcp permanent 新增埠 firewall cmd zone public query port 80 tcp 查詢80埠是否開啟 firewall cmd zone public list ports ...

防火牆中配置FTP

color green size 12 要求 外網充許訪問內網中的ftp服務。考慮 將內網位址nat為外網可以訪問的位址 ftp服務一般使用tcp21埠進行主機鏈結 ftp分為pasv與port兩種方式,即被動模式與主動模式。在pasv下,當客戶端與ftp伺服器發生資料傳輸過程中,採用高於1024的...