FTP是僅基於TCP的服務,不支持UDP,與眾不同的是FTP使用2個端口,一個是數據端口和一個命令端口【也可叫做控制端口】。通常來說這兩個端口是21命令端口和20的數據端口,FTP分主動FTP和被動FTP。
主動FTP:
客戶端從一個任意的非特權端口N(N>1024)連接到FTP服務器的命令端口,也就是21端口。然後客戶端開始監聽端口N+1,並發送FTP命令“port N+1”到FTP服務器。接著服務器會從它自己的數據端口20連接到客戶端制定的數據端口(N+1).
被動FTP【PASV】
在被動方式的FTP中,命令連接和數據連接都是由客戶端主動發起。當打開一個FTP連接時,客戶端打開兩個任意的非特權本地端口N ,N+1(N>1024)第一個端口連接服務器的21端口,但與主動方式FTP方式不同的是客戶端不會提交POST命令並允許服務器來回連它的數據端口,而是提交PASV命令。這樣做的結果是服務器開啟一個任意的非特權端口P(P>1024)並發送POST P命令給客戶端,然後由客戶端發起從本地端口N+1到服務器的端口P的連接來傳送數據。
配置文件:
主配置文件:vsftpd.conf
鎖定用戶家目錄的用戶列表文件:chroot_list
限制用戶列表文件:user_list
FTP用戶列表文件:ftpusers
VSFTP參數詳解:
#是否使用服務器本地時間YES為是 NO為否
use_localtime=YES
#用戶是否有寫權限
write_enable=YES
#用戶是否可以下載設置為YES即允許用戶下載
download_enable=YES
是否顯示目錄下的.message文件
dirmessage_enable=YES
#用戶可以使用的ftp命令cmds_allowed=
ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RMD,RNFR,RNTO,SIZE,STOR,TYPE,
USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,DELE
#是否開啟上傳下載日志
xferlog_enable=YES
#日志文件路徑
xferlog_file=/var/log/vsftpd.log
設置用戶空閒會話中斷時間
#idle_session_timeout=600
設置空閒的數據連接中斷時間
#data_connection_timeout=60
#服務器最大用戶連接數
max_clients=50
#每個ip最大連接數
max_per_ip=5
是否允許用戶ASCII模式上傳、下載
ascii_upload_enable=NO
ascii_download_enable=NO
connect_from_port_20=YES
是否允許被動連接
pasv_enable=YES
設置被動連接的最小端口
pasv_min_port=65400
設置被動連接的最大端口
pasv_max_port=65420
設置PAM認證服務器的配置,該文件放在/etc/pam.d目錄下,
pam_service_name=vsftpd
使用/etc/hosts.allow和/etc/hosts.deny兩個文件實現訪問控制
tcp_wrappers=YES
監聽端口
listen_port=21
是否監聽
listen=YES
#是否開啟匿名用戶
anonymous_enable=NO
#是否開啟本地用戶
local_enable=YES
#文件上傳後的權限 022相當於 -rw-r--r—
local_umask=022
#是否將用戶鎖定在用戶家目錄下
chroot_list_enable=YES
#需要鎖定家目錄的用戶列表文件
chroot_list_file=/etc/vsftpd/chroot_list
#是否使用用戶限制列表
userlist_deny=YES
#用戶限制列表文件
userlist_file=/etc/vsftpd/user_list
#文件傳輸最大速度
local_max_rate=900000