天天看點

05.CentOS Vsftpd配置安裝vsftpd使用者通路模式配置

此伺服器中使用 vsftpd 安裝配置 FTP 伺服器。不允許匿名通路;啟用被動傳輸模式,

建立 1 個虛拟使用者 js1,密碼和使用者名相同,根目錄是/opt/ftp,能夠浏覽、上傳和下載下傳文

件,但不能建立目錄,也不能删除目錄和檔案。

1.安裝vsftpd

#安裝vsftpd
yum install -y vsftpd
#啟動vsftpd
service vsftpd start
#設定開機啟動
systemctl enable vsftpd
#設定防火牆
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
           

2.設定selinux

#檢視selinux中開放的ftpd權限
sestatus -b |grep ftpd
***********************************************
ftpd_anon_write                             off
ftpd_connect_all_unreserved                 off
ftpd_connect_db                             off
ftpd_full_access                            off
ftpd_use_cifs                               off
ftpd_use_fusefs                             off
ftpd_use_nfs                                off
ftpd_use_passive_mode                       off
***********************************************
#開放相關權限
setsebool -P ftpd_full_access 1
setsebool -P ftpd_use_passive_mode 1
           

3.編輯配置檔案/etc/vsftpd/vsftpd.conf

vi /etc/vsftpd/vsftpd.conf
	anonymous_enable=NO      //預設YES改為NO,不允許匿名通路
   	connect_from_port_20=NO  //預設YES改為NO,啟用被動傳輸模式
   	pasv_enable=YES 		 //新增
   	chroot_local_user=YES  	 //第100行首#号去除
   	#G到檔案末尾增加
   	guest_enable=YES         //啟用虛拟使用者     
   	guest_username=vftp 	 //虛拟使用者宿主使用者名	
   	#virtual_use_local_privs=YES  	   //此處之前設定,但是設定了之後後面的檔案夾權限設定不起作用,設定虛拟使用者的權限符合他們的宿主使用者
   	user_config_dir=/etc/vsftpd/vconf  //虛拟使用者檔案配置檔案夾
   	allow_writeable_chroot=YES  	//最新版的vsftpd為了安全必須使用者主目錄沒有寫權限,才能登入
           

4.建立使用者檔案,第一行為使用者名,第二行為密碼,不能使用root賬号

#奇數行使用者名,偶數行密碼
vi /etc/vsftpd/vusers
js1
js1
           

5.生成使用者資料

db_load -T -t hash -f /etc/vsftpd/vusers /etc/vsftpd/vusers.db
chmod 600 /etc/vsftpd/vusers.db
           

6.修改/etc/pam.d/vsftpd檔案,注釋掉原有内容中auth和account部分添加下面兩行

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

           

7.建立系統使用者vftp,使用者目錄/opt/ftp

useradd vftp -d /opt/ftp -s /sbin/nologin
chown -R vftp:vftp /opt/ftp
           

8.建立虛拟使用者個人配置檔案

mkdir /opt/ftp
chmod -R 777 /opt/ftp/
#建立虛拟使用者配置檔案夾,檔案夾名對應vsftpd.conf中設定的
mkdir /etc/vsftpd/vconf
vi /etc/vsftpd/vconf/js1
  	local_root=/opt/ftp/js1  			//設定虛拟使用者根目錄
  	write_enable=YES
  	anon_upload_enable=YES 		//開放上傳權限
  	anon_mkdir_write_enable=NO 		//關閉建立目錄權限
  	anon_other_write_enable=NO 		//關閉删除、重命名權限

           

使用者目錄的權限必須是555

chmod 555 /opt/ftp
           

9.重新開機vsftpd

systemctl restart vsftpd
           

++++++++++++++++++++++++++++++

參考:https://blog.csdn.net/aiynmimi/article/details/77012507

安裝vsftpd

yum -y install vsftpd*
           

配置檔案說明

①/etc/vsftpd/vsftpd.conf這個檔案是vsftpd服務的核心配置檔案!

# 是否允許匿名登入FTP伺服器,預設設定為YES允許
# 使用者可使用使用者名ftp或anonymous進行ftp登入,密碼為使用者的E-mail位址。
# 如不允許匿名通路則設定為NO
anonymous_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選項對其進行設定
# 預設值為NO
xferlog_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
           

