vsftpd 虛擬用戶模式 服務的搭建

vsftp 服務部署html

內容來自下面兩篇文章.web

http://www.cnblogs.com/kuliuheng/p/3209744.html  和 http://www.cnblogs.com/xiongpq/p/3384759.htmlwindows

安裝 yum install vsftpd db4 db4-utils瀏覽器

兩個重點知識須要瞭解:安全

第一 : FTP兩種模式的區別(若是不許備啓動iptables能夠不用瞭解.):服務器

(1)PORT(主動)模式
所謂主動模式,指的是FTP服務器「主動」去鏈接客戶端的數據端口來傳輸數據,其過程具體來講就是:客戶端從一個任意的非特權端口N(N>1024)鏈接到FTP服務器的命令端口(即tcp 21端口),緊接着客戶端開始監聽端口N+1,併發送FTP命令「port N+1」到FTP服務器。而後服務器會從它本身的數據端口(20)「主動」鏈接到客戶端指定的數據端口(N+1),這樣客戶端就能夠和ftp服務器創建數據傳輸通道了。網絡

(圖片來源:https://my.oschina.net/binny/blog/17469)併發

(2)PASV(被動)模式
所謂被動模式,指的是FTP服務器「被動」等待客戶端來鏈接本身的數據端口,其過程具體是:當開啓一個FTP鏈接時,客戶端打開兩個任意的非特權本地端口(N >1024和N+1)。第一個端口鏈接服務器的21端口,但與主動方式的FTP不一樣,客戶端不會提交PORT命令並容許服務器來回連它的數據端口,而是提交PASV命令。這樣作的結果是服務器會開啓一個任意的非特權端口(P > 1024),併發送PORT P命令給客戶端。而後客戶端發起從本地端口N+1到服務器的端口P的鏈接用來傳送數據。(注意此模式下的FTP服務器不須要開啓tcp 20端口了)app

(圖片來源:https://my.oschina.net/binny/blog/17469)tcp

兩種模式的比較:

(1)PORT(主動)模式模式只要開啓服務器的21和20端口,而PASV(被動)模式須要開啓服務器大於1024全部tcp端口和21端口。
(2)從網絡安全的角度來看的話彷佛ftp PORT模式更安全,而ftp PASV更不安全,那麼爲何RFC要在ftp PORT基礎再製定一個ftp PASV模式呢?其實RFC制定ftp PASV模式的主要目的是爲了數據傳輸安全角度出發的,由於ftp port使用固定20端口進行傳輸數據,那麼做爲黑客很容使用sniffer等探嗅器抓取ftp數據,這樣一來經過ftp PORT模式傳輸數據很容易被黑客竊取,所以使用PASV方式來架設ftp server是最安全絕佳方案。因此 FTP工具或者瀏覽器默認使用的都是PASV模式鏈接FTP服務器


第二:防火牆的配置

vsftp 服務使用被動模式的時候 iptables不但要開啓一個21端口也要開起vsftp服務 使用的一個非特權端口(P > 1024),這個端口能夠在vsftpd.conf配置文件中指定。
默認狀況vsftp服務使用的就是被動模式,只不過沒有限制非特權端口的使用範圍,咱們能夠手動配置一個範圍,也能夠設置爲一個固定端口.

若是在在vsftp配置文件中指定了特權端口爲10055, 就須要執行下面兩條語句開啓21和10055端口:
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 10055 -j ACCEPT
 

 

下面記錄了配置vsftp服務比較重要的一些配置:

首先建立用戶密碼文本 ,注意奇行是用戶名,偶行是密碼
vi /etc/vsftpd/vuser_passwd.txt
test
123456
接着,生成虛擬用戶認證的db文件
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vsftpd_login.db

而後,建立新的認證文件/etc/pam.d/vsftpd.vu,寫入下兩句:
auth required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login        #這個地方.db這個後綴是不能寫的
account required /lib64/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_login      #這個地方.db這個後綴是不能寫的

最後,建立虛擬用戶的配置文件所在的目錄
mkdir /etc/vsftpd/vsftpd_user_conf
vi /etc/vsftpd/vsftpd_user_conf/test  //文件名等於vuser_passwd.txt裏面的帳戶名,不然下面設置無效
內容以下
local_root=/web/www        #這個目錄爲個人web站點的根目錄,
anon_world_readable_only=NO
anon_umask=022
write_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_upload_enable=YES

/web/www/ 目錄的權限以下:
[root@e3vZ vsftpd]# ll -d /web/www/
drwxr-xr-x 3 virtual virtual 4096 Apr 20 17:26 /web/www/        

vsftp的主配置文件內容以下

[root@ze3vZ op]# cat /etc/vsftpd/vsftpd.conf | grep -v '#' | grep -v '^$'
anonymous_enable=NO        #禁用匿名用戶訪問
local_enable=YES        #開啓本地用戶訪問, 使用虛擬用戶這個配置必定要開啓.

write_enable=YES
local_umask=022
dirmessage_enable=YES
guest_enable=YES        #啓用虛擬用戶
guest_username=virtual        #制定虛擬用戶對應的本地用戶

xferlog_enable=YES       
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES
pam_service_name=vsftpd.vu        #認證文件名
user_config_dir=/etc/vsftpd/vsftpd_user_conf    #虛擬用戶權限的配置

userlist_enable=YES
tcp_wrappers=YES
pasv_enable=yes        #開啓被動模式, 其實默認就開啓了,這一個配置項有沒有無所謂
pasv_min_port=10055        #被動模式使用的非特權端口的最小值
pasv_max_port=10055        #被動模式使用的非特權端口的最大值,兩個值同樣這樣使用的非特權端口就固定了,端口設置爲一個可能會有衝突不過概率很小.

pasv_enable=yes-------------機器自己沒有外網須要設置這兩個參數
pasv_address=外網ip地址----------機器自己沒有外網須要設置這兩個參數

 

到此vsftp就能夠經過虛擬帳號訪問了.

工做用遇到的異常問題:

經過filezilla鏈接vsftp下載目錄,(裏面有多個目錄和1000+文件),這個時候會有下載失敗和缺失目錄的狀況,.......通過查找和測試把pasv_min_port=10055 和 pasv_max_port=10055 直接的範圍改大一些就Ok了....由於以前只用了一個端口..........

 

################# windows下默認的ftp工具使用被動模式################

好多人文章說windows下自帶的ftp工具不能使用被動模式,實際上是能夠的!!!!!

C:\Windows\System32> ftp
open x.x.x.104
/username/
/password/
literal pasv  #使用被動模式
put file.txt    #put上傳單個文件
mput "C:\xxx\xxx\abc*"  #mput批量上傳文件
quit
相關文章
相關標籤/搜索