寫這一系列文章的動因很簡單,在年前最后一個項目的時候在客戶現場做了的幾個安全加固。由於時間問題,很多東西就拿來主義沒經過思考直接更改了,並未細細品味其中的原理和方法,所以特地搭建實驗環境,分析下其中的原因,也幫助IT運維的同事在平時的安全巡檢與維護中能夠關注與理解一些運維上的安全問題。
FTP存在的安全問題
- 匿名訪問
FTP匿名訪問是FTP安全問題中最常見的問題,詳情可以見wooyun。今天通過一天時間通過反復的復測,嘗試,發現一個看似簡單的FTP匿名訪問實則存在很多隱藏的小坑。所以寫出來幫助大家在安全運維的道路上能夠更加游刃有余。
首先是大家都知道的,以最常見的Linux FTP軟件VSFTP為例,我們分析他的配置文件,發現涉及匿名訪問的主要conf項有如下幾項。
anonymous_enable=YES 是否允許FTP匿名訪問登錄 anon_upload_enable=YES 是否允許FTP匿名上傳 anon_mkdir_write_enable=YES 是否允許FTP匿名用戶創建目錄
(以下實驗過程有些繁瑣,了解的朋友可以直接看后面加粗字體結論)
通常朴素的思維,我們把anonymous_enable配置項置為Off了,我們就可以解決匿名訪問的問題。這句話這么說的確不假,但wooyun上大FTP匿名訪問的數量不在少數,以及自己在做內網滲透時,內網的匿名訪問問題更加嚴重。

我經過多次試驗,發現FTP匿名訪問如果想造成實質危害需要滿足很多條件,並非簡簡單單匿名登錄了就能造成危害,以下為條件都需要滿足才能造成實質危害:
- 配置文件三要素要滿足,上文提到的vsftp.conf中的三個配置選項必須打開,這個是匿名訪問的根本。我測試用的為Cent OS6.5通過yum安裝的vsftpd發現配置文件conf中的默認匿名訪問是開啟的,若運維人員缺乏安全意識可能會導致匿名訪問情況發生。
- 由於匿名訪問需要Linux ftp賬戶登錄,所以在var/ftp目錄下,存在匿名登錄的目錄至少為755權限,否則匿名用戶是無法上傳與下載或讀取相關文件。
- vsftp.conf中必須配置 anon_umask=022 才可造成真正的敏感文件讀取泄露問題。我經過反復大量的實驗發現,vsftpd上傳文件的讀寫權限與不受系統的umask和原有配置文件中local_umask項影響,要想保證上傳文件的可讀可寫性。必須要運維人員手動添加anon_umask值,來確保ftp目錄下上傳的文件可讀可下載。
結論:匿名訪問無論在內網還是外網都應該被杜絕的,尤其wooyun上大量案例使用FTP匿名訪問,通過實驗應該是企業內部將FTP當做了一個便攜式局域網“U盤”使用造成了相關的安全問題。
- 未限制登錄用戶訪問目錄權限
未限制FTP登陸用戶在自己的家目錄中活動,導致可遍歷系統的敏感文件,若系統umask設置不當,可上傳寫入木馬等。輸入/etc發現目錄依舊可以訪問。導致服務器安全出現問題。

vsftp默認登錄,用戶在home家目錄下的ftpuser下。

我們可以通過如下方法來加固,做法如很多博客文章介紹的一樣,編輯vsftpd.conf目錄下的文件特定配置如下:
chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list
除了chroot_list中的用戶都不能訪問上級根目錄,效果如下:

將ftpuser添加進入,chroot_list再次實驗,效果如下:


以下是一些,自己在安全加固中FTP方面的一些淺顯的認識,希望能幫助到大家。
