古詩詞大全網 - 團隊口號 - 如何判斷ftp當前是主動模式還是被動模式設置?

如何判斷ftp當前是主動模式還是被動模式設置?

FTP只通過TCP連接,沒有FTP的UDP組件。FTP與其他服務的不同之處在於它使用兩個端口,壹個數據端口和壹個命令端口(或控制端口)。通常,端口21是命令端口,端口20是數據端口。當混合了主動/被動模式的概念時,數據端口可能不是20。

主動模式FTP:

在主動模式下,FTP客戶端從任何非專用端口下載數據(n >;1023)連接到FTP服務器的命令端口——端口21。然後,客戶端在N+1(N+1 >:= 1024)端口監聽發送消息,並通過N+1(N+1 >;= 1024)端口向FTP服務器發送命令。服務器將依次連接到用戶在本地指定的數據端口,如端口20。

基於服務器端防火墻,要支持主動模式FTP,需要打開以下交互中使用的端口:

L FTP服務器命令(21) port接受客戶端的任意端口(客戶端初始連接)。

L FTP服務器命令(21)端口到客戶端端口(>;1023)(服務器響應客戶端命令)

L FTP服務器數據(20)端口到客戶端端口(>:1023)(服務器初始化數據連接到客戶端數據端口)

L FTP服務器數據(20)端口接受客戶端端口(>:1023)(客戶端向服務器的數據端口發送ACK包)

如下所示:

在步驟1中,客戶端的命令端口與FTP服務器的命令端口建立連接,並發送命令“端口1027”。然後在步驟2中,FTP服務器向客戶端的命令端口返回“ACK”。在步驟3中,FTP服務器從它自己的數據端口(20)向客戶機先前指定的數據端口(1027)發起連接,最後客戶機在步驟4中向服務器返回“ACK”。

主動FTP的主要問題其實出在客戶端。FTP客戶端實際上並沒有建立到服務器數據端口的連接。它只是告訴服務器它監聽的端口號,然後服務器回來連接到客戶機指定的端口。對於客戶端的防火墻來說,這是建立壹個從外部系統到內部客戶端的連接,通常是被阻斷的。

主動FTP的示例:

下面是壹個活動FTP會話的實例。當然,服務器名稱、IP地址和用戶名都被更改了。在這個例子中,FTP會話來自testbox 1 . slack site . com(192.168.150.80),壹個運行標準FTP命令行客戶端的Linux工作站,發起到testbox2.slacksite.com(192.168.150.90),壹個運行ProFTPd 1.2的Linux工作站紅色文本是調試信息,它顯示了發送到服務器的實際FTP命令和生成的響應信息。服務器的輸出信息用黑色表示,用戶的輸入信息用粗體表示。

當我們仔細考慮這段對話時,我們會發現壹些有趣的事情。我們可以看到,當提交PORT命令時,它指定了客戶端的壹個端口(192.168.438+050.80),而不是服務器的。當我們使用被動FTP時,我們會看到相反的現象。讓我們來關註壹下PORT命令的格式。正如您在下面的示例中看到的,它是由逗號分隔的六個數字組成的序列。前四位代表IP地址,後兩位構成數據連接的端口號。將第五個數字乘以256,再加上第六個數字,就得到實際的端口號。以下示例中的端口號為((14*256)+178) = 3762。我們可以使用netstat來驗證這個端口信息。

testbox 1:{/home/p-t/slacker/public _ html } % FTP-d testbox 2

連接到testbox2.slacksite.com。

220 testbox2.slacksite.com FTP服務器準備就緒。

姓名(測試箱2:懶鬼):懶鬼

-& gt;用戶懶鬼

懶鬼需要331密碼。

密碼:TmpPass

-& gt;超越XXXX

230用戶懶鬼登錄。

-& gt;方式

215 UNIX類型:L8

遠程系統類型是UNIX。

使用二進制模式傳輸文件。

ftp & gt限位開關(Limit Switch)

ftp: setsockopt(忽略):權限被拒絕

-& gt;端口192,168,150,80,14,178

200端口命令成功。

-& gt;目錄

150打開文件列表的ASCII模式數據連接。

drwx - 3懶鬼用戶104 07 27 01:45 public _ html

226傳送完畢。

ftp & gt放棄

-& gt;放棄

221再見。