②/etc/vsftpd/ftpusers這個檔案是禁止使用vsftpd的使用者清單檔案。記錄不允許通路FTP伺服器的使用者名單,管理者可以把一些對系統安全有威脅的使用者賬号記錄在此檔案中,以免使用者從FTP登入後獲得大于上傳下載下傳操作的權利,而對系統造成損壞。

③/etc/vsftpd/user_list這個檔案禁止或允許使用vsftpd的使用者清單檔案。這個檔案中指定的使用者預設情況(即在/etc/vsftpd/vsftpd.conf中設定userlist_deny=YES)下也不能通路FTP伺服器,在設定了userlist_deny=NO時,僅允許user_list中指定的使用者通路FTP伺服器。

傳輸模式配置

開啟被動模式:
connect_from_port_20=NO(預設為YES) #設定是否允許主動模式
pasv_enable=YES(預設為YES) #設定是否允許被動模式
pasv_min_port=50000(default:0(use any port))
pasv_max_port=60000(default:0(use any port))
           
開啟主動模式:
connect_from_port_20=YES
pasv_enable=NO
           

使用者通路模式配置

vsftpd服務通路模式有三種:匿名使用者模式,系統使用者模式和虛拟使用者模式!

一、匿名使用者模式配置

Vsftpd預設以匿名使用者通路,匿名使用者預設通路的FTP伺服器端路徑為:/var/ftp/pub,匿名使用者隻有檢視權限,無法建立、删除、修改。

這種模式下,不需改動配置檔案,直接啟動服務即可通路!

如果想要允許匿名使用者能夠上傳、下載下傳、删除檔案,需修改/etc/vsftpd/vsftpd.conf配置檔案中:

anon_upload_enable=YES               #允許匿名使用者上傳檔案;
anon_mkdir_write_enable=YES          #允許匿名使用者建立目錄;
anon_other_write_enable=YES          #允許匿名使用者其他寫入權限。
           

另外預設Vsftpd匿名使用者有兩個:anonymous、ftp,是以匿名使用者如果需要上傳檔案、删除及修改等權限,需要ftp使用者對/var/ftp/pub目錄有寫入權限,使用如下chown和chmod任意一種即可,設定指令如下:

chown -R ftp pub/
           

二、系統使用者模式配置

匿名模式可以讓任何人使用ftp服務,比較公開!多适用于共享檔案!如果我們想要特定使用者使用,就需要使用系統使用者登入通路!這種模式,需要我們建立不同使用者,linux建立使用者:

useradd 新的使用者名
passwd 新的使用者名
           

然後需要修改配置檔案:

anonymous_enable=NO   #禁止匿名使用者登入
chown_uploads=NO      #設定禁止上傳檔案更改宿主
nopriv_user=ftptest   #設定支撐Vsftpd服務的宿主使用者為建立使用者
ascii_upload_enable=YES
ascii_download_enable=YES #設定支援ASCII模式的上傳和下載下傳功能。
userlist_enable=YES
userlist_deny=NO
           

最後打開/etc/vsftpd/user_list檔案,将建立的使用者添加到最後一行(一個使用者一行)

這種模式下,登入通路的目錄就是/home/建立使用者/

三、虛拟使用者模式配置

系統使用者模式雖然可以控制通路,但是如果使用者過多,就會影響伺服器系統的管理,對伺服器安全造成威脅!而且我們需要的僅僅是可以使用搭建在伺服器的FTP服務而已!

那麼就需要我們設定虛拟使用者進行登入,這也是推薦的方式!這種方式更加安全!

虛拟使用者就是沒有實際的真實系統使用者,而是通過映射到其中一個真實使用者以及設定相應的權限來實作通路驗證,虛拟使用者不能登入Linux系統,進而讓系統更加的安全可靠。

一、首先需要我們建立一個虛拟宿主使用者,也就是上邊說的要映射的真實使用者

useradd virtualhost -s /sbin/nologin
           

這裡設定宿主使用者也不允許登入系統!

二、然後修改配置檔案,下邊我給出我的設定:

vi /etc/vsftpd/vsftpd.conf

