1. 程式人生 > >VSftpd安裝和配置FTP虛擬使用者實踐

VSftpd安裝和配置FTP虛擬使用者實踐

VSftpd英文全稱(Very Secure File Transfer Protocol Deamon),正如VSftpd官方宣傳中所說Probably the most secure and fastest FTP server for UNIX-like systems。我相信這是大多數人選擇VSftpd來搭建Linux的FTP伺服器的原因,當然ProFTPD用的人應該也不在少數。本文將以清晰直觀的方式介紹安裝VSftpd以及配置FTP虛擬使用者的過程,希望對大家有幫助。

安裝VSftpd及相關元件

$ yum -y install vsftpd* pam* db4* ftp

修改FTP相關帳戶

  • VSftpd服務的宿主使用者

$ useradd vsftpd -s /sbin/nologin

預設的VSftpd的服務宿主使用者是root,但是這不符合安全性的需要。這裡建立名字為vsftpd的使用者,用他來作為支援VSftpd的服務宿主使用者。由於該使用者僅用來支援VSftpd服務用,因此沒有許可他登陸系統的必要,並設定他為不能登陸系統的使用者。

  • VSftpd的虛擬宿主使用者

$ useradd virtual -d /home/ftpdata/ -s /sbin/nologin
$ chown -R virtual:virtual /home/ftpdata/

VSftpd的虛擬使用者並不是系統使用者,也就是說這些FTP的使用者在系統中是不存在的。他們的總體許可權其實是集中寄託在一個在系統中的某一個使用者身上的,所謂VSftpd的虛擬宿主使用者,就是這樣一個支援著所有虛擬使用者的宿主使用者。由於他支撐了FTP的所有虛擬的使用者,那麼他本身的許可權將會影響著這些虛擬的使用者,因此出於安全性的考慮,也要非常注意對該使用者的許可權的控制,該使用者也絕對沒有登陸系統的必要,這裡也設定他為不能登陸系統的使用者。

vsftpd.conf基本配置

  • 一些基本配置選項說明

anonymous_enable=YES|NO 
控制是否允許匿名使用者登入,YES允許,NO不允許,預設值為YES。 

ftp_username= username
匿名使用者所使用的系統使用者名稱。預設下,此引數在配置檔案中不出現,值為ftp

no_anon_password=YES|NO 
控制匿名使用者登入時是否需要密碼,YES不需要,NO需要。預設值為NO。 

anon_root=path
設定匿名使用者的根目錄,即匿名使用者登入後,被定位到此目錄下。主配置檔案中預設無此項,預設值為/var/ftp/。 

anon_world_readable_only=YES|NO
控制是否只允許匿名使用者下載可閱讀文件。YES,只允許匿名使用者下載可閱讀的檔案。NO,允許匿名使用者瀏覽整個伺服器的檔案系統。預設值為YES。 

anon_upload_enable=YES|NO 
控制是否允許匿名使用者上傳檔案,YES允許,NO不允許,預設是不設值,即為NO。除了這個引數外,匿名使用者要能上傳檔案,還需要兩個條件:一,write_enable引數為YES;二,在檔案系統上,FTP匿名使用者對某個目錄有寫許可權。 
anon_mkdir_write_enable=YES|NO 
控制是否允許匿名使用者建立新目錄,YES允許,NO不允許,預設是不設值,即為NO。當然在檔案系統上,FTP匿名使用者必需對新目錄的上層目錄擁有寫許可權。 

anon_other_write_enable=YES|NO 
控制匿名使用者是否擁有除了上傳和新建目錄之外的其他許可權,如刪除、更名等。YES擁有,NO不擁有,預設值為NO。 

chown_uploads=YES|NO 
是否修改匿名使用者所上傳檔案的所有權。YES,匿名使用者所上傳的檔案的所有權將改為另外一個不同的使用者所有,使用者由chown_username引數指定。此選項預設值為NO。 

chown_username=whoever
指定擁有匿名使用者上傳檔案所有權的使用者

local_enable=YES|NO 
控制vsftpd所在的系統的使用者是否可以登入vsftpd。預設值為YES。 

