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:32:03      編輯:關於服務器

匿名FTP的設定 匿名FTP若有正確地設定與管理,將是一項很有價值的服務。這份文件的第一節提供一般 匿名FTP最起始的設定方式。第二節提出當一個網站要在匿名FTP下提供可寫入目錄區的 相關議題與面臨的問題。第三節提供CERT以前的FTP 相關Advisories信息。

以下的設定方式是由過去許多網站累積的經驗與建議組成。我們認為可以讓有個別需求的網站擁有不同設定的選擇。

I.設定匿名FTP

A.FTP daemon

網站必須確定目前使用的是最新版本的FTP daemon。

B.設定匿名FTP的目錄

匿名ftp的根目錄(~ftp)和其子目錄的擁有者不能為ftp帳號,或與ftp相同群組的帳號。這是一般常見的設定問題。假如這些目錄被ftp或與ftp相同群組的帳號所擁有,又沒有做好防止寫入的保護,入侵者便可能在其中增加檔案(例如:.rhosts檔)或修改其它檔案。許多網站允許使用root帳號。讓匿名FTP的根目錄與子目錄的擁有者是root,所屬族群(group)為system,並限定存取權(如chmod 0755),如此只有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的事件回報成員接獲許多使用上傳目錄造成非法傳輸版權軟件或交換帳號與密碼信息的事件。也接獲惡意地將系統檔案灌報造成denial of service問題。

本節在討論利用三種方法來解決這個問題。第一種方法是使用一個修正過的FTP daemon。第二個方法是提供對特定目錄的寫入限制。第三種方法是使用獨立的目錄。

A.修正過的FTP daemon

假如你的網站計劃提供目錄用來做檔案上傳,我們建議使用修正過的FTP daemon對檔案上傳的目錄做存取的控制。這是避免使用不需要的寫入區域的最好的方法。以下有一些建議:

1.限定上傳的檔案無法再被存取, 如此可由系統管理者檢測後,再放至於適當位置供人下載。

2.限制每個聯機的上傳資料大小。

3.依照現有的磁盤大小限制數據傳輸的總量。

4.增加登錄記錄以提前發現不當的使用。

若您欲修改FTP daemon, 您應該可以從廠商那裡拿到程序代碼,或者您可從下列地方取得公開的FTP程序原始碼:

wuarchive.wustl.edu ~ftp/packages/wuarchive-ftpd
ftp.uu.net ~ftp/systems/unix/bsd-sources/libexec/ftpd
gatekeeper.dec.com ~ftp/pub/DEC/gwtools/ftpd.tar.Z

CERT/CC 並沒有正式地對所提到的FTP daemon做檢測、評估或背書。要使用何種FTP daemon由每個使用者或組織負責決定,而CERT/CC建議每個機關在安裝使用這些程序之前,能做一個徹底的評估。

B.使用保護的目錄

假如你想要在你的FTP站提供上傳的服務, 而你又沒辦法去修改FTP daemon, 我們就可以使用較復雜的目錄架構來控制存取。這個方法需要事先規劃並且無法百分之百防止FTP可寫入區域遭不當使用, 不過許多FTP站仍使用此方法。

為了保護上層的目錄(~ftp/incoming),我們只給匿名的使用者進入目錄的權限(chmod751~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), 如此便可知道開放上傳的目錄是否有問題。

III.限制FTP用戶目錄

匿名FTP可以很好地限制用戶只能在規定的目錄范圍內活動,但正式的FTP用戶默認不會受到這種限制,這樣,他可以自由在根目錄、系統目錄、其他用戶的目錄中讀取一些允許其他用戶讀取的文件。

如何才能把指定的用戶象匿名用戶一樣限制在他們自己的目錄中呢?以下我們以red hat和wu-ftp為例做一介紹。

1 創建一個組,用groupadd命令,一般可以就用ftp組,或者任何組名。

-----相關命令:groupadd ftpuser

-----相關文件:/etc/group

-----相關幫助:man groupadd

2 創建一個用戶,如testuser,建立用戶可用adduser命令。如果你已在先前建立了 testuser這個用戶,可以直接編輯/etc/passwd文件,把這個用戶加入到ftpuser這個組中。

-----相關命令:adduser testuser -g ftpuser

-----相關文件:/etc/passwd

-----相關幫助:man adduser

3 修改/etc/ftpaccess文件,加入guestgroup的定義:guestgroup ftpuser我是這樣改的,加的是最後5行:

compress yes all 
tar yes all 
chmod no anonymous 
delete no anonymous 
overwrite no anonymous 
rename no anonymous 
chmod yes guest 
delete yes guest 
overwrite yes guest 
rename yes guest 
guestgroup ftpuser

除了加 guestgroup ftpuser 這行,其他4行也要加上,否則用戶登陸後,雖然可以達到用戶不能返回上級目錄的目的,但是卻只能上傳,不能覆蓋、刪除文件!

-----相關命令:vi /etc/ftpaccess

-----相關文件:/etc/ftpaccess

-----相關幫助:man ftpaccess,man chroot

4 向這個用戶的根目錄下拷貝必要的文件,拷貝ftp server自帶的目錄,把 /home/ftp/下的bin,lib兩個目錄拷貝到這個用戶的根目錄下,因為一些命令(主要是ls)需要Lib支持,否則不能列目錄和文件。

-----相關命令:

cp -rf /home/ftp/lib /home/testuser;cp -rf /home/ftp/bin /home/testuser

5 另外可別忘了關掉用戶的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目錄中。

Copyright © Windows教程網 All Rights Reserved