anonymous_enable=NO  #設定不允許匿名通路
local_enable=YES  #設定本地使用者可以通路。注意:主要是為虛拟宿主使用者,如果該項目設定為NO那麼所有虛拟使用者将無法通路。
write_enable=YES  #設定可以進行寫操作。
local_umask=022  #設定上傳後檔案的權限掩碼。
anon_upload_enable=NO  #禁止匿名使用者上傳。
anon_mkdir_write_enable=NO  #禁止匿名使用者建立目錄。
dirmessage_enable=YES  #設定開啟目錄智語功能。
xferlog_enable=YES  #設定開啟日志記錄功能。
connect_from_port_20=YES #設定端口20進行資料連接配接。(主動模式)
chown_uploads=NO  #設定禁止上傳檔案更改宿主。
#chown_username=whoever
xferlog_file=/var/log/xferlog
#設定Vsftpd的服務日志儲存路徑。注意,該檔案預設不存在。必須要手動touch出來,并且由于這裡更改了Vsftpd的服務宿主使用者為手動建立的Vsftpd。必須注意給與該使用者對日志的寫入權限,否則服務将啟動失敗。
xferlog_std_format=YES #設定日志使用标準的記錄格式。
#idle_session_timeout=600 #設定空閑連接配接逾時時間,機關為秒,這裡預設。
#data_connection_timeout=120 #設定空閑連接配接逾時時間,機關為秒,這裡預設
#nopriv_user=ftptest

async_abor_enable=YES  #設定支援異步傳輸功能。

ascii_upload_enable=YES
ascii_download_enable=YES  #設定支援ASCII模式的上傳和下載下傳功能。

ftpd_banner=Welcome to blah FTP service.  #設定Vsftpd的登陸智語。

#deny_email_enable=YES
# (default follows)
#banned_email_file=/etc/vsftpd/banned_emails

此處與原文不同
chroot_local_user=YES # 鎖定使用者目錄 

#chroot_list_enable=NO #禁止使用者 清單功能 
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

ls_recurse_enable=NO  #禁止使用者登陸FTP後使用"ls -R"的指令。該指令會對伺服器性能造成巨大開銷。如果該項被允許,那麼擋多使用者同時使用該指令時将會對該伺服器造成威脅。
listen=YES 設定該Vsftpd服務工作在StandAlone模式下
#listen_ipv6=YES

userlist_enable=YES  #設定userlist_file中的使用者将不得使用FTP。
#userlist_deny=NO
tcp_wrappers=YES  #設定支援TCP Wrappers

#下邊是關于虛拟使用者的重要配置
guest_enable=YES  #設定啟用虛拟使用者功能。
guest_username=virtualhost  #指定虛拟使用者的宿主使用者。
virtual_use_local_privs=YES  #設定虛拟使用者的權限符合他們的宿主使用者。
pam_service_name=vsftpd  #設定PAM服務下Vsftpd的驗證配置檔案名。是以,PAM驗證将參考/etc/pam.d/下的vsftpd檔案配置。
user_config_dir=/etc/vsftpd/virtualconf  #設定虛拟使用者個人Vsftp的配置檔案存放路徑。也就是說,這個被指定的目錄裡,将存放每個Vsftp虛拟使用者個性的配置檔案,一個需要注意的地方就是這些配置檔案名必須和虛拟使用者名相同。
           

需要注意的地方:

①Vsftpd的日志檔案不存在,建立Vsftpd的日志檔案,并更該屬主為Vsftpd的服務宿主使用者。

touch /var/log/vsftpd.log
chown virtualhost.virtualhost /var/log/vsftpd.log
           

②建立虛拟使用者配置檔案存放路徑:

mkdir /etc/vsftpd/virtualconf
           

這裡是跟配置檔案中的user_config_dir這一項是對應的!

三、接着制作虛拟使用者資料庫檔案,這裡需要先安裝db4包,用來支援檔案資料庫。

安裝:

yum install db4
           

然後建立虛拟使用者名單檔案:touch /etc/vsftpd/virtusers

建立了一個虛拟使用者名單檔案,這個檔案就是來記錄vsftpd虛拟使用者的使用者名和密碼的資料檔案,我這裡給它命名為virtusers。為了避免檔案的混亂,我把這個名單檔案就放置在/etc/vsftpd/下。