local_root= 
定義所有本地使用者的根目錄。當本地使用者登入時,將被更換到此目錄下。預設值為無。 

user_config_dir= 
定義使用者個人配置檔案所在的目錄。使用者的個人配置檔案為該目錄下的同名檔案

chroot_list_enable=YES|NO 
鎖定某些使用者在自家目錄中。即當這些使用者登入後,不可以轉到系統的其他目錄,只能在自家目錄(及其子目錄)下。具體的使用者在chroot_list_file引數所指定的檔案中列出。預設值為NO。 

chroot_list_file=/etc/vsftpd/chroot_list 
指出被鎖定在自家目錄中的使用者的列表檔案。檔案格式為一行一使用者。通常該檔案是/etc/vsftpd/chroot_list。此選項預設不設定。 

chroot_local_users=YES|NO 
將本地使用者鎖定在自家目錄中。當此項被啟用時,chroot_list_enable和chroot_local_users引數的作用將發生變化,chroot_list_file所指定檔案中的使用者將不被鎖定在自家目錄。本引數被啟用後,可能帶來安全上的衝突,特別是當用戶擁有上傳、shell訪問等許可權時。因此,只有在確實瞭解的情況下,才可以開啟此引數。預設值為NO。 

passwd_chroot_enable =YES|NO
當此選項啟用時,與chroot_local_user選項配合,chroot()容器的位置可以在每個使用者的基礎上指定。每個使用者的容器來源於/etc/passwd中每個使用者的自家目錄欄位。預設值為NO。

listen_address=ip address 
定義了在主機的哪個IP地址上監聽FTP請求

listen_port=port_value  
指定FTP伺服器監聽的埠號(控制埠),預設值為21。此選項在standalone模式下生效

port_enable=YES|NO
指定資料連線時模式,預設值為YES(PORT模式,NO為PASV模式)

connect_from_port_20=YES|NO
控制以PORT模式進行資料傳輸時是否使用20埠(ftp-data)

ftp_data_port=port number 
設定ftp資料傳輸埠(ftp-data)值。預設值為20。此引數用於PORT FTP模式。 

pasv_enable=YES|NO
YES,允許資料傳輸時使用PASV模式。NO,不允許使用PASV模式。預設值為YES。

pasv_min_port=port number
pasv_max_port=port number
設定在PASV模式下,建立資料傳輸所可以使用port範圍的下界和上界,0 表    示任意。預設值為0。把埠範圍設在比較高的一段範圍內,比如50000-60000,將有助於安全性的提高

pasv_address= ip address
此選項為一個數字IP地址,作為PASV命令的響應。預設值為none,即地址是從呼入的連線套接字(incoming connectd socket)中獲取。

ascii_upload_enable=YES|NO
控制是否允許使用ascii模式上傳檔案,YES允許,NO不允許,預設為NO 

ascii_download_enable=YES|NO
控制是否允許使用ascii模式下載檔案,YES允許,NO不允許,預設為NO。

idle_session_timeout= numerical value
空閒使用者會話的超時時間,若是超出這時間沒有資料的傳送或是指令的輸入,則會強迫斷線。單位為秒,預設值為300。

data_connection_timeout= numerical value
空閒的資料連線的超時時間。預設值為300 秒。

accept_timeout=numerical value 
接受建立聯機的超時設定,單位為秒。預設值為60。

connect_timeout=numerical value
響應PORT方式的資料聯機的超時設定,單位為秒。預設值為60

max_clients=numerical value 
此引數在VSFTPD使用單獨(standalone)模式下有效。此引數定義了FTP伺服器最大的併發連線數,當超過此連線數時,伺服器拒絕客戶端連線。預設值為0,表示不限最大連線數。

max_per_ip=numerical value 
此引數在VSFTPD使用單獨(standalone)模式下有效。此引數定義每個IP地址最大的併發連線數目。超過這個數目將會拒絕連線。此選項的設定將影響到象網際快車這類的多程序下載軟體。預設值為0,表示不限制。 

anon_max_rate=value 
設定匿名使用者的最大資料傳輸速度value,以Bytes/s為單位。預設無。 

