在網站的建設中,ftp是一項重要的服務,利用它可以更容易分享有限的軟體資源。linux下有代表性的ftp伺服器軟體是Wu-FTP、ProFTP及 vsftpd。Wu-FTP(Washington University FTP)是由美國華盛頓大學開發的、以效率和穩定性為參考量的FTP軟體。它的功能強大,配置較複雜,由於開發時間較早,應用十分廣泛,也因此成為黑客們主要的攻擊目標。Wu-FTP的早期各級版本不斷出現安全漏洞,系統管理員不得不因安全因素而經常對其進行升級。ProFTP針對Wu-FTP的弱項而開發,除了在安全性方面進行了改進外,還具備設置簡單的特點,並提供了一些Wu-FTP沒有的功能,大大簡化了架設和管理FTP伺服器的工作。
vsftpd 則憑藉在安全性方面的出色表現,被很多大型網站廣為採用。
一 安裝:
# wget # tar zxvf vsftpd-2.3.2.tar.gz# cd vsftpd-2.3.2# make# make install# cp vsftpd.conf /etc
現在已安裝完了,目前兩種運行模式,像其它守護程序一樣,vsftpd提供了standalone和inetd(inetd或xinetd)兩種運行模式。簡單解釋一下,standalone一次性啟動,運行期間一直駐留在內存中,優點是對接入信號反應快,缺點是損耗了一定的系統資源,因此經常應用於對實時反應要求較高的專業FTP伺服器。inetd恰恰相反,由於只在外部連接發送請求時才調用FTP進程,因此不適合應用在同時連接數量較多的系統。此外,inetd模 式不佔用系統資源。除了反應速度和佔用資源兩方面的影響外,vsftpd還提供了一些額外的高級功能,如inetd模式支持per_IP(單一IP)限 制,而standalone模式則更有利於PAM驗證功能的應用。
1.xinetd運行模式
大多數較新的系統採用的是xinetd超級服務守護進程。使用「vi /etc/xinetd.d/vsftpd」 看一下它的內容,如下:
disable = no
socket_type = stream
wait = no
# 這表示設備是激活的,它正在使用標準的TCP Sockets。
如果「/etc/vsftpd.conf」中的有選項為「listen=YES」,註銷它
最後,重啟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.con
f」中的選項為「listen=YES」。
二 配置:
1、vsftpd配置參數詳細整理
#接受匿名用戶
anonymous_enable=YES
#匿名用戶login時不詢問口令
no_anon_password=YES
#匿名用戶主目錄
anon_root=(none)
#接受本地用戶
local_enable=YES
#本地用戶主目錄
local_root=(none)
#如果匿名用戶需要密碼,那麼使用banned_email_file裡面的電子郵件地址的用戶不能登錄
deny_email_enable=YES
#僅在沒有pam驗證版本時有用,是否檢查用戶有一個有效的shell來登錄
check_shell=YES
#若啟用此選項,userlist_deny選項才被啟動
userlist_enable=YES
#若為YES,則userlist_file中的用戶將不能登錄,為NO則只有userlist_file的用戶可以登錄
userlist_deny=NO
#如果和chroot_local_user一起開啟,那麼用戶鎖定的目錄來自/etc/passwd每個用戶指定的目錄(這個不是很清楚,很哪位熟悉的指點一下)
passwd_chroot_enable=NO
#定義匿名登入的使用者名稱。默認值為ftp。
ftp_username=FTP
#################用戶許可權控制###############
#可以上傳(全局控制).
write_enable=YES
#本地用戶上傳文件的umask
local_umask=022
#上傳文件的許可權配合umask使用
#file_open_mode=0666
#匿名用戶可以上傳
anon_upload_enable=NO
#匿名用戶可以建目錄
anon_mkdir_write_enable=NO
匿名用戶其它的寫權利(更改許可權?)
anon_other_write_enable=NO
如果設為YES,匿名登入者會被允許下載可閱讀的檔案。默認值為YES。
anon_world_readable_only=YES
#如果開啟,那麼所有非匿名登陸的用戶名都會被切換成guest_username指定的用戶名
#guest_enable=NO
所有匿名上傳的文件的所屬用戶將會被更改成chown_username
chown_uploads=YES
匿名上傳文件所屬用戶名
chown_username=lightwiter
#如果啟動這項功能,則所有列在chroot_list_file之中的使用者不能更改根目錄
chroot_list_enable=YES
#允許使用」async ABOR」命令,一般不用,容易出問題
async_abor_enable=YES
管控是否可用ASCII 模式上傳。默認值為NO。
ascii_upload_enable=YES
#管控是否可用ASCII 模式下載。默認值為NO。
ascii_download_enable=YES
#這個選項必須指定一個空的數據夾且任何登入者都不能有寫入的許可權,當vsftpd 不需要file system 的許可權時,就會將使用者限制在此數據夾中。默認值為/usr/share/empty
secure_chroot_dir=/usr/share/empty
###################超時設置##################
#空閑連接超時
idle_session_timeout=600
#數據傳輸超時
data_connection_timeout=120
#PAVS請求超時
ACCEPT_TIMEOUT=60
#PROT模式連接超時
connect_timeout=60
################伺服器功能選項###############
#開啟日記功能
xferlog_enable=YES
#使用標準格式
xferlog_std_format=YES
#當xferlog_std_format關閉且本選項開啟時,記錄所有ftp請求和回復,當調試比較有用.
#log_ftp_protocol=NO
#允許使用pasv模式
pasv_enable=YES
#關閉安全檢查,小心呀.
#pasv_promiscuous+NO
#允許使用port模式
#port_enable=YES
#關閉安全檢查
#prot_promiscuous
#開啟tcp_wrappers支持
tcp_wrappers=YES
#定義PAM 所使用的名稱,預設為vsftpd。
pam_service_name=vsftpd
#當伺服器運行於最底層時使用的用戶名
nopriv_user=nobody
#使vsftpd在pasv命令回復時跳轉到指定的IP地址.(伺服器聯接跳轉?)
pasv_address=(none)
#################伺服器性能選項##############
#是否能使用ls -R命令以防止浪費大量的伺服器資源
#ls_recurse_enable=YES
#是否使用單進程模式
#one_process_model
#綁定到listen_port指定的埠,既然都綁定了也就是每時都開著的,就是那個什麼standalone模式
listen=YES
#當使用者登入後使用ls -al 之類的指令查詢該檔案的管理權時,預設會出現擁有者的UID,而不是該檔案擁有者的名稱。若是希望出現擁有者的名稱,則將此功能開啟。
text_userdb_names=NO
#顯示目錄清單時是用本地時間還是GMT時間,可以通過mdtm命令來達到一樣的效果
use_localtime=NO
#測試平台優化
#use_sendfile=YES
################信息類設置################
#login時顯示歡迎信息.如果設置了banner_file則此設置無效
ftpd_banner=歡迎來到湖南三辰Fake-Ta FTP 網站.
#允許為目錄配置顯示信息,顯示每個目錄下面的message_file文件的內容
dirmessage_enable=YES
#顯示會話狀態信息,關!
#setproctitle_enable=YES
############## 文件定義 ##################
#定義不能更改用戶主目錄的文件
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
#定義限制/允許用戶登錄的文件
userlist_file=/etc/vsftpd/vsftpd.user_list
#定義登錄信息文件的位置
banner_file=/etc/vsftpd/banner
#禁止使用的匿名用戶登陸時作為密碼的電子郵件地址
banned_email_file=/etc/vsftpd.banned_emails
#日誌文件位置
xferlog_file=/var/log/vsftpd.log
#目錄信息文件
message_file=.message
############## 目錄定義 #################
#定義用戶配置文件的目錄
user_config_dir=/etc/vsftpd/userconf
#定義本地用戶登陸的根目錄,注意定義根目錄可以是相對路徑也可以是絕對路徑.相對路徑是針對用戶家目錄來說的.
local_root=webdisk #此項設置每個用戶登陸後其根目錄為/home/username/webdisk
#匿名用戶登陸後的根目錄
anon_root=/var/ftp
#############用戶連接選項#################
#可接受的最大client數目
max_clients=100
#每個ip的最大client數目
max_per_ip=5
#使用標準的20埠來連接ftp
connect_from_port_20=YES
#綁定到某個IP,其它IP不能訪問
listen_address=192.168.0.2
#綁定到某個埠
#listen_port=2121
#數據傳輸埠
#ftp_data_port=2020
#pasv連接模式時可以使用port 範圍的上界,0 表示任意。默認值為0。
pasv_max_port=0
#pasv連接模式時可以使用port 範圍的下界,0 表示任意。默認值為0。
pasv_min_port=0
##############數據傳輸選項#################
#匿名用戶的傳輸比率(b/s)
anon_max_rate=51200
#本地用戶的傳輸比率(b/s)
local_max_rate=5120000
########################################
別外,如果要對每個用戶進行單獨的控制,只需要在user_config_dir中建立username文件,內容為數據傳輸和用戶權利裡面設置個人的合適的選項,用戶自定義文件同樣適合用pam支持的虛擬用戶
附: FTP 數字代碼的意義
110 重新啟動標記應答。
120 服務在多久時間內ready。
125 數據鏈路埠開啟,準備傳送。
150 文件狀態正常,開啟數據連接埠。
200 命令執行成功。
202 命令執行失敗。
211 系統狀態或是系統求助響應。
212 目錄的狀態。
213 文件的狀態。
214 求助的訊息。
215 名稱系統類型。
220 新的聯機服務ready。
221 服務的控制連接埠關閉,可以註銷。
225 數據連結開啟,但無傳輸動作。
226 關閉數據連接埠,請求的文件操作成功。
227 進入passive mode。
230 使用者登入。
250 請求的文件操作完成。
257 顯示目前的路徑名稱。
331 用戶名稱正確,需要密碼。
332 登入時需要賬號信息。
350 請求的操作需要進一部的命令。
421 無法提供服務,關閉控制連結。
425 無法開啟數據鏈路。
426 關閉聯機,終止傳輸。
450 請求的操作未執行。
451 命令終止:有本地的錯誤。
452 未執行命令:磁碟空間不足。
500 格式錯誤,無法識別命令。
501 參數語法錯誤。
502 命令執行失敗。
503 命令順序錯誤。
504 命令所接的參數不正確。
530 未登入。
532 儲存文件需要賬戶登入。
550 未執行請求的操作。
551 請求的命令終止,類型未知。
552 請求的文件終止,儲存位溢出。
553 未執行請求的的命令,名稱不正確。