vsftp虛擬用戶登錄配置詳解


一.安裝:
1.安裝Vsftpd服務:
# yum install vsftpd

2.安裝DB4部件包:
這里要特別安裝一個db4的包,用來支持文件數據庫。
# yum install db4-utils

二.系統帳戶
1.建立Vsftpd服務的宿主用戶:
# useradd vsftpd -s /sbin/nologin
默認的Vsftpd的服務宿主用戶是root,但是這不符合安全性的需要。這里建立名字為vsftpd的用戶,用他來作為支持Vsftpd的服務宿主用戶。由

於該用戶僅用來支持Vsftpd服務用,因此沒有許可他登陸系統的必要,並設定他為不能登陸系統的用戶。

2.建立Vsftpd虛擬宿主用戶:
# useradd overlord -s /sbin/nologin
本篇主要是介紹Vsftp的虛擬用戶,虛擬用戶並不是系統用戶,也就是說這些FTP的用戶在系統中是不存在的。他們的總體權限其實是集中寄托在

一個在系統中的某一個用戶身上的,所謂Vsftpd的虛擬宿主用戶,就是這樣一個支持着所有虛擬用戶的宿主用戶。由於他支撐了FTP的所有虛擬的

用戶,那么他本身的權限將會影響着這些虛擬的用戶,因此,處於安全性的考慮,也要非分注意對該用戶的權限的控制,該用戶也絕對沒有登陸

系統的必要,這里也設定他為不能登陸系統的用戶。

三.調整Vsftpd的配置文件:
1.編輯配置文件前先備份
# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.backup2.編輯主配置文件Vsftpd.conf
# vi /etc/vsftpd/vsftpd.conf
這里我將原配置文件的修改完全記錄,凡是修改的地方我都會保留注釋原來的配置。
------------------------------------------------------------------------------
#anonymous_enable=YES
anonymous_enable=NO
#設定不允許匿名訪問

local_enable=YES
#設定本地用戶可以訪問。注意:主要是為虛擬宿主用戶,如果該項目設定為NO那么所有虛擬用戶將無法訪問。

write_enable=YES
#設定可以進行寫操作。

local_umask=022
#設定上傳后文件的權限掩碼。

#anon_upload_enable=YES
anon_upload_enable=NO
#禁止匿名用戶上傳。

#anon_mkdir_write_enable=YES
anon_mkdir_write_enable=NO
#禁止匿名用戶建立目錄。

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

xferlog_enable=YES
#設定開啟日志記錄功能。

connect_from_port_20=YES
#設定端口20進行數據連接。

#chown_uploads=YES
chown_uploads=NO
#設定禁止上傳文件更改宿主。

xferlog_file=/var/log/vsftpd.log
#設定Vsftpd的服務日志保存路徑。注意,該文件默認不存在。必須要手動touch出來,並且由於這里更改了Vsftpd的服務宿主用戶為手動建立的

Vsftpd。必須注意給與該用戶對日志的寫入權限,否則服務將啟動失敗。

xferlog_std_format=YES
設定日志使用標准的記錄格式。

#idle_session_timeout=600
設定空閑連接超時時間,默認值600,單位秒。

#data_connection_timeout=120
設定單次最大連續傳輸時間,默認值120,單位秒。

#nopriv_user=ftpsecure
nopriv_user=vsftpd
#設定支撐Vsftpd服務的宿主用戶為手動建立的Vsftpd用戶。注意,一旦做出更改宿主用戶后,必須注意一起與該服務相關的讀寫文件的讀寫賦權

問題。比如日志文件就必須給與該用戶寫入權限等。

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

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

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

#chroot_list_enable=YES
chroot_list_enable=NO
#禁止用戶登出自己的FTP主目錄。
# (default follows)
#chroot_list_file=/etc/vsftpd/chroot_list

#ls_recurse_enable=YES
ls_recurse_enable=NO
#禁止用戶登陸FTP后使用"ls -R"的命令。該命令會對服務器性能造成巨大開銷。如果該項被允許,那么擋多用戶同時使用該命令時將會對該服務

器造成威脅。

listen=YES
#設定該Vsftpd服務工作在StandAlone模式下。順便展開說明一下,所謂StandAlone模式就是該服務擁有自己的守護進程支持,在ps -A命令下

我們將可用看到vsftpd的守護進程名。如果不想工作在StandAlone模式下,則可以選擇SuperDaemon模式,在該模式下 vsftpd將沒有自己的守

護進程,而是由超級守護進程Xinetd全權代理,與此同時,Vsftp服務的許多功能將得不到實現。

#listen_ipv6=YESpam_service_name=vsftpd
#設定PAM服務下Vsftpd的驗證配置文件名。因此,PAM驗證將參考/etc/pam.d/下的vsftpd文件配置。

userlist_enable=YES
#設定userlist_file中的用戶將不得使用FTP。

tcp_wrappers=YES
#設定支持TCP Wrappers。

#KC: The following entries are added for supporting virtual ftp users.
#以下這些是關於Vsftpd虛擬用戶支持的重要配置項目。默認Vsftpd.conf中不包含這些設定項目,需要自己手動添加配置。

guest_enable=YES
#設定啟用虛擬用戶功能。

guest_username=overlord
#指定虛擬用戶的宿主用戶。

virtual_use_local_privs=YES
#設定虛擬用戶的權限符合他們的宿主用戶。

user_config_dir=/etc/vsftpd/vconf
#設定虛擬用戶個人Vsftp的配置文件存放路徑。也就是說,這個被指定的目錄里,將存放每個Vsftp虛擬用戶個性的配置文件,一個需要注意的地

方就是這些配置文件名必須和虛擬用戶名相同。
-------------------------------------------------------------------------
保存退出。