local_max_rate=value 
設定使用者的最大資料傳輸速度value,以Bytes/s為單位。預設無。

write_enable=YES
設定允許進行寫操作(上傳、刪除),預設為YES,可選值【yes,no】

local_umask=022
設定許可權掩碼,預設022,對應的檔案上傳許可權644、目錄許可權755

dirmessage_enable=YES
設定開啟目錄標語功能

xferlog_enable=YES
設定開啟日誌記錄功能

xferlog_file=/var/log/ftp/vsftpd.log
設定日誌目錄

xferlog_std_format=YES
設定日誌使用標準的記錄格式

nopriv_user=vsftpd
設定支撐Vsftpd服務的宿主使用者為手動建立的Vsftpd使用者。注意,一旦做出更改宿主使用者後,必須注意一起與該服務相關的讀寫檔案的讀寫賦權問題。比如日誌檔案就必須給與該使用者寫入許可權等。

async_abor_enable=YES
設定支援非同步傳輸功能。

ftpd_banner=This Vsftp server supports virtual users ^_^
設定Vsftpd的登陸標語。

deny_email_enable=YES
可將某些特殊的 email address 抵擋住。如果以anonymous 登入伺服器時,會要求輸入密碼,也就是您的email address, 如果很討厭某些email address ,就可以使用此設定來取消他的登入許可權,但必須與下面的設定項配合

banned_email_file=/etc/vsftpd/banned_emails
當上面的 deny_email_enable=YES 時,可以利用這個設定項來規定那個email address 不可登入vsftpd 伺服器,此檔案需使用者自己建立,一行一個email address 即可!

ls_recurse_enable=YES
是否允許遞迴查詢 , 大型站點的 FTP 伺服器啟用此項可以方便遠端使用者查詢

chroot_local_user=YES

listen=YES
如果設定為 YES , 則 vsftpd 將以獨立模式執行,由vsftpd 自己監聽和處理連線請求

listen_ipv6=YES
設定是否支援IPV6

pam_service_name=vsftpd
設定 PAM 外掛模組提供的認證服務所使用的配置檔名 ,即/etc/pam.d/vsftpd 檔案,此檔案中file=/etc/vsftpd/ftpusers 欄位,說明了PAM 模組能抵擋的帳號內容來自檔案/etc/vsftpd/ftpusers 中

userlist_enable=YES/NO
此選項預設值為NO , 此時ftpusers 檔案中的使用者禁止登入FTP 伺服器;若此項設為YES ,則 user_list 檔案中的使用者允許登入 FTP 伺服器,而如果同時設定了 userlist_deny=YES ,則 user_list 檔案中的使用者將不允許登入FTP 伺服器,甚至連輸入密碼提示資訊都沒有,直接被FTP 伺服器拒絕

userlist_deny=YES/NO
此項預設為YES ,設定是否阻扯user_list 檔案中的使用者登入FTP 伺服器

tcp_wrappers=YES
表明伺服器使用 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 通,但無法連線
  • 關於userlist_enable、userlist_deny的設定,ftpusers和user_list檔案的區別

ftpusers:禁止user_list列表中的使用者訪問FTP
userlist_enable=YES,userlist_deny=YES,禁止user_list列表中的使用者訪FTP
userlist_enable=YES,userlist_deny=NO,只允許user_list列表中的使用者FTP。
userlist_enable=NO,userlist_deny=YES,因設定userlist_enable=NO,忽略user_list檔案,user_list不啟作用
userlist_enable=NO,userlist_deny=NO,因設定userlist_enable=NO,忽略user_list檔案,user_list不啟作用
ftpusers禁止的優先順序更高。假設ftpusers禁止woodie使用者訪問,userlist允許woodie使用者訪問,則在執行時,使用者woodie不能訪問ftp。

  • 配置範例

$ vim /etc/vsftpd/vsftpd.conf

