史上最詳細的vsftpd設定檔詳解_FTP伺服器

來源:互聯網
上載者:User

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秒。可以根據實際情況對該值進行修改#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中使用者允許訪問
User_list中使用者允許訪問

Userlist_enable=NO

Ftpusers中使用者禁止訪問
User_list中使用者允許訪問

Userlist_deny=YES

Ftpusers中使用者禁止訪問(登入時可以看到密碼輸入提示,但仍無法訪問)
user_list 中使用者禁止訪問

Userlist_deny=NO

ftpusers中使用者禁止訪問
user_list中使用者允許訪問

Userlist_enable=YES 並且
Userlist_deny=YES

Ftpusers中使用者禁止訪問
User_list中使用者禁止訪問(登入時不會出現密碼提示,直接被伺服器拒絕)

Userlist_enable=YES 並且
Userlist_deny=NO

Ftpusers中使用者禁止訪問
User_list中使用者允許訪問
 

修改預設連接埠

預設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 未執行請求的的命令,名稱不正確。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.