①vsftpd 是以一般身份啟動服務,是以對于 Linux 系統的使用權限較低,對于Linux 系統的危害就相對的減低了。此外, vsftpd 亦利用 chroot() 這個函式進行改換根目錄的動作,使得系統工具不會被vsftpd 這支服務所誤用;
②任何需要具有較高執行權限的 vsftpd 指令均以一支特殊的上層程式( parent process ) 所控制 ,該上層程式享有的較高執行權限功能已經被限制的相當的低,并以不影響Linux 本身的系統為準;
③所有來自 clients 端,想要使用這支上層程式所提供的較高執行權限之vsftpd 指令的需求,均被視為『不可信任的要求』來處理,必需要經過相當程度的身份确認後,方可利用該上層程式的功能。例如chown(), Login 的要求等等動作;
④此外,上面提到的上層程式中,依然使用 chroot() 的功能來限制使用者的執行權限。
ubuntu系統如下 sudo apt-get install vsftpd
centos系統如下 yum -y install vsftpd
這裡我就安裝RPM包了,其它的安裝方法就不提了,,不懂的可以查閱相關資料
首先檢視是否安裝了vsftpd,如果安裝,可以直接使用
如果沒安裝,使用RPM包進行安裝
<a href="http://blog.51cto.com/attachment/201209/203229634.png" target="_blank"></a>
建立ftp使用者及其主目錄,若本來就存在ftp使用者,則不需要建立 我的已經建好了,具體建立方法如下:
建立vsftp需要的特殊目錄:
Mkdir -p /usr/share/empty
如果想要移除vsftp 時,可以這樣做
rm /usr/sbin/vsftpd 或是 rm /usr/local/sbin/vsftpd
rm /usr/local/man/man5/vsftpd.conf.5
rm /usr/local/man/man8/vsftpd.8
rm /etc/xinetd.d/vsftpd
rm /etc/vsftpd.conf 或是rm /etc/vsftpd/vsftpd.conf
因為剛剛安裝隻有安裝這幾個檔案檔案而已,是以,vsftpd 真的是挺安全的說!
啟動和關閉vsftpd
啟動vsftp 可以采用3中方式:inetd、xinetd和standalone(獨立)工作模式,由于目前使用的xinetd擴充了inetd,它比inetd更加高效和實用,是以主要以xinetd以及standalone兩種啟動方式
編輯vsftpd啟動配置檔案 将disable = yes 該為 disable = no
<a href="http://blog.51cto.com/attachment/201209/203603361.png" target="_blank"></a>
<a href="http://blog.51cto.com/attachment/201209/203640412.png" target="_blank"></a>
确認xinetd.d沒有問題 重新開機vsftpd
還沒有配置/etc/vsftpd/vsftpd.conf 是以無法登陸還
Vsftpd的包結構 (企業版的RedHat 不同的版本可能有所不通)
/etc/vsftpd/vsftpd.conf 主配置檔案
/etc/vsftpd/banner_emails 該檔案與匿名登入有關
/usr/sbin/vsftpd/ 這是vsftpd的主要執行檔案
/etc/vsftpd/user_list 檔案中指定的使用者是否可以通路ftp伺服器由vsftpd.conf檔案中userlist_deny的取值決定的
/etc/vsftpd/ftpusers 設定不允許登陸的使用者
/etc/pam.d/vsftpd 利用pam子產品來進行身份确認的動作 看/etc/pam.d/vsftpd的内容即可知道是否使用/etc/vsftpd.ftpusers或/etc/vsftpd/ftpusers
<a href="http://blog.51cto.com/attachment/201209/203713131.png" target="_blank"></a>
帶紅色下劃線的就是限制使用者無法使用vsftpd的主配置檔案
Vsftpd.conf設定說明
connect_from_port_20=YES(NO)
該設定項是在啟動主動連接配接的端口20
listen_port=21
使用的 vsftpd指令通道的 port number 設定,如果您想要使用非正規的 ftpport,在這個設定項目修改。
dirmessage_enable=YES(NO)
當使用者進入某個目錄時,會顯示該目錄需要注意的内容,顯示的檔案是.message ,當然也可以使用下面的設定項目來修該。
message_file=.message
當 dirmessage_enable=YES時,可以設定這個項目來讓 vsftpd尋找該檔案來顯示資訊,也可以設定其他檔案名
listen=YES(NO)
若設定為YES 表示 vsftpd 是以 standalone 的方式來啟動的!
pasv_enable=YES(NO)
啟動被動式連接配接(passivemode),一定要設定為 YES !
use_localtime=YES(NO)
是否使用主機的時間?!預設使用GMT 時間(格林威治),會比中原標準時間晚8小時,一般來說,建議設定為 YES 吧!
write_enable=YES(NO)
是否允許使用者具有寫入的權限?!這包括删除與修改等功能喔!
connect_timeout=60
機關是秒(s),如果client 嘗試連接配接我們的 vsftpd 指令通道超過 60 秒,則不等待,強制斷線咯。
accept_timeout=60
當使用者以被動式PASV 來進行資料傳輸時,如果主機啟用 passive port并等待 client超過60 秒,那麼就給他強制斷線!可以修改數值 60 。
data_connection_timeout=300
如果 client與 Server 間的資料傳送在 300 秒内都無法傳送成功,那 Client的聯機就會被我們的 vsftpd 強制切斷!
idle_session_timeout=300
如果使用者在300 秒内都沒有任何指令動作,強制離線!
max_clients=0
如果 vsftpd是以 stand alone 方式啟動的,那麼這個設定項目可以設定同一時間,最多有多少client 可以同時連上 vsftpd 哩!?
max_per_ip=0
與上面 max_clients類似,這裡是同一個 IP 同一時間可允許多少聯機?
pasv_max_port=0
pasv_min_port=0
上面兩個是與passive mode 使用的端口号有關,如果您想要使用65400 到65410 這 11 個 port 來進行被動式資料的連接配接,可以這樣設定pasv_max_port=65410以及 pasv_min_port=65400
ftpd_banner=一些文字說明
當使用者無法順利連上我們的主機,例如聯機數量已經超過max_clients
的設定了,那麼client 的畫面就會顯示『一些文字說明』的字樣,你可以根據需要修改
guest_enable=YES(NO)
若這個值設定為YES 時,那麼任何非 anonymous 登入的賬号,均會被假設成為guest (通路者)。
local_enable=YES(NO)
這個設定值必須要為YES 時,在 /etc/passwd 内的賬号才能以實體使用者的方式登入我們的vsftpd 主機!
local_max_rate=0
實體使用者的傳輸速度限制,機關為bytes/second, 0 為不限制。
chroot_local_user=YES(NO)
将使用者限制在自己的家目錄之内(chroot)!這個設定在vsftpd當中預設是NO,因為有底下兩個設定項!是以不需要啟動他!
chroot_list_enable=YES(NO)
是否啟用将某些實體使用者限制在他們的家目錄内?!預設是NO ,不過,如果您想要讓某些使用者無法離開他們的家目錄時,可以考慮将這個設定為YES ,并且規劃下個設定值
chroot_list_file=/etc/vsftpd.chroot_list
如果 chroot_list_enable=YES那麼就可以設定這個項目了!他裡面可以規定
那一個實體使用者會被限制在自己的家目錄内而無法離開!(chroot) 一行一個賬号即可!
userlist_deny=YES(NO)
若此設定值為YES 時,則當使用者賬号被列入到某個檔案時,在該檔案内的使用者将無法登入vsftpd 伺服器!該檔案檔案名與下列設定項目有關。
userlist_file=/etc/vsftpd/user_list
若上面 userlist_deny=YES時,在這個檔案内的賬号都無法使用vsftpd !
關于匿名者登入的設定值
anonymous_enable=YES(NO)
設定為允許anonymous 登入我們的 vsftpd 主機!預設是 YES ,下面的所有相關設定都需要将這個設定為anonymous_enable=YES 之後才會生效!
anon_world_readable_only=YES(NO)
僅允許 anonymous具有下載下傳可讀檔案的權限,預設是 YES。
anon_other_write_enable=YES(NO)
是否允許anonymous 具有寫入的權限?預設是 NO!如果要設定為 YES,那麼開放給anonymous 寫入的目錄亦需要調整權限,讓 vsftpd 的 PID擁有者可以寫入才行!
anon_mkdir_write_enable=YES(NO)
是否讓anonymous 具有建立目錄的權限?預設值是 NO!如果要設定為 YES,那麼 anony_other_write_enable必須設定為 YES !
anon_upload_enable=YES(NO)
是否讓anonymous 具有上傳資料的功能,預設是 NO,如果要設定為 YES ,則 anon_other_write_enable=YES必須設定。
deny_email_enable=YES(NO)
拒絕某些特殊的email address ,不讓那些 anonymous 登入!如果以 anonymous登入主機時,就會要求輸入您的email address ,如果你很讨厭某些 email address ,就可以使用這個設定來将他取消登入的權限!需與下個設定項目配合:
banned_email_file=/etc/vsftpd.banned_emails
如果 deny_email_enable=YES時,可以利用這個設定項目來規定那個email address不可登入我們的 vsftpd 喔!在上面設定的檔案内,一行輸入一個email address 即可!
no_anon_password=YES(NO)
當設定為YES 時,表示 anonymous 将會略過密碼檢驗步驟,而直接進入vsftpd 伺服器内喔!是以一般預設都是 NO 的!
anon_max_rate=0
這個設定值後面接的數值機關為bytes/秒 ,限制 anonymous 的傳輸速度,如果是 0則不限制(由最大頻寬所限制),如果您想讓 anonymous 僅有30 KB/s 的速度,可以設定『anon_max_rate=30000』
anon_umask=077
限制 anonymous的權限!如果是 077 則 anonymous 傳送過來的檔案權限會是-rw------- !
關于系統安全的設定值:
ascii_download_enable=YES(NO)
如果設定為YES ,那麼 client 就可以使用 ASCII 格式下載下傳檔案。一般來說,由于啟動了這個設定項目可能會導緻DoS 的攻擊,是以預設是NO。
ascii_upload_enable=YES(NO)
與上一個設定類似的,隻是這個設定針對上傳而言!預設是NO。
async_abor_enable=YES(NO)
如果您的FTP client 會下達 "async ABOR" 這個指令時,這個設定才需要啟用一般來說,由于這個設定并不安全,是以通常都是将他取消的!
check_shell=YES(NO)
如果您想讓擁有任何特殊的shell 的使用者(在 /etc/passwd 的 shell 字段)可以使用vsftpd 的話,這個設定可以設定為 NO !
one_process_model=YES(NO)
這個設定項目比較危險一點~當設定為YES 時,表示每個建立的聯機都會擁有一支process 在負責,可以增加 vsftpd 的效能。不過,除非您的系統比較安全,而且硬體配備比較高,否則容易耗盡系統資源!一般建議設定為NO 的。
tcp_wrappers=YES(NO)
我們都習慣支援TCP Wrappers !是以設定為 YES!
xferlog_enable=YES(NO)
當設定為YES 時,使用者上傳與下載下傳檔案都會被紀錄起來。記錄檔案與下一個設定項目有關:
xferlog_file=/var/log/vsftpd.log
這是日志的檔案名如果上一個xferlog_enable=YES 的話,這裡就可以設定。
xferlog_std_format=YES(NO)
是否設定為wu ftp 相同的日志檔案格式。預設為 NO ,因為日志檔案比較容易讀!不過,如果您有使用wu ftp 登入檔案的分析軟體,這裡才需要設定為 YES
nopriv_user=nobody
vsftpd預設以 nobody 作為此服務執行者的權限。因為 nobody 的權限相當的低,是以即使被入侵,入侵者僅能取得nobody 的權限!
pam_service_name=vsftpd
上面的這些都是很常見的vsftpd的設定參數,還有很多沒有列出來,你可以使用man 5 vsftpd.conf 查閱 。。。不過,以上這些參數基本上已經夠我們設定了。
本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/993028