# Example config file /etc/vsftpd/vsftpd.conf
#
# The default compiled in settings are fairly paranoid. This sample file
# loosens things up a bit, to make the ftp daemon more usable.
# Please see vsftpd.conf.5 for all compiled in defaults.
#
# READ THIS: This example file is NOT an exhaustive list of vsftpd options.
# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's
# capabilities.
#
# Allow anonymous FTP? (Beware - allowed by default if you comment this out).
anonymous_enable=NO
#
# Uncomment this to allow local users to log in.
local_enable=YES
#
# Uncomment this to enable any form of FTP write command.
write_enable=YES
#
# Default umask for local users is 077. You may wish to change this to 022,
# if your users expect that (022 is used by most other ftpd's)
local_umask=022
#
# Uncomment this to allow the anonymous FTP user to upload files. This only
# has an effect if the above global write enable is activated. Also, you will
# obviously need to create a directory writable by the FTP user.
#anon_upload_enable=YES
#
# Uncomment this if you want the anonymous FTP user to be able to create
# new directories.
#anon_mkdir_write_enable=YES
#
# Activate directory messages - messages given to remote users when they
# go into a certain directory.
dirmessage_enable=YES
#
# The target log file can be vsftpd_log_file or xferlog_file.
# This depends on setting xferlog_std_format parameter
xferlog_enable=YES
#
# Make sure PORT transfer connections originate from port 20 (ftp-data).
connect_from_port_20=YES
#
# If you want, you can arrange for uploaded anonymous files to be owned by
# a different user. Note! Using "root" for uploaded files is not
# recommended!
#chown_uploads=YES
#chown_username=whoever
#
# The name of log file when xferlog_enable=YES and xferlog_std_format=YES
# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
#xferlog_file=/var/log/xferlog
#
# Switches between logging into vsftpd_log_file and xferlog_file files.
# NO writes to vsftpd_log_file, YES to xferlog_file
xferlog_std_format=YES
#
# You may change the default value for timing out an idle session.
#idle_session_timeout=600
#
# You may change the default value for timing out a data connection.
#data_connection_timeout=120
#
# It is recommended that you define on your system a unique user which the
# ftp server can use as a totally isolated and unprivileged user.
#nopriv_user=ftpsecure
#
# Enable this and the server will recognise asynchronous ABOR requests. Not
# recommended for security (the code is non-trivial). Not enabling it,
# however, may confuse older FTP clients.
#async_abor_enable=YES
#
# By default the server will pretend to allow ASCII mode but in fact ignore
# the request. Turn on the below options to have the server actually do ASCII
# mangling on files when in ASCII mode.
# Beware that on some FTP servers, ASCII support allows a denial of service
# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd
# predicted this attack and has always been safe, reporting the size of the
# raw file.
# ASCII mangling is a horrible feature of the protocol.
#ascii_upload_enable=YES
#ascii_download_enable=YES
#
# You may fully customise the login banner string:
#ftpd_banner=Welcome to blah FTP service.
#
# You may specify a file of disallowed anonymous e-mail addresses. Apparently
# useful for combatting certain DoS attacks.
#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails
#
# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
#chroot_list_enable=YES
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list
#
# You may activate the "-R" option to the builtin ls. This is disabled by
# default to avoid remote users being able to cause excessive I/O on large
# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume
# the presence of the "-R" option, so there is a strong case for enabling it.
#ls_recurse_enable=YES
#
# When "listen" directive is enabled, vsftpd runs in standalone mode and
# listens on IPv4 sockets. This directive cannot be used in conjunction
# with the listen_ipv6 directive.
listen=YES
#listen_port=56880
pasv_min_port=30000
pasv_max_port=35000

#
# This directive enables listening on IPv6 sockets. To listen on IPv4 and IPv6
# sockets, you must run two copies of vsftpd whith two configuration files.
# Make sure, that one of the listen options is commented !!
#listen_ipv6=YES

pam_service_name=vsftpd.vu
#pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES

chroot_local_user=YES
guest_enable=YES
guest_username=virtual

virtual_use_local_privs=YES
#reverse_lookup_enable=NO
user_config_dir=/etc/vsftpd/vsftpd_user_conf

生成vsftpd虛擬使用者資料庫檔案

  • 建立虛擬使用者名稱單檔案

$ vim /etc/vsftpd/ftpuser.txt

ftpupload
12345678

格式很簡單:”一行使用者名稱,一行密碼!”。

  • 生成虛擬使用者資料檔案