接着編輯這個檔案,将虛拟使用者資訊寫入這個檔案

vi /etc/vsftpd/virtusers  #内容如下
	virtual1
	123456
	virtual2
	123456
           

類似上邊的格式,一行使用者名,一行密碼!

接着生成虛拟使用者資料檔案:

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db
           

四、設定PAM驗證檔案,并指定虛拟使用者資料庫檔案進行讀取

Vsftp的PAM驗證配置檔案:/etc/pam.d/vsftpd

這裡對應的就是核心配置檔案中的pam_service_name,它會去找/etc/pam.d/vsftpd這個檔案!

編輯檔案:

vi /etc/pam.d/vsftpd
#%PAM-1.0
auth    sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib/security/pam_userdb.so     db=/etc/vsftpd/virtusers
           

以上兩條是手動添加的,内容是對虛拟使用者的安全和帳戶權限進行驗證。

這裡的auth是指對使用者的使用者名密碼進行驗證。

這裡的accout是指對使用者的帳戶有哪些權限哪些限制進行驗證。

其後的sufficient表示充分條件,也就是說,一旦在這裡通過了驗證,那麼也就不用經過下面剩下的驗證步驟了。相反,如果沒有通過的話,也不會被系統立即擋之門外,因為sufficient的失敗不決定整個驗證的失敗,意味着使用者還必須将經曆剩下來的驗證稽核。

再後面的/lib/security/pam_userdb.so表示該條稽核将調用pam_userdb.so這個庫函數進行。

最後的db=/etc/vsftpd/virtusers則指定了驗證庫函數将到這個指定的資料庫中調用資料進行驗證。

這裡有一個問題需要注意一下:

如果你的系統是64位的,那麼這裡要改成:

#%PAM-1.0
auth    sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
account sufficient      /lib64/security/pam_userdb.so     db=/etc/vsftpd/virtusers
           

否則會驗證失敗!不能登入!

五、配置虛拟使用者

1.規劃好虛拟使用者的主路徑:

mkdir /opt/vsftp/

2.建立測試使用者的FTP使用者目錄:

mkdir /opt/vsftp/virtual1/  /opt/vsftp/virtual2/
           

3.建立虛拟使用者配置檔案

vi /etc/vsftpd/virtualconf/virtual1
           
local_root=/opt/vsftp/virtuser1
指定虛拟使用者的具體主路徑。
anonymous_enable=NO
設定不允許匿名使用者通路。
write_enable=YES
設定允許寫操作。
local_umask=022
設定上傳檔案權限掩碼。
anon_upload_enable=NO
設定不允許匿名使用者上傳。
anon_mkdir_write_enable=NO
設定不允許匿名使用者建立目錄。
idle_session_timeout=600
設定空閑連接配接逾時時間。
data_connection_timeout=120
設定單次連續傳輸最大時間。
max_clients=10
設定并發用戶端通路個數。
max_per_ip=5
設定單個用戶端的最大線程數,這個配置主要來照顧Flashget、迅雷等多線程下載下傳軟體。
local_max_rate=50000
設定該使用者的最大傳輸速率,機關b/s。
           

4.更改虛拟使用者的主目錄的屬主為虛拟宿主使用者:

chown -R virtualhost:virtualhost /opt/vsftp/
           

5.重新開機 vsftpd

systemctl restart vsftpd 
           

6.防火牆允許ftp

firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
           

7.設定SELINUX

方法一:關閉selinux

setenforce 0  #臨時關閉
#也可編輯配置檔案永久關閉selinux
#vi /etc/selinux/config
#将SELINUX=enforcing改為SELINUX=disabled
#設定後需要重新開機才能生效
           

方法二:selinux中開放ftpd相關權限

#檢視selinux中開放的ftpd權限
sestatus -b |grep ftpd
***********************************************
ftpd_anon_write                             off
ftpd_connect_all_unreserved                 off
ftpd_connect_db                             off
ftpd_full_access                            off
ftpd_use_cifs                               off
ftpd_use_fusefs                             off
ftpd_use_nfs                                off
ftpd_use_passive_mode                       off
***********************************************
#開放相關權限
setsebool -P ftpd_full_access 1
setsebool -P ftpd_use_passive_mode 1
           

繼續閱讀