來源: http://www.ascc.sinica.edu.tw/nl/94/2112/02.txt



《資訊安全》

加強VSFTP的安全性

呂紹勳

FTP(File Transfer Protocol)這種傳輸協定在網路資料傳輸的
使用上,已經有相當多年的歷史。今天假設您有資料要傳送到某台
檔案伺服器上,一般來說,我們會使用的方法有以下兩種:

1.使用網路芳鄰的方式,將資料拷貝到該台檔案伺服器。

2.若是該台檔案伺服器提供FTP傳輸協定且具有FTP Server的功能,
那麼我們便可以使用如WS-FTP、Cute-FTP等工具軟體或是直接使
用FTP指令,將檔案上傳至該檔案伺服器上。

若是您有興趣,可利用IE、Netscape、FireFox等網頁瀏覽器連線
至網址『http://www.ccu.edu.tw/center/ycnet/note/seminar/www90.pdf』
去閱讀由古中平先生所撰寫的文章,其文章內容中,比較了FTP與網
路芳鄰在做資料傳輸時之優缺點。筆者將其做了個簡單的歸納,也
就是FTP不論是在穩定性或是傳輸速度上都較網路芳鄰為高。

說了這麼多,相信大家或許有興趣自己架設個FTP伺服器來玩玩。
然而,FTP傳輸協定是不加密的,因此讓其扮演傳輸『重要資料』的
角色,是不適當的,筆者也不建議。但是,若是資料無隱私性且檔
案Size相當地大,筆者認為使用FTP來傳送就非常地恰當。

在開放原始碼的世界裡,Linux可說是最知名的一種作業系統,而
FTP的套件更是有許許多多,以RedHat Linux為例,如果您在安裝系
統的時候,勾選了要安裝FTP的套件,此時VSFTP便會被安裝起來,
讓您的機器可扮演FTP伺服器的角色。

由於本文的主旨乃是介紹如何加強VSFTP的安全性,因此有關於如
何安裝VSFTP套件的方法,筆者就略過不談,若是讀者們有興趣的話,
坊間有許許多多介紹Linux伺服器架設的書籍可供參考;或是可連線
到網址『http://linux.tnc.edu.tw/techdoc/view/ftp/vsftpd』去
觀賞由臥龍小三先生所製作的線上教學,相信必定會對大家有相當
大的幫助。

大體來說,我們想要加強VSFTP伺服器的安全,須達到以下幾個主
要的重點:

1.不允許匿名使用者(anonymous)登入FTP伺服器。因為我們並沒
有必要提供組織裡的FTP伺服器服務給任何未經身份認證程序的使
用者使用。

2.必須限定同一時間,FTP伺服器只允許多少個用戶端連上FTP Server
進行上傳及下載的動作。此種機制是避免讓FTP伺服器負荷過重,
進而影響伺服器的效能及穩定性。

3.不允許權限最大的管理者root連線使用FTP伺服器,並進行上傳及
下載資料的動作。因為一旦root密碼不慎外洩,或是讓有心的駭
客得知,極有可能危及FTP伺服器的安全。

4.最好是將使用者限制在其家目錄下,不允許使用者任意切換到其
他的目錄去下載或瀏覽資料,以維護資料的機密性及安全性。

5.完善的Log記錄。此種機制可以提供管理者瞭解FTP伺服器的使用
情形,若有使用者不當的使用,管理者也可事後補救,以防止相
同情形再次發生。

要符合上述這些安全要點,我們必須修改VSFTP的設定檔案,在這
邊筆者以RedHat Linux 9.0版為例,我們可以利用文字編輯器例如
vi、pico或gedit等來編輯/etc/vsftpd/vsftpd.conf這個檔案,並
將下列幾行設定,修改成如下所顯示的:

#第一點:不允許匿名使用者登入
anonymous_enable=NO
#第二點:允許擁有帳號的使用者登入使用FTP
local_enable=YES
write_enable=YES
local_umask=022
#第三點:使用Log機制,記錄使用者存取FTP伺服器的情形
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
#第四點:讓使用者只能待在自己的家目錄下,不允許使用者任意切
換或瀏覽其他的目錄
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
#第五點:使用PAM機制,阻止root登入FTP SERVER
pam_service_name=vsftpd
#第六點:使用VSFTP內建的機制,阻止root登入FTP SERVER
userlist_enable=YES
#第七點:FTP伺服器在同一時間,只允許讓多少個使用者連線登入
使用,假設允許五個,便填入5。若是都不限制,則刪除此行,或
是填入0都可以,預設值並沒有這行,使用者需自行加入。
max_clients=5
#第八點:利用井字號,註解掉以下各行
#anon_upload_enable=YES
#anon_mkdir_write_enable=YES
#chown_uploads=YES
#chown_username=whoever

在上述第四點中,/etc目錄下預設並沒有vsftpd.chroot_list這
個檔案,所以使用者必須自己新增。此一檔案中,一個使用者名稱
一行,假若有多個使用者,便會產生許多行。假若您並不想將所有
的使用者都侷限在其家目錄下,方法很簡單,就是不要將該使用者
的名稱,加入到/etc/vsftpd.chroot_list這個檔案中即可,但是筆
者還是建議,最好將所有的使用者都限制在其家目錄下。

上述第五點中,因為我們有採用PAM(Pluggable Authentication Modules)
機制來限制root不允許登入使用FTP伺服器,也因此,我們必須檢查
/etc/vsftpd.ftpusers這個檔案中是否包含了root這個使用者,若
是沒有的話,記得要加上去。

而上述第六點中,筆者亦利用VSFTP套件的內建機制來限制root登
入使用FTP伺服器,藉此做到雙重管制。是故,我們也必須檢查
/etc/vsftpd.user_list這個檔案裡是否有root這個使用者名稱,沒
有的話,也要記得加上去。

最後我們再來看看第七點,此一設定值是讓FTP伺服器管制同一時
間裡只允許多少個連線,從而來維持伺服器的穩定性,否則一旦連
線數過多,進而超過了FTP伺服器所能承受的範圍,機器很容易便會
Crash掉,導致服務中斷。

或許有人會問:設定允許多少個使用者同一時間連線至FTP伺服器
是最恰當的呢?其實筆者並沒有最確實的數據,可以提供給大家參
考。因為這一切都要看您伺服器的『硬體配備』以及『是否有其他
的服務』在上面執行,若是有其他的服務在上面執行,我們可以將
連線數稍微設少一點,若是沒有,則可提高一些,端看您的環境而
定。

FTP傳輸協定之所以不容易被取代,皆是因為其傳輸速度快及穩定
性高。但是我們在享受這種便利服務的同時,還是得時時注意伺服
器本身的安全性,如此才能讓管理者放心,而使用者用得開心。
(註:本文作者任職於數學所資訊室)
創作者介紹

創造心理的感動

gisanfu 發表在 痞客邦 PIXNET 留言(0) 人氣()