Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> 電腦軟件教程 >> 服務器技術 >> 關於服務器 >> ftp服務程序不安全因素研究

ftp服務程序不安全因素研究

日期:2017/2/8 10:35:07      編輯:關於服務器

FTP(File Tranfer Protocol)是一種很古老的協議來的了,自unix始就一直有使用的了,FTP因為本身不但可以提供多用戶同時下載的功能外,還可以讓用戶上載文件,在不斷的發展中,還可以使用ftp遠程執行命令,由於FTP一般需要帳戶和密碼的,而且對於不同的帳戶可提供不同的權限,由於這麼多的功能,所以一直至今還是相當流行的。不過,以下我會說說FTP服務程序很可能出現的安全方面的問題。 

  FTP的連接一般是有兩個連接的,一個是客戶程和服務器傳輸命令的,另一個是數據傳送的連接。FTP服務程序一般會支持兩種不同的模式,一種是Port模式,一種是Passive模式(Pasv Mode),我先說說這兩種不同模式連接方式的分別。


  先假設客戶端為C,服務端為S. 

  Port模式: 

  當客戶端C向服務端S連接後,使用的是Port模式,那麼客戶端C會發送一條命令告訴服務端S(客戶端C在本地打開了一個端口N在等著你進去數據連接),當服務端S收到這個Port命令後,就會向客戶端打開的那個端口N進行連接,這種數據連接就生成了。 

  Pasv模式: 
  當客戶端C向服務端S連接後,服務端S會發信息給客戶端C,這個信息是(服務端S在本地打開了一個端口M,你現在去連接我吧),當客戶端C收到這個信息後,就可以向服務端S的M端口進行連接,連接成功後,數據連接也建立了。 

  從上面的解釋中,大家應該可以看到兩種模式主要的不同是數據連接建立的不同,對於Port模式,是客戶端C在本地打開一個端口等服務端S去連接建立數據連接;而Pasv模式就是服務端S打開一個端口等待客戶端C去建立一個數據連接。 

  兩種模式看起來其實都是沒什麼問題,但其實都是隱藏著安全方面的問題的。 

  對於Port模式,這種模式多是用於因為服務端有防火牆,無法使用Pasv在服務端打開端口讓客戶端去連接而被逼使用的,但由於連接本身是由服務端本身向外連接的,這本身就存在了一個安全的問題了,因為如果這個連接一旦被hijack,由於連接是由服務器本身向外連的,防火牆將不會有任何動作去處理這個連接。 

  對於Pasv模式,看起來是比Port模式安全很多不過認真想一想的話,還是會發現它本身的問題的。由於服務端會打開一個端口等客戶端去連接,但如果這個打開的端口並沒有檢測連接的IP是否那個是那個客戶端的IP,那麼安全問題的出現了。因為有很多FTP服務器打開的數據端口等客戶端連接是隨機的,但都會在一定范圍內的,例如是20000-21000這些端口間。如果FTP服務器並沒有在接收數據端口的連接時檢測連接過來的IP是不是已經是合法登陸的用戶的話,那麼其他並沒有登陸的用戶就很有機會寫程序hijack這個連接了。以下給一個例子說明一下: 

  服務端S接收到客戶端C(IP=12.12.12.12)的命令連接使用的是Pasv模式,服務端S打開了端口20000等待數據連接,在這時,一位黑客(IP=11.11.11.11)掃描了服務端S的20000到20100的端口,發現了20000端口打開了,馬上就連接上去服務端S的20000這個端口了。在這情況中,如果服務端S並沒有檢測11.11.11.11這個IP是不是合法登陸的用戶的IP的話,那麼真正的客戶端C的數據連接就被人hijack了,如果客戶端C發送給服務端S的命令是下載某個文件的話,那麼那個文件只會發送到那個黑客中去了。這種情況下,黑客可以是隨機掃描並hijack到不同的連接,或者可以同時對那些端口不停的連接,那麼合法用戶的連接就會很多被hijack了,hijack後黑客會做什麼,那就視乎那位黑客的能力和想做什麼了。 

  解決: 

  對於Port模式,由於那是FTP本身的問題,所以沒有什麼解決的好方法。或者可以的話,只是允許Pasv模式而不允許Port模式。 

  對於Pasv模式,只要在接收到數據連接時檢測IP是不是合法用戶的請求,就可以避免連接被hijack的問題。 

  以上hijack連接的都屬於比較高級的"黑客"才有機會實現的,因為對於不同的FTP服務程序是有所不同的,而且一般是需要自己先研究過那個FTP服務程序然後再寫程序才有可能實現的。以下說說一般用戶都可以因為寫FTP服務程序對於安全的不注重而進行通過FTP而入侵到系統的問題。 

  這個問題其實平時都是很常見的了,一般都是對於用戶登入FTP後可以跳轉到的目錄的權限限制問題。 

  很多用過的FTP程序(最基本的FTP服務,只提供上傳,下載,連用戶名和密碼都不需要那種),如anonymouse ftp(aftp)那類,根本不會限制登陸用戶可以跳轉到的目錄,就是說登入的用戶可以隨意查看系統不同目錄的文件,下載不同目錄的文件或者上傳文件到任何目錄中去的,可以下載任何文件或上傳任何文件到任何目錄,這問題有多嚴重,我也不需要說了吧。 

  有的FTP程序,雖然提供了用戶名和密碼,但一樣沒有對於用戶可訪問目錄進行任何限制,xfocus的出品,xftpd就是一個很好的例子,用戶登入後,一樣是可以上面所說的,用戶可 以下載系統任何文件或上傳任何文件到任何目錄中去的。 
  有的FTP,就是對於要限制可訪問的目錄的檢測不夠全面,導致登入用戶可以使用一些特殊的字符而可以訪問到限制訪問的目錄中去。好的一個例子就是舊版的slimftpd了。這種情況一般稱為"Directory Traveling Vulnerability",很多舊版的共享的FTP服務程序都曾存在過這些問題的。 

  如果你要建立一個FTP服務器,我可以給的建議就是選擇一個比較穩定和安全的FTP程序(當然可以考慮自己寫的),然後在真正投入使用前對於上面所提及到的安全問題都自己檢測一 下,如果是自己寫的話可以發布些免費版本(不是全功能的)給用戶去測試一下,測試沒問題後再投入正式使用。 

  上面所寫都是在和朋友開發FTP服務程序時研究FTP協議時看到或在測試時的一些小心得,錯漏的地方也是難免的,如果看到有什麼錯誤的地方可以跟貼指出。

Copyright © Windows教程網 All Rights Reserved