RHCE_FTP

FTP:

(File Transfer Protocol)文件傳輸協議,應用層的文件共享服務,是互聯網控制文件實現雙向傳輸,同樣ftp也是一個應用程序,不同系統對應的應用程序也不同,但是所遵循的是同一個協議

原理:
假設有在兩臺主機一臺主機遠程連接的服務器爲文件共享服務器本地主機爲客戶端在兩臺主機正常建立連接的情況下可以通過本地主機基於ftp協議訪問服務器的文件並將文件下載到本地。如果同樣服務器允許客戶端寫入可以將本地文件上傳到服務端。
文件傳送(file transfer)和文件訪問(file access)之間的區別在於:前者由FTP提供,後者由如NFS等應用系統提供。 Ftp. Nfs. Samba.

應用程序 架構C/S)
客戶端
服務端

用戶分類
ftpReal帳戶(本地用戶)
這類用戶是指在FTP服務上擁有帳號。當這類用戶登錄FTP服務器的時候,其默認的主目錄就是其帳號命名的目錄。但是,其還可以變更到其他目錄中去。如系統的主目錄等等。
ftpGuest用戶(虛擬用戶)
在FTP服務器中,我們往往會給不同的部門或者某個特定的用戶設置一個帳戶。但是,這個賬戶有個特點,就是其只能夠訪問自己的主目錄。服務器通過這種方式來保障FTP服務上其他文件的安全性。這類帳戶,在Vsftpd軟件中就叫做Guest用戶。擁有這類用戶的帳戶,只能夠訪問其主目錄下的目錄,而不得訪問主目錄以外的文件。
ftpAnonymous(匿名)用戶
這也是我們通常所說的匿名訪問。這類用戶是指在FTP服務器中沒有指定帳戶,但是其仍然可以進行匿名訪問某些公開的資源。
在組建FTP服務器的時候,我們就需要根據用戶的類型,對用戶進行歸類。默認情況下,Vsftpd服務器會把建立的所有帳戶都歸屬爲Real用戶。但是,這往往不符合企業安全的需要。因爲這類用戶不僅可以訪問自己的主目錄,而且,還可以訪問其他用戶的目錄。這就給其他用戶所在的空間帶來一定的安全隱患。所以,企業要根據實際情況,修改用戶所在的類別。

使用方式
端口
1.TCP21 命令
2.TCP20 數據
傳輸方式:
FTP的傳輸有兩種方式:ASCII、二進制。
ASCII傳輸方式
假定用戶正在拷貝的文件包含的簡單ASCII碼文本,如果在遠程機器上運行的不是UNIX,當文件傳輸時ftp通常會自動地調整文件的內容以便於把文件解釋成另外那臺計算機存儲文本文件的格式。
但是常常有這樣的情況,用戶正在傳輸的文件包含的不是文本文件,它們可能是程序,數據庫,字處理文件或者壓縮文件。在拷貝任何非文本文件之前,用binary 命令告訴ftp逐字拷貝。
二進制傳輸模式
在二進制傳輸中,保存文件的位序,以便原始和拷貝的是逐位一一對應的。即使目的地機器上包含位序列的文件是沒意義的。例如,macintosh以二進制方式傳送可執行文件到Windows系統,在對方系統上,此文件不能執行。
如在ASCII方式下傳輸二進制文件,即使不需要也仍會轉譯。這會損壞數據。(ASCII方式一般假設每一字符的第一有效位無意義,因爲ASCII字符組合不使用它。如果傳輸二進制文件,所有的位都是重要的。)

使用模式
1.模式
被動模式/passive/pasv方式
主動模式/standard/port方式,服務器使用20端口連接客戶端
主動模式FTP:
主動模式下,FTP客戶端從任意的非特殊的端口(N > 1023)連入到FTP服務器的命令端口–21
端口。然後客戶端在N+1(N+1 >= 1024)端口監聽,並且通過N+1(N+1 >= 1024)端口發送命令給FTP服務器。服務器會反過來連接用戶本地指定的數據端口,比如20端口。
以服務器端防火牆爲立足點,要支持主動模式FTP需要打開如下交互中使用到的端口:
FTP服務器命令(21)端口接受客戶端任意端口(客戶端初始連接)
FTP服務器命令(21)端口到客戶端端口(>1023)(服務器響應客戶端命令)
FTP服務器數據(20)端口到客戶端端口(>1023)(服務器初始化數據連接到客戶端數據端口)
FTP服務器數據(20)端口接受客戶端端口(>1023)(客戶端發送ACK包到服務器的數據端口)

