安全攻略:如何巧妙設定安全的匿名FTP
來源:互聯網
上載者:User
關鍵字
安全
可以
ftp
ftp伺服器
以下的設定方式是由過去許多網站累積的經驗與建議組成。 我們認為可以讓有個別需求的網站擁有不同設定的選擇。 設定匿名FTPA.FTP daemon網站必須確定目前使用的是最新版本的FTP daemon。 B設定匿名FTP的目錄匿名ftp的根目錄(~ftp)和其子目錄的擁有者不能為ftp帳號,或與ftp相同群組的帳號。 這是 一般常見的設定問題。 假如這些目錄被ftp或與ftp相同群組的帳號所擁有,又沒有做好防止寫入的保護,入侵者便可能在其中增加檔或修改其它檔。 現在許多網站都擁有root帳號,如果讓匿名FTP的根目錄與子目錄的擁有者是root,所屬族群(group)為system?,如此只有root有寫入的權力,這能説明你維持FTP服務的安全??? 以下是一個匿名ftp目錄的設定範例:drwxr-xr-x 7 root system 512 Mar 1 15:17 ./drwxr-xr-x 25 root system 512 Jan 4 11:30 .. /drwxr-xr-x 2 root system 512 Dec 20 15:43 bin/drwxr-xr-x 2 root system 512 Mar 12 16:23 etc/drwxr-xr-x 10 root system 512 Jun 5 10:54 pub/所有的檔和程式庫,特別是那些被FTP daemon使用和那些在 ~ftp/bin 與~ftp/etc 中的檔,應該像上面範例中的目錄做相同的保護。 這些檔和程式庫除了不應該被ftp帳號或與ftp相同群組的帳號所擁有之外,也必須防止寫入。 C.我們強烈建議網站不要使用系統中 /etc/passwd 做為~ftp/etc 目錄中的密碼檔或將系統中 /etc/group 做為 ~ftp/etc目錄中的群組檔。 在~ftp/etc目錄中放置這些檔會使得入侵者取得它們。 這些檔是可自定的而且不是用來做存取控制。 我們建議你在 ~ftp/etc/passwd 與 ~ftp/etc/group 使用代替的檔。 這些檔必須由root所擁有。 DIR命令會使用這代替的檔來顯示檔及目錄的擁有者和群組名稱。 網站必須確定 ~/ftp/etc/passwd檔中沒有包含任何與系統中 /etc/passwd檔中相同的帳號名稱。 這些檔應該僅僅包含需要顯示的FTP階層架構中檔與目錄的擁有者與所屬群組名稱。 此外,確定密碼欄位是"整理"過的。 例如使用「*」來取代密碼欄位。 以下為cert中匿名ftp的密碼檔範例ssphwg:*:3144:20:Site Specific Policy Handbook Working Group::cops:*:3271:20:COPS Distribution:: cert:*:9920:20:CERT::tools:*:9921:20:CERT Tools::ftp:*:9922:90:Anonymous FTP::nist:*:9923:90:NIST Files:: 以下為cert中匿名ftp的群組檔範例cert:*:20:ftp:*:90:II.. 在你的匿名ftp提供可寫入的目錄讓一個匿名ftp服務允許消費者儲存檔是有風險存在的。 我們強烈提醒網站不要自動建立一個上傳目錄,除非已考慮過相關的風險。 CERT/CC的事件回報成員接獲許多使用上傳目錄造成非法傳輸版權軟體或交換帳號與密碼資訊的事件。 也接獲惡意地將系統檔灌報造成denialof service問題。 本節在討論利用三種方法來解決這個問題。 第一種方法是使用一個修正過的FTP daemon。 第二個方法是提供對特定目錄的寫入限制。 第三種方法是使用獨立的目錄。 A. 修正過的FTP daemon假如你的網站計畫提供目錄用來做檔上傳,我們建議使用修正過的FTP daemon對檔上傳的目錄做存取的控制。 這是避免使用不需要的寫入區域的最好的方法。 以下有一些建議:1.限定上傳的檔無法再被存取, 如此可由系統管理者檢測後,再放至於適當位置供人下載。 2.限制每個連線的上傳資料大小。 3.依照現有的磁片大小限制資料傳輸的總量。 4.增加登錄記錄以提前發現不當的使用。 若您欲修改FTP daemon, 您應該可以從廠商那裡拿到程式碼, 或者您可從下列地方取得公開的FTP程式原始碼:wuarchive.wustl.edu ~ftp/packages/ wuarchive-ftpdftp.uu.net ~ftp/systems/unix/bsd-sources/libexec/ftpdgatekeeper.dec.com ~ftp/pub/DEC/gwtools/ ftpd.tar.ZCERT/CC 並沒有正式地對所提到的FTP daemon做檢測、評估或背書。 要使用何種FTP daemon 由每個消費者或組織負責決定,而CERT/CC建議每個機關在安裝使用這些程式之前, 能做一個徹底的評估。 B. 使用保護的目錄假如你想要在你的FTP站提供上傳的服務, 而你又沒辦法去修改FTP daemon, 我們就可以使用較複雜的目錄架構來控制存取。 這個方法需要事先規劃並且無法百分之百防止FTP可寫入區域遭不當使用, 不過許多FTP站仍使用此方法。 為了保護上層的目錄(~ftp/incoming), 我們只給匿名的消費者進入目錄的許可權(chmod 751~ftp/incoming)。 這個動作將使得消費者能夠更改目錄位置(cd),但不允許消費者檢視目錄內容。 Ex:drwxr-x--x 4 root system 512 Jun 11 13:29 incoming/在~ftp/incoming使用一些目錄名只讓你允許他們上傳的人知道。 為了要讓別人不易猜到目錄名稱, 我們可以用設定密碼的規則來設定目錄名稱。 請不要使用本文的目錄名稱範例(避免被有心人士發現您的目錄名, 並上傳檔)drwxr-x-wx 10 root system 512 Jun 11 13:54 jAjwUth2/drwxr-x-wx 10 root system 512 Jun 11 13:54 MhaLL-iF/很重要的一點是,一旦目錄名被有意無意的洩漏出來, 那這個方法就沒什麼保護作用。 只要目錄名稱被大部分人知道, 就無法保護那些要限定使用的區域。 假如目錄名被大家所知道,那你就得選擇刪除或更改那些目錄名。 C. 只使用一顆硬碟:假如你想要在你的FTP站提供上傳的服務, 而你又沒辦法去修改FTP daemon,您可以將所有上傳的資料集中在同一個掛(mount)在~ftp/incoming上的檔案系統。 可以的話 ,將一顆單獨的硬碟掛(mount)在~ftp/incoming上。 系統管理者應持續檢視這個目錄(~ftp/incoming), 如此便可知道開放上傳的目錄是否有問題。 限制FTP使用者目錄匿名FTP可以很好地限制使用者只能在規定的目錄範圍內活動,但正式的FTP使用者預設不會受到這種限制,這樣,他可以自由在根目錄、系統目錄、其他使用者的目錄中讀取一些允許其他使用者讀取的檔。 如何才能把指定的使用者象匿名使用者一樣限制在他們自己的目錄中呢? 以下我們以red hat和wu-ftp為例做一介紹。 1 創建一個組,用groupadd命令,一般可以就用ftp組,或者任何組名.-----相關命令: groupadd ftpuser-----相關檔: /etc/group-----相關説明: man groupadd2 創建一個使用者, 如testuser,建立使用者可用adduser命令.如果你已在先前建立了 testuser這個使用者,可以直接編輯/etc/passwd檔,把這個使用者加入到ftpuser這個組中.-----相關命令: adduser testuser -g ftpuser-----相關檔: /etc/passwd-----相關説明: man adduser3 修改/etc/ftpaccess檔,加入guestgroup的定義: guestgroup ftpuser我是這樣改的,加的是最後5行compress yes alltar yes allchmod no anonymousdelete no anonymousoverwrite no anonymousrename no anony mouschmod yes guestdelete yes guestoverwrite yes guestrename yes guestguestgroup ftpuser除了加 guestgroup ftpuser 這行,其他4行也要加上 ,否則使用者登陸後,雖然可以達到使用者不能返回上級目錄的目的,但是卻只能上傳,不能覆蓋、刪除檔!-----相關命令: vi /etc/ftpaccess-----相關檔: /etc/ftpaccess-----相關説明: man ftpaccess,man chroot4 向這個使用者的根目錄下拷貝必要的檔,拷貝ftp server自帶的目錄,把 /home/ftp/下的Bin,lib兩個目錄拷貝到這個使用者的根目錄下,因為一些命令(主要是ls) 需要Lib支援,否則不能列目錄和檔.-----相關命令:cp -rf /home/ftp/lib /home/testuser;cp -rf /home/ftp/bin /home/testuser5 另外可別忘了關掉使用者的telnet權,否則就白做了噢. 怎麼不讓使用者telnet呢?很簡單: 在/etc/shells里加一行/dev/null ,然後可以直接編輯/etc/passwd文件,把使用者的shell設置為/dev/null就可以了.-----相關命令: vi /etc/passwd這一步可以在步驟2 創建一個使用者時就先做好.-----相關命令: adduser testuser -g ftpuser -s / dev/null小經驗:只要把/home/ftp下的bin和lib目錄cp到/etc/skel目錄裡,以後新建使用者都會自動把bin和lib目錄CP到使用者目錄裡,當然你也可以加上public_ html目錄和cgi-bin目錄.經過以上設置,testuser這個使用者的所有FTP動作將限制在他的/home/testuser目錄中。 責任編輯 趙毅 zhaoyi#51cto.com TEL:(010)68476636-8001 給力(0票)動心(0票)廢話(0票)專業(0票)標題党(0票)路過(0票) 原文:安全攻略:如何巧妙設定安全的匿名FTP 返回網路安全首頁