文件服務之二:ftp協議

目錄

FTP連接

FTP連接

命令連接

傳輸命令(客戶端發給服務端的命令),服務端的21/tcp

數據連接

傳輸數據(傳輸數據時建立,數據傳輸完拆除)

數據鏈接的建立方法:主動、被動
主動模式(PORTstyle服務器主動)

服務器端通過20端口主動連接客戶端,客戶端監聽在與服務器端的建立連接的端口+1上。

命令(控制): 客戶端:隨機port — 服務器:tcp21
數據:        客戶端:隨機port — 服務器:tcp20

主動模式要求客戶端和服務器端同時打開並且監聽一個端口以創建連接,主動模式創建連接過程如下:

  1. 客戶端打開一個隨機的端口(端口號大於1024,在這裏,我們稱它爲x),同時一個FTP進程連接至服務器的21號命令端口。此時,該tcp連接的來源地端口爲客戶端指定的隨機端口x,目的地端口(遠程端口)爲服務器上的21號端口;
  2. 客戶端開始監聽端口(x+1),同時向服務器發送一個端口命令(通過服務器的21號命令端口),此命令告訴服務器客戶端正在監聽的端口號並且已準備好從此端口接收數據。這個端口就是我們所知的數據端口;
  3. 服務器打開20號源端口並且創建和客戶端數據端口的連接。此時,來源地的端口爲20,遠程數據(目的地)端口爲(x+1);
  4. 客戶端通過本地的數據端口創建一個和服務器20號端口的連接,然後向服務器發送一個應答,告訴服務器已經創建好連接,可以開始數據傳輸;
被動模式(PASV style

)

命令(控制):客戶端:隨機port — 服務器:tcp21
數據:       客戶端:隨機port — 服務器:隨機port

客戶端發送連接請求,在FTP服務器收到Pasv命令後,隨機打開一個高端端口(端口號大於1024)並且通知客戶端在這個端口上傳送數據的請求,客戶端連接FTP服務器此端口,然後FTP服務器將通過這個端口進行數據的傳送,這個時候FTPserver不再需要建立一個新的和客戶端之間的連接。

 服務器被動模式數據端口示例:
 227 Entering Passive Mode (192,168,175,138,224,59)
 服務器數據端口爲:224*256+59
主動連接與被動連接的優缺點
  1. 主動連接對FTP服務器的管理有利,但對客戶端的管理不利。因爲FTP服務器企圖與客戶端的高位隨機端口建立連接,而這個端口很有可能被客戶端的防火牆阻塞掉。

  2. 被動連接對FTP客戶端的管理有利,但對服務器端的管理不利。因爲客戶端要與服務器端建立兩個連接,其中一個連到一個高位隨機端口,而這個端口很有可能被服務器端的防火牆阻塞掉。

  3. 可通過爲FTP服務器指定一個有限的端口範圍來減小服務器端口暴露的風險。

操作系統上的FTP模式

Linux客戶端默認使用被動模式
Windows客戶端默認使用主動模式

 Linux系統客戶端若要切換主動模式,可使用:
 ftp -A ServerIP Port
防火牆追蹤問題
防火牆追蹤問題
  • 服務器的控制端口是21,數據端口是隨機的,且是客戶端去連接對應的數據端口,所以在做靜態的映射話只開放21端口是不可以的。此時需要做DMZ。大部分網頁瀏覽器要求使用被動模式,然而並不是所有的FTP服務器都支持被動模式。由於FTP連接時的密碼和傳輸的文件內容都使用明文傳輸,極其不安全。且因爲必須開放一個隨機的端口以創建連接,導致客戶端防火牆很難追蹤主動模式下的FTP流量。因此使用被動模式的FTP可以減少許多問題。此外,FTP服務器在需要傳輸較多的小文件時性能不好。
  • 很多防火牆在設置的時候都是不允許接受外部發起的連接,所以許多位於防火牆後或內網的FTP服務器不支持PASV模式,因爲客戶端無法穿過防火牆打開FTP服務器的高端端口;而許多內網的客戶端不能用PORT模式登陸FTP服務器,因爲從服務器的TCP/20無法和內部網絡的客戶端建立一個新的連接,造成無法工作。
FTP服務器和客戶端軟件
服務器和客戶端軟件

FTP服務器

Wu-ftpd,Proftpd,Pureftpd,ServU,IIS
vsftpd:Very Secure FTP Daemon,CentOS默認FTP服務器高速,穩定,下載速度是WU-FTP的兩倍。ftp.redhat.com數據:單機最多可支持15000個併發

客戶端軟件:

ftp,lftp,lftpget,wget,curl

ftp -A ftpserver port      (-A 主動模式 -p 被動模式)

lftp -u username ftpserver

lftp username@ftpserver

lftpget ftp://ftpserver/pub/file

gftp: GUI centos5

filezilla,CuteFtp,FlashFXP,LeapFtp

IE

 ftp://username:password@ftpserver
狀態碼
狀態碼

1XX:信息類 125:數據連接打開

2XX:成功類狀態 200:命令OK 230:登錄成功

3XX:補充類 331:用戶名OK

4XX:客戶端錯誤 425:不能打開數據連接

5XX:服務器錯誤 530:不能登錄

PAM(插入式認證)

PAM(插入式認證)

PAM是由Sun提出的一種認證機制。它通過提供一些動態鏈接庫和一套統一的API,將系統提供的服務和該服務的認證方式分開,使得系統管理員可以靈活地根據需要給不同的服務配置不同的認證方式而無需更改服務程序,同時也便於向系統中添加新的認證手段。

PAM在FTP中的使用
  • pam中的模塊每一種提供一種認證功能或認證檢查功能;配置文件在/etc/pam.d/
  • pam是一種認證框架,自己不需要認證功能,可以幫其他應用程序提供認證服務;爲每一種應用程序提供庫文件;
    -高度模塊化;
  • ftp默認是使用pam進行認證的;
PAM支持的四種管理界面
  1. 認證管理(authenticationmanagement)
    主要是接受用戶名和密碼,進而對該用戶的密碼進行認證,並負責設置用戶的一些祕密信息。
  2. 帳戶管理(accountmanagement)
    主要是檢查帳戶是否被允許登錄系統,帳號是否已經過期,帳號的登錄是否有時間段的限制等等。
  3. 密碼管理(passwordmanagement)
    主要是用來修改用戶的密碼。
  4. 會話管理(sessionmanagement)
    主要是提供對會話的管理和記賬(accounting)。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章