天天看點

Linux基礎服務之FTP

1. 什麼是FTP

  FTP簡稱檔案傳輸協定,可以與遠端計算機之間進行檔案共享。該協定采用TCP協定,FTP的服務端口号為21,資料端口為20。通常情況下,傳輸檔案的使用者需要經過認證後才能登陸網站通路遠端伺服器的檔案。大多數的FTP伺服器往往會提供一個GUEST的公共賬戶來允許沒有遠端伺服器的使用者可以通路該FTP伺服器。工作過程如下:

  1)用戶端向伺服器發出連接配接請求,同時用戶端系統打開一個大于1024的端口等候伺服器連接配接(比如1028端口)。

  2)FTP伺服器21端口偵聽到該請求,那麼用戶端1028會和伺服器21端口之間建立一個FTP會話連接配接。

  3)在需要傳輸資料時,用戶端會打開一個大于1024的端口(比如1027端口)去連接配接伺服器的20端口,且會在這兩個端口之間進行資料傳輸,直到資料傳輸結束後兩個端口才會自動關閉。

  4)當用戶端和伺服器斷開後,用戶端上之前動态配置設定的端口會自動釋放。

2. FTP的功能特性

 (1)不同等級的使用者身份

  FTP伺服器在預設情況下,可以根據使用者登入的情況分為3種不同的身份,分别是主題賬号(Real User)、虛拟使用者(Guest)、匿名登陸者(Anonymous),下面對這3種身份進行簡單介紹:

  1)實體賬号:實體賬号也稱本地賬号,即使用者在FTP伺服器上擁有自己的賬号,然後用真實使用者名和密碼進行登入。

  2)虛拟使用者:是指使用者在FTP伺服器上擁有自己的賬号,且這個賬号隻能用來進行檔案傳輸服務。

  3)匿名登陸者:如果使用者在FTP伺服器上沒有賬号,則可以以anonymous為使用者名,以自己的郵件位址為密碼進行登入。

  三者的差別在于:實體賬号成功登入FTP伺服器後,他的登入目錄為使用者自己的目錄,此目錄在系統建立時有系統自動建立,實體使用者可以通路整個目錄,對系統有很大的威脅,是以盡量避免使用實體使用者通路FTP伺服器;而虛拟使用者與實體使用者不同之處在于虛拟使用者在登入伺服器後,不能通路除使用者主目錄以外的内容;匿名者登入成功後,登入目錄為匿名FTP伺服器的根目錄/var/ftp,為了減輕FTP伺服器的負荷,應該關閉匿名賬号的上傳功能。

  (2)指令記錄與日志檔案記錄

  FTP可以利用系統syslogd的守護程序來進行資料的記錄,記錄的資料包括使用者曾經下達過的指令與使用者傳輸的資料(傳輸時間、檔案大小等),是以可以在/var/log裡找到各項日志資訊。

  (3)限制或解除使用者預設目錄

  為了避免使用者在系統中随意操作,是以需要将使用者的工作範圍局限在使用者的預設目錄下。FTP可以限制僅能在自己的預設目錄中活動。而且登入FTP後,現實的根目錄就是使用者預設目錄的内容,這種環境稱之為changeroot,簡稱chroot,是改變根目錄的意思。如此一來,就不能通路系統下的其他目錄,是以在chroot的環境下,會比較安全一些。

