vsftpd作為一個主打安全的FTP服務器,有很多的選項設置。下面介紹了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf這個配置文件的。本文將提供完整的vsftpd.conf的中文說明。學習本文的內容將有助于你初步了解vsftpd的配置文件,但針對具體情況還需要制定具體的配置方法。
vsftpd的配置文件
/etc/vsftpd/vsftpd.conf | 主配置文件 |
/usr/sbin/vsftpd | Vsftpd的主程序 |
/etc/rc.d/init.d/vsftpd | 啟動腳本 |
/etc/pam.d/vsftpd | PAM認證文件(此文件中file=/etc/vsftpd/ftpusers字段,指明阻止訪問的用戶來自/etc/vsftpd/ftpusers文件中的用戶) |
/etc/vsftpd/ftpusers | 禁止使用vsftpd的用戶列表文件。記錄不允許訪問FTP服務器的用戶名單,管理員可以把一些對系統安全有威脅的用戶賬號記錄在此文件中,以免用戶從FTP登錄后獲得大于上傳下載操作的權利,而對系統造成損壞。(注意:linux-4中此文件在/etc/目錄下) |
/etc/vsftpd/user_list | 禁止或允許使用vsftpd的用戶列表文件。這個文件中指定的用戶缺省情況(即在/etc/vsftpd/vsftpd.conf中設置userlist_deny=YES)下也不能訪問FTP服務器,在設置了userlist_deny=NO時,僅允許user_list中指定的用戶訪問FTP服務器。(注意:linux-4中此文件在/etc/目錄下) |
/var/ftp | 匿名用戶主目錄;本地用戶主目錄為:/home/用戶主目錄,即登錄后進入自己家目錄 |
/var/ftp/pub | 匿名用戶的下載目錄,此目錄需賦權根chmod 1777 pub(1為特殊權限,使上載后無法刪除) |
/etc/logrotate.d/vsftpd.log | Vsftpd的日志文件 |
vsftpd的主配置文件/etc/vsftpd/vsftpd.conf說明(修改前先備份)
和Linux系統中的大多數配置文件一樣,vsftpd的配置文件中以#開始注釋。
# 是否允許匿名登錄FTP服務器,默認設置為YES允許# 用戶可使用用戶名ftp或anonymous進行ftp登錄,口令為用戶的E-mail地址。# 如不允許匿名訪問則設置為NOanonymous_enable=YES# 是否允許本地用戶(即linux系統中的用戶帳號)登錄FTP服務器,默認設置為YES允許# 本地用戶登錄后會進入用戶主目錄,而匿名用戶登錄后進入匿名用戶的下載目錄/var/ftp/pub# 若只允許匿名用戶訪問,前面加上#注釋掉即可阻止本地用戶訪問FTP服務器local_enable=YES# 是否允許本地用戶對FTP服務器文件具有寫權限,默認設置為YES允許write_enable=YES # 掩碼,本地用戶默認掩碼為077# 你可以設置本地用戶的文件掩碼為缺省022,也可根據個人喜好將其設置為其他值#local_umask=022# 是否允許匿名用戶上傳文件,須將全局的write_enable=YES。默認為YES#anon_upload_enable=YES# 是否允許匿名用戶創建新文件夾#anon_mkdir_write_enable=YES # 是否激活目錄歡迎信息功能# 當用戶用CMD模式首次訪問服務器上某個目錄時,FTP服務器將顯示歡迎信息# 默認情況下,歡迎信息是通過該目錄下的.message文件獲得的# 此文件保存自定義的歡迎信息,由用戶自己建立#dirmessage_enable=YES# 是否讓系統自動維護上傳和下載的日志文件# 默認情況該日志文件為/var/log/vsftpd.log,也可以通過下面的xferlog_file選項對其進行設定# 默認值為NOxferlog_enable=YES# Make sure PORT transfer connections originate from port 20 (ftp-data).# 是否設定FTP服務器將啟用FTP數據端口的連接請求# ftp-data數據傳輸,21為連接控制端口connect_from_port_20=YES# 設定是否允許改變上傳文件的屬主,與下面一個設定項配合使用# 注意,不推薦使用root用戶上傳文件#chown_uploads=YES# 設置想要改變的上傳文件的屬主,如果需要,則輸入一個系統用戶名# 可以把上傳的文件都改成root屬主。whoever:任何人#chown_username=whoever# 設定系統維護記錄FTP服務器上傳和下載情況的日志文件# /var/log/vsftpd.log是默認的,也可以另設其它#xferlog_file=/var/log/vsftpd.log# 是否以標準xferlog的格式書寫傳輸日志文件# 默認為/var/log/xferlog,也可以通過xferlog_file選項對其進行設定# 默認值為NO#xferlog_std_format=YES# 以下是附加配置,添加相應的選項將啟用相應的設置# 是否生成兩個相似的日志文件# 默認在/var/log/xferlog和/var/log/vsftpd.log目錄下# 前者是wu_ftpd類型的傳輸日志,可以利用標準日志工具對其進行分析;后者是vsftpd類型的日志#dual_log_enable# 是否將原本輸出到/var/log/vsftpd.log中的日志,輸出到系統日志#syslog_enable# 設置數據傳輸中斷間隔時間,此語句表示空閑的用戶會話中斷時間為600秒# 即當數據傳輸結束后,用戶連接FTP服務器的時間不應超過600秒??梢愿鶕嶋H情況對該值進行修改#idle_session_timeout=600# 設置數據連接超時時間,該語句表示數據連接超時時間為120秒,可根據實際情況對其個修改#data_connection_timeout=120# 運行vsftpd需要的非特權系統用戶,缺省是nobody#nopriv_user=ftpsecure# 是否識別異步ABOR請求。# 如果FTP client會下達“async ABOR”這個指令時,這個設定才需要啟用# 而一般此設定并不安全,所以通常將其取消#async_abor_enable=YES# 是否以ASCII方式傳輸數據。默認情況下,服務器會忽略ASCII方式的請求。# 啟用此選項將允許服務器以ASCII方式傳輸數據# 不過,這樣可能會導致由"SIZE /big/file"方式引起的DoS攻擊#ascii_upload_enable=YES#ascii_download_enable=YES# 登錄FTP服務器時顯示的歡迎信息# 如有需要,可在更改目錄歡迎信息的目錄下創建名為.message的文件,并寫入歡迎信息保存后#ftpd_banner=Welcome to blah FTP service.# 黑名單設置。如果很討厭某些email address,就可以使用此設定來取消他的登錄權限# 可以將某些特殊的email address抵擋住。#deny_email_enable=YES# 當上面的deny_email_enable=YES時,可以利用這個設定項來規定哪些郵件地址不可登錄vsftpd服務器# 此文件需用戶自己創建,一行一個email address即可#banned_email_file=/etc/vsftpd/banned_emails# 用戶登錄FTP服務器后是否具有訪問自己目錄以外的其他文件的權限# 設置為YES時,用戶被鎖定在自己的home目錄中,vsftpd將在下面chroot_list_file選項值的位置尋找chroot_list文件# 必須與下面的設置項配合#chroot_list_enable=YES# 被列入此文件的用戶,在登錄后將不能切換到自己目錄以外的其他目錄# 從而有利于FTP服務器的安全管理和隱私保護。此文件需自己建立#chroot_list_file=/etc/vsftpd/chroot_list# 是否允許遞歸查詢。默認為關閉,以防止遠程用戶造成過量的I/O#ls_recurse_enable=YES# 是否允許監聽。# 如果設置為YES,則vsftpd將以獨立模式運行,由vsftpd自己監聽和處理IPv4端口的連接請求listen=YES# 設定是否支持IPV6。如要同時監聽IPv4和IPv6端口,# 則必須運行兩套vsftpd,采用兩套配置文件# 同時確保其中有一個監聽選項是被注釋掉的#listen_ipv6=YES# 設置PAM外掛模塊提供的認證服務所使用的配置文件名,即/etc/pam.d/vsftpd文件# 此文件中file=/etc/vsftpd/ftpusers字段,說明了PAM模塊能抵擋的帳號內容來自文件/etc/vsftpd/ftpusers中#pam_service_name=vsftpd# 是否允許ftpusers文件中的用戶登錄FTP服務器,默認為NO# 若此項設為YES,則user_list文件中的用戶允許登錄FTP服務器# 而如果同時設置了userlist_deny=YES,則user_list文件中的用戶將不允許登錄FTP服務器,甚至連輸入密碼提示信息都沒有#userlist_enable=YES/NO# 設置是否阻扯user_list文件中的用戶登錄FTP服務器,默認為YES#userlist_deny=YES/NO# 是否使用tcp_wrappers作為主機訪問控制方式。# tcp_wrappers可以實現linux系統中網絡服務的基于主機地址的訪問控制# 在/etc目錄中的hosts.allow和hosts.deny兩個文件用于設置tcp_wrappers的訪問控制# 前者設置允許訪問記錄,后者設置拒絕訪問記錄。# 如想限制某些主機對FTP服務器192.168.57.2的匿名訪問,編緝/etc/hosts.allow文件,如在下面增加兩行命令:# vsftpd:192.168.57.1:DENY 和vsftpd:192.168.57.9:DENY# 表明限制IP為192.168.57.1/192.168.57.9主機訪問IP為192.168.57.2的FTP服務器# 此時FTP服務器雖可以PING通,但無法連接tcp_wrappers=YES
下面的內容將對一些限制和權限控制的選項進行更進一步的說明。
除了上述那些基本設定,我們還可以在vsftpd.conf文件中添加更多的安全選項。其中幾個常用的如下:
限制最大連接數和傳輸速率
在FTP服務器的管理中,無論對本地用戶還是匿名用戶,對于FTP服務器資源的使用都需要進行控控制,避免由于負擔過大造成FTP服務器運行異常,可以添加以下配置項對FTP客戶機使用FTP服務器資源進行控制:
max_client設置項 用于設置FTP服務器所允許的最大客戶端連接數,值為0時表示不限制。例如max_client=100表示FTP服務器的所有客戶端最大連接數不超過100個。
max_per_ip設置項 用于設置對于同一IP地址允許的最大客戶端連接數,值為0時表示不限制。例如max_per_ip=5表示同一IP地址的FTP客戶機與FTP服務器建立的最大連接數不超過5個。
local_max_rate設置項 用于設置本地用戶的最大傳輸速率,單位為B/s,值為0時表示不限制。例如local_max_rate=500000表示FTP服務器的本地用戶最大傳輸速率設置為500KB/s.
anon_max_rate設置項 用于設置匿名用戶的最大傳輸速率,單位為B/s,值為0表示不限制。例如ano_max_rate=200000,表示FTP服務器的匿名用戶最大傳輸速率設置為200KB/s.
指定用戶的權限設置
vsftpd.user_list文件需要與vsftpd.conf文件中的配置項結合來實現對于vsftpd.user_list文件中指定用戶賬號的訪問控制:
(1)設置禁止登錄的用戶賬號
當vsftpd.conf配置文件中包括以下設置時,vsftpd.user_list文件中的用戶賬號被禁止進行FTP登錄:
userlist_enable=YESuserlist_deny=YES
userlist_enable設置項設置使用vsftpd.user_list文件,userlist_deny設置為YES表示vsftpd.user_list文件用于設置禁止的用戶賬號。
(2)設置只允許登錄的用戶賬號
當vsftpd.conf配置文件中包括以下設置時,只有vsftpd.user_list文件中的用戶賬號能夠進行FTP登錄:
userlist_enable=YESuserlist_deny=NO
userlist_enable設置項設置使用vsftpd.user_list文件,userlist _deny設置為NO表示vsftpd.usre_list文件用于設置只允許登錄的用戶賬號,文件中未包括的用戶賬號被禁止FTP登錄。
userlist_deny和userlist_enable選項限制用戶登錄FTP服務器(使用userlist_deny選項和user_list文件一起能有效阻止root,apache,www等系統用戶登錄FTP服務器,從而保證FTP服務器的分級安全性)。以下是兩個選項的具體表現形式和兩種搭配使用方式的效果:
Userlist_enable=YES | Ftpusers中用戶允許訪問 |
Userlist_enable=NO | Ftpusers中用戶禁止訪問 |
Userlist_deny=YES | Ftpusers中用戶禁止訪問(登錄時可以看到密碼輸入提示,但仍無法訪問) |
Userlist_deny=NO | ftpusers中用戶禁止訪問 |
Userlist_enable=YES 并且 | Ftpusers中用戶禁止訪問 |
Userlist_enable=YES 并且 | Ftpusers中用戶禁止訪問 |
修改默認端口
默認FTP服務器端口號是21,出于安全目的,有時需修改默認端口號,修改/etc/vsftpd/vsftpd.conf,添加語句(例):
listen_port=4449
語句指定了修改后FTP服務器的端口號,應盡量大于4000。修改后訪問
#ftp 192.168.57.2 4449
注意這里需加上正確的端口號了,否則不能正常連接。
設置用戶組
有關FTP用戶和用戶組的重要性,我們在之前介紹vsftpd的時候便已經提到過。這里主要是簡單的說明用戶組的技術實現,至于具體如何應用,還是具體需求具體對待。
#mkdir -p /home/try 遞歸創建新目錄#groupadd try 新建組#useradd -g try -d /home/try try1 新建用戶try1并指定家目錄和屬組#useradd -g try -d /home/try try2 新建用戶try2并指定家目錄和屬組#useradd -g try -d /home/try try3 新建用戶try3并指定家目錄和屬組#passwd try1 為新用戶設密碼#passwd try2 為新用戶設密碼#passwd try3 為新用戶設密碼#chown try1 /home/try 設置目錄屬主為用戶try1#chown .try /home/try 設置目錄屬組為組try#chmod 750 /home/try 設置目錄訪問權限try1為讀,寫,執行;try2,try3為讀,執行
由于本地用戶登錄FTP服務器后進入自己主目錄,而try1,try2 try3對主目錄/home/try分配的權限不同,所以通過FTP訪問的權限也不同,try1訪問權限為:上傳,下載,建目錄;try2,try3訪問權限為下載,瀏覽,不能建目錄和上傳。實現了群組中用戶不同訪問級別,加強了對FTP服務器的分級安全管理。
連接超時(本部分內容由李洋提供)
配置空閑的用戶會話的中斷時間:如下配置將在用戶會話空閑5分鐘后被中斷,以釋放服務器的資源
Idle_session_timeout=300
配置空閑的數據連接的中斷時間:如下配置將在數據空閑連接1分鐘后被中斷,同樣也是為了釋放服務器的資源
Data_connection_timeout=60
配置客戶端空閑時的自動中斷和激活連接的時間:如下配置將使客戶端空閑1分鐘后自動中斷連接,并在30秒后自動激活連接
Accept_timeout=60Connect_timeout=30
接下來,我們將對vsftpd的日志進行介紹。
常見的vsftpd日志解決方案
在vsftpd.conf中有如下內容定義了日志的記錄方式:
# 表明FTP服務器記錄上傳下載的情況xferlog_enable=YES # 表明將記錄的上傳下載情況寫在xferlog_file所指定的文件中,即xferlog_file選項指定的文件中xferlog_std_format=YES xferlog_file=/var/log/xferlog # 啟用雙份日志。在用xferlog文件記錄服務器上傳下載情況的同時,# vsftpd_log_file所指定的文件,即/var/log/vsftpd.log也將用來記錄服務器的傳輸情況dual_log_enable=YESvsftpd_log_file=/var/log/vsftpd.log
vsftpd的兩個日志文件分析如下:
/var/log/xferlog
記錄內容舉例
Tue Sep 11 14:59:03 2007 [pid 3460] CONNECT: Client "127.0.0.1"
Tue Sep 11 14:59:24 2007 [pid 3459] [ftp] OK LOGIN;Client "127.0.0.1" ,anon password ”?"
/var/log/xferlog日志文件中數據的分析和參數說明
記錄數據 | 參數名稱 | 參數說明 |
Thu Sep 6 09:07:48 2007 | 當前時間 | 當前服務器本地時間,格式為: DDD MMM dd hh:mm:ss YYY |
7 | 傳輸時間 | 傳送文件所用時間,單位為秒 |
192.168.57.1 | 遠程主機名稱/IP | 遠程主機名稱/IP |
4323279 | 文件大小 | 傳送文件的大小,單位為byte |
/home/student/phpMyadmin- 2.11.0-all-languages.tar.gz | 文件名 | 傳輸文件名,包括路徑 |
b | 傳輸類型 | 傳輸方式的類型,包括兩種: a以ASCII傳輸 b以二進制文件傳輸 |
– | 特殊處理標志 | 特殊處理的標志位,可能的值包括: _ 不做任何特殊處理 C 文件是壓縮格式 U 文件是非壓縮格式 T 文件是tar格式 |
i | 傳輸方向 | 文件傳輸方向,包括兩種: o 從FTP服務器向客戶端傳輸 i 從客戶端向FTP服務器傳輸 |
r | 訪問模式 | 用戶訪問模式,包括: a 匿名用戶 g 來賓用戶 r 真實用戶,即系統中的用戶 |
student | 用戶名 | 用戶名稱 |
ftp | 服務名 | 所使用的服務名稱,一般為FTP |
0 | 認證方式 | 認證方式,包括: 0 無 1 RFC931認證 |
* | 認證用戶id | 認證用戶的id,如果使用*,則表示無法獲得該id |
c | 完成狀態 | 傳輸的狀態: c 表示傳輸已完成 i 表示傳輸示完成 |
最后,介紹常見的FTP命令,以及FTP數字代碼的意義。
常見FTP命令及其功能
FTP命令 | 功能 | FTP命令 | 功能 |
ls | 顯示服務器上的目錄 | ls [remote-dir][local-file] | 顯示遠程目錄remote-dir,并存入本地文件local-file |
get remote-file [local-file] | 從服務器下載指定文件到客戶端 | mget remote-files | 下載多個遠程文件(mget命令允許用通配符下載多個文件) |
put local-file [remote-file] | 從客戶端上傳指定文件到服務器 | mput local-file | 將多個文件上傳至遠程主機(mput命令允許用通配符上傳多個文件) |
open | 連接FTP服務器 | mdelete [remote-file] | 刪除遠程主機文件 |
close | 中斷與遠程服務器的ftp會話(與open對應) | mkdir dir-name | 在遠程主機中創建目錄 |
open host[port] | 建立指定的ftp服務器連接,可指定連接端口 | newer file-name | 如果遠程主機中file-name的修改時間比本地硬盤同名文件的時間更近,則重傳該文件 |
cd directory | 改變服務器的工作目錄 | rename [from][to] | 更改遠程主機的文件名 |
lcd directory | 在客戶端上(本地)改變工作目錄 | pwd | 顯示遠程主機的當前工作目錄 |
bye | 退出FTP命令狀態 | quit | 同bye,退出ftp會話 |
ascii | 設置文件傳輸方式為ASCII模式 | reget remote-file [local-file] | 類似于get,但若local-file存在,則從上次傳輸中斷處續傳 |
binary | 設置文件傳輸方式為二進制模式 | rhelp [cmd-name] | 請求獲得遠程主機的幫助 |
![cmd [args]] | 在本地主機中交互shell后退回到ftp環境,如:!ls *.zip | rstatus [file-name] | 若未指定文件名,則顯示遠程主機的狀態,否則顯示文件狀態 |
accout [password] | 提供登錄遠程系統成功后訪問系統資源所需的密碼 | hash | 每傳輸1024字節,顯示一個hash符號(#) |
append local-file [remote-file] | 將本地文件追加到遠程系統主機,若未指定遠程系統文件名,則使用本地文件名 | restart marker | 從指定的標志marker處,重新開始get或put,如restart 130 |
bye | 退出ftp會話過程 | rmdir dir-name | 刪除遠程主機目錄 |
case | 在使用mget命令時,將遠程主機文件名中的大寫轉為小寫字母 | size file-name | 顯示遠程主機文件大小,如: size idle 7200 |
cd remote-dir | 進入遠程主機目錄 | status | 顯示當前ftp狀態 |
cdup | 進入遠程主機目錄的父目錄 | system | 顯示遠程主機的操作系統 |
delete remote-file | 刪除遠程主機文件 | user user-name [password][account] | 向遠程主機表明自己的身份,需要密碼時,必須輸入密碼,如:user anonymous my@email |
dir [remote-dir][local-file] | 顯示遠程主機目錄,并將結果存入本地文件 | help [cmd] | 顯示ftp內部命令cmd的幫助信息,如help get |
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 未執行請求的的命令,名稱不正確。
新聞熱點
疑難解答
圖片精選