vsftpd 傻瓜版安裝全流程
在網站的建設中,FTP是一項重要的服務,利用它可以更容易分享有限的軟件資源。Linux下有代表性的FTP服務器軟件是Wu-FTP、ProFTP及vsftpd。Wu-FTP(Washington University FTP)是由美國華盛頓大學開發的、以效率和穩定性為參考量的FTP軟件。它的功能強大,配置較復雜,由于開發時間較早,應用十分廣泛,也因此成為黑客們主要的攻擊目標。Wu-FTP的早期各級版本不斷出現安全漏洞,系統管理員不得不因安全因素而經常對其進行升級。ProFTP針對Wu-FTP的弱項而開發,除了在安全性方面進行了改進外,還具備設置簡單的特點,并提供了一些Wu-FTP沒有的功能,大大簡化了架設和管理FTP服務器的工作。vsftpd則憑借在安全性方面的出色表現,被很多大型網站廣為采用。
vsftpd簡介
vsftpd在安全性、高性能及穩定性三個方面有上佳的表現。它提供的主要功能包括虛擬IP設置、虛擬用戶、Standalone、inetd操作模式、強大的單用戶設置能力及帶寬限流等。在安全方面,它從原理上修補了大多數Wu-FTP、ProFTP,乃至BSD-FTP的安裝缺陷,使用安全編碼技術解決了緩沖溢出問題,并能有效避免“globbing”類型的拒絕服務攻擊。目前正在使用vsftpd的官方網站有Red Hat、SuSE、Debian、GNU、GNOME、KDE、Gimp和OpenBSD等。
安裝
本文以1.1.3版本為例進行介紹。
1.構建vsftpd
首先解壓縮包,代碼如下:
代碼:
$ tar xzvf vsftpd-1.1.3.tar.gz
進入安裝目錄cd vsftpd-1.1.3。如果想在以后使用中啟用tcp_wrapper功能,可在編譯前修改“builddefs.h”文件中的語句,將“#undef VSF_BUILD_TCPWRAPPERS”改為“#define VSF_BUILD_TCPWRAPPERS”。tcp_wrapper功能主要應用于IP管理控制,比如可以為單獨的一個IP地址使用特殊優先的FTP配置文件。然后,鍵入“make”生成一份可執行二進制程序代碼。
2.前期準備
vsftpd的默認配置中需要用戶“nobody”。添加該用戶命令如下:
代碼:
$ useradd nobody
vsftpd的默認配置中需要目錄“/usr/share/empty”。添加該目錄的命令如下:
代碼:
$ mkdir /usr/share/empty/
匿名FTP需要用戶“ftp”的存在,并有一個有效的主目錄(不允許用戶“ftp”有擁有權和可寫權)。如沒有此目錄則建立它,命令如下:
代碼:
$ mkdir /var/ftp/
$ useradd -d /var/ftp ftp
3.安裝相關配置文件、執行文件、幫助手冊頁等
運行“make install”,將源代碼、幫助手冊頁等復制到相關路徑。如果采用手工復制,命令如下:
代碼:
$ cp vsftpd /usr/local/sbin/vsftpd
$ cp vsftpd.conf.5 /usr/local/man/man5
$ cp vsftpd.8 /usr/local/man/man8
另外,“make install”不能復制樣例配置文件,建議手工復制,命令如下:
代碼:
$ cp vsftpd.conf /etc
整個安裝過程很簡單,下面來看看如何操縱vsftpd的強大功能,進行vsftpd.conf文件的配置。
#p#
兩種運行模式
像其它守護程序一樣,vsftpd提供了standalone和inetd(inetd或xinetd)兩種運行模式。簡單解釋一下,standalone一次性啟動,運行期間一直駐留在內存中,優點是對接入信號反應快,缺點是損耗了一定的系統資源,因此經常應用于對實時反應要求較高的專業FTP服務器。inetd恰恰相反,由于只在外部連接發送請求時才調用FTP進程,因此不適合應用在同時連接數量較多的系統。此外,inetd模式不占用系統資源。除了反應速度和占用資源兩方面的影響外,vsftpd還提供了一些額外的高級功能,如inetd模式支持per_IP(單一IP)限制,而standalone模式則更有利于PAM驗證功能的應用。
1.inetd運行模式
從某種inetd運行vsftpd可以提供一種不錯的功能——per_IP連接限制。這也是vsftpd 1.1.3版本最新推出并推薦的一種運行模式。實現per_IP連接限制要依賴于vsftpd提供的tcp_wrappers支持。如果使用標準的“inetd”,需編輯/etc/inetd.conf文件,并添加下面一行代碼:
代碼:
$ ftp stream tcp nowait root /usr/sbin/tcpd /usr/local/sbin/vsftpd
確保刪除或注釋掉任何原存的FTP服務語句行。假如沒有安裝tcp_wrappers,或不需要使用它,可去掉“/usr/sbin/tcpd”部分。然后重載配置文件,命令如下:
代碼:
$ kill -SIGHUP 'pidof inetd'
大多數較新的系統采用的是xinetd超級服務守護進程。使用“vi /etc/xinetd.d/vsftpd” 看一下它的內容,如下:
代碼:
disable = no
socket_type = stream
wait = no
# 這表示設備是激活的,它正在使用標準的TCP Sockets。
代碼:
user = root
server = /usr/local/sbin/vsftpd
# 說明服務程序/usr/local/sbin/vsftpd已被用來控制FTP接入請求,并且該程序是作為root身份運行的(可能瞬間擁有過大的特權)。請確信已經把vsftpd二進制執行代碼安裝在了“/usr/local/sbin”目錄下。
代碼:
per_source = 5
instances ?= 200
# 由于安全原因,從一個單一IP地址聯入的最大允許數值是5。當前最大連接總數是200。
代碼:
no_access ?= 192.168.1.3
# 地址192.168.1.3將被拒絕訪問。
代碼:
banner_fail = /etc/vsftpd.busy_banner
# 顯示給用戶當連接被禁止時的文件。不論因任何原因而被拒絕(太多用戶,IP被禁止)。
下面一行是產生的例子:
代碼:
echo "421 Server busy, please try later." > /etc/vsftpd.busy_banner
log_on_success ?+= PID HOST DURATION
log_on_failure ?+= HOST
這將按照時間順序日志所有嘗試連接的IP地址,無論連接成功與否。假如連接啟動了一個FTP服務,其進程ID和使用期也將被載入日志。如果使用的是Red Hat,這個日志信息將出現在/var/log/secure文件中。
最后,重啟xinetd,命令如下:
代碼:
$ /etc/rc.d/init.d/xinetd restart
需要注意的是,“/etc/xinetd.d”目錄中僅能開啟一個FTP服務。
2.standalone模式
standalone模式便于實現PAM驗證功能。進入這種模式首先要關閉xinetd下的vsftpd,設置“disable = yes”,或者注銷掉“/etc/inetd.conf”中相應的行。然后修改“/etc/vsftpd.conf”中的選項為“listen=YES”。
通過上文的詳細介紹和指導,相信大多數人都會了,趕快跟朋友拿去炫耀吧!
【編輯推薦】