FTP入門和進階

一、簡介

1、FTP 是什麼

FTP "File Transfer Protocol"(文件傳輸協議) 用來實現文件的傳輸及共享,在RFC 959有說明。

FTP工作在應用層,基於TCP,是C/S 架構。


2、會話連接:

控制連接:端口爲21,和FTP服務器溝通,連接FTP,發送指令[ 客戶端不斷開,持久保持連接]

數據連接:端口爲20[ 只有在主動模式下是20 ], 和FTP服務器進行文件傳輸[ 有數據請求時連接]


3、工作模式

FTP協議中,控制連接均由客戶端發起,而數據連接有兩種工作方式:PORT方式和PASV方式

主動、被動 是基於服務器的角度。


PORT【Active】模式(主動方式)

    FTP客戶端使用隨機端口N(1024以上)連接到FTP服務器的21端口,發送用戶名和密碼登錄。登錄成功後要list列表或者讀取數據時,客戶端發送 PORT命令到FTP服務器,告訴服務器客戶端採用主動模式並開放端口N+1;FTP服務器收到PORT主動模式命令和端口號後,通過服務器的20端口和客戶端開放的端口N+1連接,發送數據。

PASV【Passive】模式(被動方式) 

    FTP客戶端使用隨機端口N(1024以上)連接到FTP服務器的21端口,發送用戶名和密碼登錄。登錄成功後要list列表或者讀取數據時,客戶端發送 PASV命令到FTP服務器,告訴服務器客戶端採用被動模式,FTP服務器收到PASV被動模式命令後,打開一個隨機端口,並通知客戶端,我已經打開N端口,可以進行連接,客戶端連接到服務器的N端口獲取數據。

*N >1024

* ftp 防火牆的配置(生產環境中的C/S端均需設置)


4、數據傳輸模式:(服務器自動)

文本

二進制


二、服務端程序:

windows: serv-U、FileZilla

linux: vsftpd "Very Secure FTP Daemon", 是一個UNIX類操作系統上運行的服務器的名字

支持三種用戶:匿名用戶(默認),系統用戶,虛擬用戶

基於PAM實現用戶認證

/etc/pam.d/*
/lib64/security/*

安裝Vsftpd並配置

yum install vsftpd -y
service vsftp start
chkconfig vsftpd on

生成的安裝文件

/etc/vsftpd/vsftp.conf: 配置文件
/etc/init.d/vsftpd:   服務腳本
/usr/sbin/vsftpd:    主程序
/etc/vsftpd/ftpusers:  黑名單,不受任何配置項的影響,它總是有效
/etc/vsftpd/user_list: 由配置文件中userlist_enable和userlist_deny決定是白名單還是黑名單
/var/log/xferlog:    默認日誌文件

配置文件解析

listen=YES       定義ftp爲獨立守護進程
listen_port=21       設置FTP服務的端口號
#anonymous_enable=YES 是否允許匿名用戶登錄(anonymous/ftp)
local_enable=YES    是否允許本地用戶登錄
write_enable=YES    是否允許本地用戶寫入
local_umask=022       本地用戶上傳文件的默認權限掩碼值
local_root=/var/ftp  設置本地用戶的FPT根目錄(缺省爲用戶的宿主目錄)
local_max_rate       限制本地用戶的最大傳輸速率(0爲無限制),單位爲字節
download_enable=YES  是否允許下載文件(僅限於瀏覽、上傳的FTP服務器可將其設爲NO)
#anon_upload_enable=YES       是否允許匿名用戶上傳文件
#anon_mkdir_write_enable=YES 是否允許匿名用戶創建目錄
#anon_other_write_enable=YES 是否允許匿名用戶有其他寫入權限,如改名、覆蓋、刪除
#anon_root=/var/ftp      匿名用戶根目錄(缺省/var/ftp)
#anon_umask=022             匿名用戶上傳文件的默認權限掩碼值
#anon_world_readable_only=NO 允許匿名用戶瀏覽文件的權限
#anon_max_rate=0             匿名用戶的最大傳輸速率(0爲無限制),單位爲字節
dirmessage_enable=YES      是否顯示目錄說明文件,默認是YES但需要手工創建.message文件
xferlog_enable=YES      是否記錄ftp傳輸過程,即啓用FTP日誌,默認/var/log/xferlog
xferlog_std_format=YES  啓用標準的xferlog日誌格式,若禁用此項,將使用vsftpd自已的日誌格式
connect_from_port_20=YES   主動模式數據傳輸使用20端口
#chown_upload=YES      是否改變上傳文件的屬主
#chown_username=username    將屬主改爲那個用戶
#idle_session_timeout=600  設置控制連接超時時間
#data_connection_timeout=120 設置數據傳輸超時時間
#accept_timeout=60      設置客戶端超時時間
#chroot_list_enable=YES    使用文件將特定用戶鎖定在家目錄
#chroot_list_file=/etc/vsftpd.chroot_list 用戶列表文件
#以上兩項可用下面這個配置代替
chroot_local_user=yes   是否將FTP本地用戶禁錮在宿主目錄中
pam_service_name=vsftpd   設置用於用戶認證的PAM文件位置
userlist_enable=YES    是否啓用user_list用戶列表文件
userlist_deny=YES 是否禁止user_list列表文件中的用戶賬號,啓用後這個文件內的用戶不能登錄ftp
tcp_wrappers=YES      是否啓用tcp_wrappers訪問控制
max_clients=0           最多允許多少個客戶端同進連接FTP服務器(0爲無限制)
max_per_ip=0           對來自相同IP地址的客戶端,最多允許多少個併發連接(0爲無限制)
pasv_enable=YES           打開被動模式連接
pasv_min_port=10000    設置被動模式服務器最小端口號
pasv_max_port=11000    設置被動模式服務器最大端口號
use_localtime=YES     設置FTP使用系統時間
dual_log_enable=YES    當設置爲YES時將會同時產生兩個日誌文件[vsftpd.log\xferlog]
log_ftp_protocol=YES       是否記錄所有ftp命令日誌
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章