被動模式FTP
爲了解決服務器發起到客戶的連接的問題,人們開發了一種不同的FTP連接方式。這就是所謂的被
動方式,或者叫做PASV,當客戶端通知服務器它處於被動模式時才啓用。在被動方式FTP中,命令連接和數據連接都由客戶端,這樣就可以解決從服務器到客戶端的數據端口的入方向連接被防火牆過濾掉的問題。當開啓一個FTP連接時,客戶端打開兩個任意的非特權本地端口(N >; 1024和N+1)。第一個端口連接服務器的21端口,但與主動方式的FTP不同,客戶端不會提交PORT命令並允許服務器來回連它的數據端口,而是提交PASV命令。這樣做的結果是服務器會開啓一個任意的非特權端口(P >; 1024),併發送PORT P命令給客戶端。然後客戶端發起從本地端口N+1到服務器的端口P的連接用來傳送數據。
對於服務器端的防火牆來說,必須允許下面的通訊才能支持被動方式的FTP:
FTP服務器命令(21)端口接受客戶端任意端口(客戶端初始連接)
FTP服務器命令(21)端口到客戶端端口(>1023)(服務器響應客戶端命令)
FTP服務器數據端口(>1023)接受客戶端端口(>1023)(客戶端初始化數據連接到服務器指定的任意端口)
FTP服務器數據端口(>1023)到客戶端端口(>1023)(服務器發送ACK響應和數據到客戶端的數據端口)

優缺點:
主動模式對ftp對服務器管理有利,是由FTP服務器主動與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火牆阻塞。而被動模式對客戶端管理有效,它是企圖與服務端的隨機端口建立連接但是這個端口很可能又會被服務端的防火牆所拒絕。
一般做安全措施我們是在被動模式下做,由於主動模式是打開一個端口給客戶端傳送數據,我們做安全措施都是基於端口來做所以不太好做,一般也不建議去做。但是被動模式也是在不停地放端口,所以慢慢的ftp慢慢的在淘汰。
防火牆的意義
鏈接追蹤/RELATED------
自動監聽該端口,並且設置防火牆允許被人來訪問該端口
ftp用戶
匿名用戶 任何人同一個ID身份登錄(不需要用戶驗證)
虛擬用戶 講一個本地用戶身份虛擬爲多個身份(通過虛擬用戶身份驗證登錄)
系統用戶 本地用戶(本地用戶身份驗證登錄)

主配置文件:

vim /etc/vsftpd/vsftpd.conf

從配置文件

vim /var/ftp/pub 

主配置文件詳解

anonymous_enable=YES  是否啓用匿名用戶                            
   宿主目錄(用戶家目錄   /home/redhat)
local_enable=YES                  啓用本地用戶訪問
write_enable=YES 允許寫入(本地用戶要實現上傳就需要快開啓它)
local_umask=022  默認本地用戶上傳普通文件權限 644  755
dirmessage_enable=YES  顯示每個目錄下的文件信息
xferlog_enable=YES  日誌啓用
connect_from_port_20=YES   主動請求的數據端口
chown_uploads=YES   所有匿名用戶上傳的文件所屬用戶將會被改成chown_username
chown_username=whoever  匿名上傳的所屬用戶名是whoever
xferlog_file=/var/log/xferlog   啓用的日誌文件
xferlog_std_format=YES        
idle_session_timeout=600 空閒連接超時  
data_connection_timeout=120  數據連接超時
nopriv_user=ftpsecure   當服務器運行於最底層時使用的用戶名
chroot_list_enable=YES  
  chroot_local_user=YES  所有文件列出用戶, 可以切換到其他目錄
chroot_list_file=/etc/vsftpd/chroot_list  
listen=NO   服務將自己監聽處理listen_ipv6=YES
pam_service_name=vsftpd 設置PAM認證模塊使用名稱預設爲vsftpd
userlist_enable=YES   
tcp_wrappers=YES   服務端和客戶端訪問控制策略(服務器級別的一種防火牆)

FTP的優缺點:
FTP實現的目標(優點):

 1. 促進文件的共享(計算機程序或數據) 
2. 向用戶屏蔽不同主機中各種文件存儲系統(File system)的細節 
3. 可靠和高效的傳輸數據 
4. 支持任意類型的文件傳輸
5.實現用戶認證

缺點:

1. 密碼和文件內容都使用明文傳輸,可能發生竊聽。 
2.  因爲必須開放一個隨機的端口以創建連接,當防火牆存在時,客戶端很難過濾處於主動模式下的FTP流量。這個問題,通過使用被動模式的FTP,得到了很大解決。 
3. 服務器可能會被告知連接一個第三方計算機的保留端口。 
4. 此方式在需要傳輸文件數量很多的小文件時,性能不好
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章