db_load命令可以將使用者文字資訊檔案轉換為db資料庫並使用hash加密。

選項-T允許應用程式能夠將文字檔案轉譯載入進資料庫。由於我們之後是將虛擬使用者的資訊以檔案方式儲存在檔案裡的,為了讓Vsftpd這個應用程式能夠通過文字來載入使用者資料,必須要使用這個選項。

指定了選項-T,那麼一定要追加子選項-t ; 子選項-t,追加在在-T選項後,用來指定轉譯載入的資料庫型別。hash就是使用hash碼加密。

-f引數後面接包含使用者名稱和密碼的文字檔案,檔案的內容是:奇數行使用者名稱、偶數行密碼;

$ db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db
$ chmod 600 /etc/vsftpd/vsftpd_login.db
  • 特別注意

如果要刪除掉一個虛擬使用者,先在ftpuser.txt中刪除使用者對應的使用者名稱和密碼,然後刪除vsftpd_login.db,重新執行db_load -T -t hash -f /etc/vsftpd/ftpuser.txt /etc/vsftpd/vsftpd_login.db

如果更改密碼,更改檔案內容後還需重新執行db_load就可以,並重啟ftp服務使其生效。

如果要改變使用者的其它配置,只需修改使用者的配置檔案。

配置PAM驗證檔案

$ vim /etc/pam.d/vsftpd.vu

將以下內容加入到檔案最前面(在後面加入無效)

  • 32位系統

auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
  • 64位系統

auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login

上一步建立的資料庫vsftpd_login在此處被使用,建立的虛擬使用者將採用PAM進行驗證,這是通過/etc/vsftpd/vsftpd.conf檔案中的語句pam_service_name=vsftpd.vu來啟用的。

VSftpd虛擬使用者的獨立配置

$ mkdir -p /etc/vsftpd/vsftpd_user_conf
$ vim /etc/vsftpd/vsftpd_user_conf/ftpupload

anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/ftpdata/

VSftpd伺服器之間的站點對傳

有時候可能需要開啟VSftpd伺服器之間的站點對傳功能,只需在主配置檔案/etc/vsftpd/vsftpd.conf里加入如下引數即可

pasv_promiscuous=YES
port_promiscuous=YES

說明

port_promiscuous=YES|NO
預設值為NO。為YES時,取消PORT安全檢查。該檢查確保外出的資料只能連線到客戶端上。小心開啟此選項。

pasv_promiscuous=YES|NO
預設值為NO。為YES時,將關閉PASV模式的安全檢查。該檢查確保資料連線和控制連線是來自同一個IP地址。小心開啟此選項。此選項唯一合理的用法是存在於由安全隧道方案構成的組織中。

由於取消了資料包的安全檢查,允許資料流向非客戶端,所以站點對傳成功。

配置修改完成後,重啟vsftpd服務生效

$ /etc/init.d/vsftpd restart

VSftpd的一些配置技巧

  • 配置VSftpd伺服器的日誌功能

VSftpd與log有關的選項

vsftpd_log_file
xferlog_enable
xferlog_std_format
xferlog_file
dual_log_enable
syslog_enable
log_ftp_protocol
no_log_lock

這裡主要要到下面幾個引數控制

log_ftp_protocol
如果啟用, 假若選項xferlog_std_format沒有啟用, 所有的FTP請求和應答都會被記錄。 此選項將對除錯很有用。
預設: YES

dual_log_enable
如果啟用, 將生成兩個相似的日誌檔案, 預設在/var/log/xferlog和/var/log/vsftpd.log目錄下。 前者是wu-ftpd型別的傳輸日誌, 可以用於標準工具分析。 後者是vsftpd自己型別的日誌。

xferlog_enable
如果啟用, 將會維護一個日誌檔案, 用於詳細記錄上載和下載. 預設情況下, 這個日誌檔案是/var/log/vsftpd.log。 但是也可以通過配置檔案中的vsftpd_log_file選項來指定。
預設: NO(但是在示例設定中啟用了這個選項)