3. FTP的傳輸模式

  FTP的傳輸模式有兩種:一種是FTP預設的主動連接配接模式(Active),另一種是被動傳輸模式。檔案控制協定(TCP)是要通過三次握手才能建立連接配接,那麼FTP伺服器呢?FTP伺服器需要通過兩個連接配接,但是相對于TCP要麻煩一些,這兩個連接配接分别是:指令通道和資料流通道,那麼他們之間是一種什麼樣的關系呢?下面對主動連接配接模式、被動連接配接模式進行詳細講解。

    *主動連接配接模式:用戶端從任意一個非特權端口N(N>1024)向FTP伺服器的指令端口(TCP21端口)發出連接配接。緊接着用戶端端口N+1開始監聽,并發送FTP指令端口“N+1”到FTP伺服器。最後伺服器接到指令後會從它自己的資料端口(20)連接配接到用戶端指定的資料端口(N+1),這樣用戶端就可以和FTP伺服器建立資料傳輸通道了。

    *被動連接配接模式:在被動方式FTP中,指令連接配接和資料連接配接都由用戶端發起。當開啟一個FTP連接配接時,用戶端打開兩個任意的非特權本地端口(N>1024和N+1)。第一個端口連接配接伺服器的21端口,但與主動方式的FTP不同,用戶端不會送出端口指令并允許伺服器來連接配接它的資料端口,而是送出PASA指令。這樣的結果是伺服器會開啟一個任意的非特權端口(P>1024),并發送端口P指令給用戶端。然後用戶端發起從本地端口N+1到伺服器端口P的連接配接用來傳輸資料。FTP端口模式隻要開啟伺服器的21和20端口,而FTP PASV需要開啟伺服器大于1024所有端口和21端口。

  綜上所述,主動連接配接模式是FTP伺服器主動連接配接用戶端,被動連接配接模式是FTP伺服器接收用戶端的主動連接配接。

4. FTP服務安裝與使用

  Linux中最常見的FTP軟體為vsftpd,可以運作在多種作業系統上,還支援很多其他的FTP伺服器不支援的特性。如:

    *非常高的安全性需求

    *帶寬限制

    *良好的可伸縮性

    *建立虛拟使用者的可能性

    *支援IPv6

    *中等偏上的性能

    *配置設定虛拟IP的可能性

    *高速

      *不在依賴xinetd服務

      *允許匿名或本地使用者通路,匿名通路不需額外的RPM包隻需vsftpd就可以了

  (1)Linux上安裝vsftpd服務

  yum安裝vsftpd,指令如下:

Linux基礎服務之FTP

安裝完成後會有以下提示:

Linux基礎服務之FTP

檢視vsftpd安裝檔案路徑:

Linux基礎服務之FTP

可以看到vsftpd的配置檔案路勁和幫助文檔存放路徑。

 (2)vsftpd相關配置檔案

*/etc/vsftpd/vsftpd.conf     設定檔案共享的路徑

*/etc/pam.d/vsftpd_user.list   主要用來作身份認證用,阻止某些使用者帳号的功能

  (3)vsftpd兩個控制連接配接檔案

  一個是預設的使用者控制檔案/etc/vsftpd/ftpusers,所有使用者名出現在此檔案中的使用者就不可以通過FTP登入到系統。

  另一個使用者控制檔案是/etc/vsftpd/user_list,當在/etc/vsftpd/vsftpd.conf檔案中定義了userlist_enable=YES,它才會生效。當定義user_deny=NO,隻有在use_list檔案中定義的使用者可以使用FTP。

  FTP分為兩類,一類是端口FTP;另一類是PASV FTP,分析如下:

  *端口FTP

  這是一般形式的FTP,先會建立指令通道,預設值是端口21,也就是和端口21建立通信,通過此下達指令。接着,由FTP server端會建立資料傳輸通道,上傳下載下傳檔案預設端口是20,也就是和端口20建立通信,并通過端口20進行資料的傳輸。

  *PASV FTP

  同樣首先建立指令通道,預設端口為21。接着會由用戶端做出資料傳輸的請求,包括本端資料傳輸端口的數字。

  這兩者的差別為:端口FTP當中的資料傳輸端口由FTP server指定,而PASV FTP中的資料傳輸端口是由FTP用戶端決定。通常使用PASV FTP,是在有防火牆的環境之下,透過用戶端與服務端的溝通,決定資料傳輸的端口。

  (4)用戶端進行通路

  用戶端下載下傳FTP用戶端程式ftp,使用指令ftp 192.168.149.128進行通路。