FTP,SFTP,FTPS總結

 FTP應用分FTPSFTPFTPS,其中最多見的是FTP,也是下面將重點討論的情形;SFTPSecure File Transfer Protocol,是SSH協議一個子協議,不區分控制和數據端口;FTPS「FTP-over-SSL」 是在安全套接層使用標準的FTP協議和指令的一種加強型協議(相似https),也沒有控制和數據端口的區分;因此SFTPFTPS徹底不一樣於普通的FTP應用(控制和數據用不一樣的鏈接),能夠SFTPFTPS的訪問需求等同於普通的TCP應用處理。安全

 

主動FTP

    主動方式的FTP是這樣的:客戶端從一個任意的非特權端口NN>;1024)鏈接到FTP服務器的命令端口,也就是21端口。而後客戶端開始監聽端口N+1,併發送FTP命令「port N+1」FTP服務器。接着服務器會從它本身的數據端口(20)鏈接到客戶端指定的數據端口(N+1)。
針對FTP服務器前面的防火牆來講,必須容許如下通信才能支持主動方式FTP
服務器

1.       任何端口到FTP服務器的21端口 (客戶端初始化的鏈接 S<-C網絡

2.       FTP服務器的21端口到大於1023的端口(服務器響應客戶端的控制端口 S->C併發

3.       FTP服務器的20端口到大於1023的端口(服務器端初始化數據鏈接到客戶端的數據端口 S->Capp

4.       大於1023端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口 S<-Cssh

鏈接過程大概是下圖的樣子(沒有嚴格按TCP三次握手畫):


    在第1步中,客戶端的命令端口與FTP服務器的命令端口創建鏈接,併發送命令「PORT 1027」。而後在第2步中,FTP服務器給客戶端的命令端口返回一個"ACK"。在第3步中,FTP服務器發起一個從它本身的數據端口(20)到客戶端先前指定的數據端口(1027)的鏈接,最後客戶端在第4步中給服務器端返回一個"ACK"
主動方式FTP的主要問題實際上在於客戶端。FTP的客戶端並無實際創建一個到服務器數據端口的鏈接,它只是簡單的告訴服務器本身監聽的端口號,服務器再回來鏈接客戶端這個指定的端口。對於客戶端的防火牆來講,這是從外部系統創建到內部客戶端的鏈接,這是一般會被阻塞的。
tcp

 

被動FTP

    爲了解決服務器發起到客戶的鏈接的問題,人們開發了一種不一樣的FTP鏈接方式。這就是所謂的被動方式,或者叫作PASV,當客戶端通知服務器它處於被動模式時才啓用。
在被動方式FTP中,命令鏈接和數據鏈接都由客戶端,這樣就能夠解決從服務器到客戶端的數據端口的入方向鏈接被防火牆過濾掉的問題。當開啓一個FTP鏈接時,客戶端打開兩個任意的非特權本地端口(N >; 1024N+1)。第一個端口鏈接服務器的21端口,但與主動方式的FTP不一樣,客戶端不會提交PORT命令並容許服務器來回連它的數據端口,而是提交PASV命令。這樣作的結果是服務器會開啓一個任意的非特權端口(P >; 1024),併發送PORT P命令給客戶端。而後客戶端發起從本地端口N+1到服務器的端口P的鏈接用來傳送數據。

對於服務器端的防火牆來講,必須容許下面的通信才能支持被動方式的FTP:
工具

1.       從任何端口到服務器的21端口 (客戶端初始化的鏈接 S<-C加密

2.       服務器的21端口到任何大於1023的端口 (服務器響應到客戶端的控制端口的鏈接 S->Cspa

3.       從任何端口到服務器的大於1023端口 (入;客戶端初始化數據鏈接到服務器指定的任意端口 S<-C

4.       服務器的大於1023端口到遠程的大於1023的端口(出;服務器發送ACK響應和數據到客戶端的數據端口 S->C

被動方式的FTP鏈接過程大概是下圖的樣子:


    在第1步中,客戶端的命令端口與服務器的命令端口創建鏈接,併發送命令「PASV」。而後在第2步中,服務器返回命令"PORT 2024",告訴客戶端(服務器)用哪一個端口偵聽數據鏈接。在第3步中,客戶端初始化一個從本身的數據端口到服務器端指定的數據端口的數據鏈接。最後服務器在第4 步中給客戶端的數據端口返回一個"ACK"響應。

    被動方式的FTP解決了客戶端的許多問題,但同時給服務器端帶來了更多的問題。最大的問題是須要容許從任意遠程終端到服務器高位端口的鏈接。第二個問題是客戶端有的支持被動模式,有的不支持被動模式,必須考慮如何能支持這些客戶端,以及爲他們提供解決辦法。例如,Solaris提供的FTP命令行工具就不支持被動模式,須要第三方的FTP客戶端,好比ncftp總結

下面的圖表會幫助管理員們記住每種FTP方式是怎樣工做的,在創建數據傳輸通道時,服務器主動即主動ftp,客戶端鏈接服務器(服務器被動)即被動ftp

主動FTP
   命令鏈接:客戶端 >1023端口 -> 服務器 21端口
   數據鏈接:客戶端 >1023端口 <- 服務器 20端口

被動FTP
   命令鏈接:客戶端 >1023端口 -> 服務器 21端口
   數據鏈接:客戶端 >1023端口 -> 服務器 >1023端口

下面是主動與被動FTP優缺點的簡要總結:

主動FTPFTP服務器的管理有利,但對客戶端的管理不利。由於FTP服務器企圖與客戶端的高位隨機端口創建鏈接,而這個端口頗有可能被客戶端的防火牆阻塞掉。被動FTPFTP客戶端的管理有利,但對服務器端的管理不利。由於客戶端要與服務器端創建兩個鏈接,其中一個連到一個高位隨機端口,而這個端口頗有可能被服務器端的防火牆阻塞掉。

 

亦莊SRF網絡設備配置示例

1.       標準端口:

FWSM啓用inspect FTP檢測(全局下):

命令:

class-map inspection_default

 match default-inspection-traffic

!

!

policy-map global_policy

 class inspection_default

  inspect ftp

!

service-policy global_policy global

JUNIPER啓用基於策略的ALG FTP檢測(全局下缺省啓用):

命令:set alg ftp enable

2.       非標準端口:

FWSM,全局下,啓用自定義端口的inspect FTP檢測:

命令:

class-map FTP-1359

 match port tcp eq 1359

!

!

policy-map global_policy

 class FTP-1359

  inspect ftp

!

!

service-policy global_policy global

JUNIPER,啓用基於策略的ALG FTP檢測

命令:set policy id xxx application "FTP"

 

引入風險

須要嚴格區分控制端口和數據端口(FWSM全局下區分,Juniper能夠作基於策略的區分),由於inspectalg檢測須要使用cpu,控制端口對應的數據量比較小,因此對cpu的消耗能夠忽略,若打開數據通道上的inspectalg功能,大量的數據包檢測將消耗較多的cpu資源,易形成CPU突發,這點須要特別注意,須要項目組,需求分析組對FTP等相似端口作嚴格審覈。

 

  sftp是Secure File Transfer Protocol的縮寫,安全文件傳送協議。能夠爲傳輸文件提供一種安全的加密方法。sftp 與 ftp 有着幾乎同樣的語法和功能。SFTP 爲 SSH的一部分,是一種傳輸檔案至 Blogger 伺服器的安全方式。其實在SSH軟件包中,已經包含了一個叫做SFTP(Secure File Transfer Protocol)的安全文件傳輸子系統,SFTP自己沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的鏈接操做,因此從某種意義上來講,SFTP並不像一個服務器程序,而更像是一個客戶端程序。SFTP一樣是使用加密傳輸認證信息和傳輸的數據,因此,使用SFTP是很是安全的。可是,因爲這種傳輸方式使用了加密/解密技術,因此傳輸效率比普通的FTP要低得多,若是您對網絡安全性要求更高時,可使用SFTP代替FTP。

SFTP自己沒有單獨的守護進程,它必須使用sshd守護進程(端口號默認是22)來完成相應的鏈接操做,因此從某種意義上來講,SFTP並不像一個服務器程序,而更像是一個客戶端程序。

 

啓動ssh服務、sftp服務

執行命令 /etc/init.d/sshd start 注意這裏須要在絕對路徑下執行sshd start。

 

三. FTPS  (FTP over SSL)

      SSL/TLS協議在傳輸層(TCP/IP)之上、可是在應用層之下工做的。所以,它能夠很容易在諸如HTTP,Telnet,POP3,IMAP4,SMTP和FTP等應用層協議上實現。SSL安全擴展至少有兩種不一樣的初始化方法:顯式安全和隱式安全。

       顯示安全:爲了創建SSL鏈接,顯式安全要求FTP客戶端在和FTP服務器創建鏈接後發送一個特定的命令給FTP服務器。客戶端使用服務器的缺省端口。
       隱式安全: 當FTP客戶端鏈接到FTP服務器時,隱式安全將會自動和SSL鏈接一塊兒開始運行。在隱式安全中服務器定義了一個特定的端口(TCP端口990)讓客戶端來和其創建安全鏈接。        
wKiom1L-zQqDuQNkAAFTl55vS_U843.jpg

當 經過SSL/TLS來使用FTP時(縮寫爲FTPS),FTP客戶端和FTP服務器之間的控制鏈接就被加密了,所以除了它們以外誰也不能讀懂它們之間的控 制鏈接的信息。正式由於這樣,NAT/PAT設備和防火牆不再能監控數據鏈接,而且從中獲得有用的信息,從而再有針對性地作一些事情了(作些什麼事 呢?),因此FTPS協議在防火牆和NAT環境下的實際應用受到嚴重的限制。

相關文章
相關標籤/搜索