xferlog_std_format
如果啟用, 傳輸日誌檔案將以標準xferlog的格式書寫, 如同wu-ftpd一樣. 這可以用於重新使用傳輸統計生成器. 然而, 預設格式更注重可讀性。 此格式的日誌檔案預設為/var/log/xferlog, 但是您也可以通過xferlog_file選項來設定。
預設: NO

xferlog_file
xferlog 日誌檔案所在位置,預設為/var/log/xferlog。

vsftpd_log_file
指定VSFTPd日誌檔案位置,預設為/var/log/vsftpd.log,xferlog_enable的預設值為no(VSFTPd提供的配置檔案模版將其值改為了yes),dual_log_enable的預設值也為no,就是說預設情況下VSFTPd是不記錄日誌的。我們也可以將日誌資訊寫入系統日誌/var/log/messages中,使用如下引數:syslog_enable=yes/no

配置VSftpd傳輸日誌

將xferlog_file前面的#號對掉,也就是把VSftpd的Log功能開啟,這樣我們就能在/var/log目錄下檢視xferlog。這是VSftpd日誌功能,這對於我們來說是極為重要的。

##################log settings###################
# Activate logging of uploads/downloads.
xferlog_enable=YES
#
# You may override where the log file goes if you like. The default is shown
# below.
xferlog_file=/var/log/xferlog
#
#log in two files /var/log/xferlog and /var/log/vsftpd.log
dual_log_enable=YES
vsftpd_log_file=/var/log/vsftpd.log
#log time setting
use_localtime=YES
#
###################end of log####################
  • 配置VSftpd限制同一個IP地址的同時連線數量

VSftpd對同一個IP地址的同時連線數量預設是沒有限制的。在VSftpd中的max_per_ip選項是0,代表沒有限制。

如果你想限制同一個IP地址的同時連線數量,你需要修改/etc/vsftpd/vsftpd.conf檔案。以下是一個例子

pam_service_name=vsftpd
userlist_enable=YES
#enable for standalone mode
listen=YES
tcp_wrappers=YES
max_per_ip=2

在這個例子中,每一個主機最多隻能有兩個連線。修改vsftpd.conf之後,你需要重啟VSftpd來讓它生效。

一旦達到最大連線數,同一個主機下對這個FTP伺服器的其他連線會出現以下的錯誤資訊。

421 There are too many connections from your internet address.
  • VSftpd與TCP_wrapper結合限制使用者的IP地址登入

通過/etc/hosts.allow定義允許的來源地址,/etc/hosts.deny定義拒絕的來源地址。

配置示例

/etc/hosts.allow

#
# hosts.allow This file describes the names of the hosts which are
# allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
vsftpd: 123.103.47.0/255.255.255.0 218.240.63.0/255.255.255.0 59.46.172.0/255.255.255.0 10.0.0.0/255.0.0.0 60.2.80.0/255.255.255.0 218.249.230.0/255.255.255.0 160.10.0.0/255.255.0.0 218.246.69.0/255.255.255.0 125.35.3.0/255.255.255.0 : allow

/etc/hosts.deny

#
# hosts.deny This file describes the names of the hosts which are
# *not* allowed to use the local INET services, as decided
# by the ‘/usr/sbin/tcpd’ server.
#
# The portmap line is redundant, but it is left to remind you that
# the new secure portmap uses hosts.deny and hosts.allow. In particular
# you should know that NFS uses portmap!
vsftpd : ALL : DENY

將tcp_wrappers=yes新增至/etc/vsftpd/vsftpd.conf

$ vi /etc/vsftpd/vsftpd.conf
tcp_wrappers=YES

重新啟動VSftpd

$ service vsftpd restart
Shutting down vsftpd: OK ]
Starting vsftpd for vsftpd: OK ]

故障排除

如果配置中出現問題,請從以下幾方面檢查

  • 檔案許可權和檔案屬主問題
  • 防火牆iptables沒開放相關的埠
  • SELinux導致的許可權問題,建議先關閉SELinux再配置VSftp,之後再開啟到permissive模式。或者執行這條命令:setsebool -P ftp_home_dir=1

參考文件

文:Mike

文章出處:運維之美(微信公眾號ID:Hi-Linux)