3.建立Vsftpd的日志文件,並更該屬主為Vsftpd的服務宿主用戶:
# touch /var/log/vsftpd.log
# chown vsftpd.vsftpd /var/log/vsftpd.log

4.建立虛擬用戶配置文件存放路徑:
# mkdir /etc/vsftpd/vconf/


三.制作虛擬用戶數據庫文件
1.先建立虛擬用戶名單文件:
# touch /etc/vsftpd/virtusers
建立了一個虛擬用戶名單文件,這個文件就是來記錄vsftpd虛擬用戶的用戶名和口令的數據文件,放置在/etc/vsftpd/下。

2.編輯虛擬用戶名單文件:
# vi /etc/vsftpd/virtusers
----------------------------
kanecruise
123456
near
123456near
mello
123456mello
----------------------------
編輯這個虛擬用戶名單文件,在其中加入用戶的用戶名和口令信息。格式很簡單:“一行用戶名,一行口令”。

3.生成虛擬用戶數據文件:
# db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

4.察看生成的虛擬用戶數據文件
 # ll /etc/vsftpd/virtusers.db
-rw-r--r-- 1 root root 12288 Sep 16 03:51 /etc/vsftpd/virtusers.db
需要特別注意的是,以后再要添加虛擬用戶的時候,只需要按照“一行用戶名,一行口令”的格式將新用戶名和口令添加進虛擬用戶名單文件。

但是光這樣做還不夠,不會生效的哦!還要再執行一遍“ db_load -T -t hash -f 虛擬用戶名單文件 虛擬用戶數據庫文件.db ”的命令使其生效才

可以!

四.設定PAM驗證文件,並指定虛擬用戶數據庫文件進行讀取
1.察看原來的Vsftp的PAM驗證配置文件:
# cat /etc/pam.d/vsftpd

2.在編輯前做好備份:
# cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.backup

3.編輯Vsftpd的PAM驗證配置文件
# 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則指定了驗證庫函數將到這個指定的數據庫中調用數據進行驗證。
----------------------------------------------------------------
五.虛擬用戶的配置
1.規划好虛擬用戶的主路徑:
# mkdir /opt/vsftp/

2.建立測試用戶的FTP用戶目錄:
# mkdir /opt/vsftp/kanecruise/ /opt/vsftp/mello/ /opt/vsftp/near/

3.建立虛擬用戶配置文件模版:
# cp /etc/vsftpd/vsftpd.conf.backup /etc/vsftpd/vconf/vconf.tmp

4.定制虛擬用戶模版配置文件:
 # vi /etc/vsftpd/vconf/vconf.tmp
--------------------------------
local_root=/opt/vsftp/virtuser
指定虛擬用戶的具體主路徑。
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。
--------------------------------
這里將原vsftpd.conf配置文件經過簡化后保存作為虛擬用戶配置文件的模版。這里將並不需要指定太多的配置內容,主要的框架和限制交由

Vsftpd的主配置文件vsftpd.conf來定義,即虛擬用戶配置文件當中沒有提到的配置項目將參考主配置文件中的設定。而在這里作為虛擬用戶的配

置文件模版只需要留一些和用戶流量控制,訪問方式控制的配置項目就可以了。這里的關鍵項是local_root這個配置,用來指定這個虛擬用戶的

FTP主路徑。

5.更改虛擬用戶的主目錄的屬主為虛擬宿主用戶:
 # chown -R overlord.overlord /opt/vsftp/

6.檢查權限:
 # ll /opt/vsftp/
total 24
drwxr-xr-x 2 overlord overlord 4096 Sep 16 05:14 kanecruise
drwxr-xr-x 2 overlord overlord 4096 Sep 16 05:00 mello
drwxr-xr-x 2 overlord overlord 4096 Sep 16 05:00 near

六.給測試用戶定制:
1.從虛擬用戶模版配置文件復制:
 # cp /etc/vsftpd/vconf/vconf.tmp /etc/vsftpd/vconf/kanecruise

2.針對具體用戶進行定制:
 # vi /etc/vsftpd/vconf/kanecruise
---------------------------------
local_root=/opt/vsftp/kanecruise
anonymous_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
idle_session_timeout=300
data_connection_timeout=90
max_clients=1
max_per_ip=1
local_max_rate=25000
---------------------------------

七.啟動服務:
 # service vsftpd start
Starting vsftpd for vsftpd:                                [ OK ]

八.測試:
1.在虛擬用戶目錄中預先放入文件:
 # touch /opt/vsftp/kanecruise/kc.test

2.從其他機器作為客戶端登陸FTP:
[root@Yum ~]# ftp
ftp> open 192.168.1.22
Connected to 192.168.1.22.

3.測試列單操作
ftp> ls

4.測試上傳操作:
ftp> put

5.測試建立目錄操作:
ftp> mkdir test

6.測試下載操作:
ftp> get kc.test

7.測試超時:
ftp> dir
421 Timeout.(超時有效)
ftp> user
Not connected.

注意:
在/etc/vsftpd/vsftpd.conf中,local_enable的選項必須打開為Yes,使得虛擬用戶的訪問成為可能,否則會出現以下現象:
----------------------------------
 # ftp
ftp> open 192.168.1.22
Connected to 192.168.1.22.
500 OOPS: vsftpd: both local and anonymous access disabled!
----------------------------------
原因:虛擬用戶再豐富,其實也是基於它們的宿主用戶overlord的,如果overlord這個虛擬用戶的宿主被限制住了,那么虛擬用戶也將受到限制。

補充:

500 OOPS:錯誤

有可能是你的vsftpd.con配置文件中有不能被實別的命令,還有一種可能是命令的YES 或 NO 后面有空格。

550 權限錯誤,不能創建目錄和文件

解決方法: 關閉selinux


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM