FTP主被動模式抓包分析

2022-07-22 20:42:15 字數 2867 閱讀 6941

ftp有兩種工作模式,分別為主動模式和被動模式。所謂的主被動模式,是相對於伺服器端而言的。

主動模式(active mode)是指在發起資料傳輸的時候,是由伺服器端向客戶端主動發起連線請求。

主動模式的時序圖如下圖所示

抓包如下圖所示:

主動模式下的伺服器端向客戶端發起請求

在主動模式下,如果客戶端有防火牆的話,就有可能伺服器端發起主動連線失敗。

被動模式(passive mode)是指在發起資料傳輸的時候,是客戶端主動發起請求(也就是伺服器端被動)。

被動模式時序圖如下圖所示:

抓包分析的結果如下

控制通道三次握手

客戶端向伺服器21埠發起請求(pasv模式)

伺服器端響應了port 218,168,180,194,108,115,也就是跟客戶端說,你可以連線我的108*256+115埠,也即是27763埠

被動模式的情況下,如果主機或者防火牆有限制,客戶端在請求資料的時候,就無法連線伺服器。

在被動模式下,如果是linux伺服器,可以通過啟用ip_conntrack_ftp模組來支援被動模式的ftp連線。具體修改方法如下

#

vi /etc/sysconfig/iptables-config, 將iptables_modules 一行修改為

iptables_modules="

ip_conntrack_ftp

"

然後在iptables規則中,增加

#

vim /etc/sysconfig/iptables

#firewall configuration written by system-config-firewall

#manual customization of this file is not recommended.

*filter

:input accept [0:0]

:forward accept [0:0]

:output accept [0:0]

-a input -m state --state established,related -j accept

-a input -p icmp -j accept

-a input -i lo -j accept

-a input -m state --state new -m tcp -p tcp --dport 22 -j accept

-a input -m state --state new -m tcp -p tcp --dport 21 -j accept

-a input -j reject --reject-with icmp-host-prohibited

-a forward -j reject --reject-with icmp-host-prohibited

commit

生產環境的話,由於中間有防火牆,假設我們是客戶端,我們通過active mode去連線ftp伺服器,首先我們通過防火牆出去訪問公網ftp的話,防火牆肯定會進行nat轉換,否則 ftp伺服器端收到的port就是192,168,0,100,xx,xx,這樣的話,伺服器端肯定連線不了客戶端。

生產環境一公網ftp 使用者登入正常,但是無法列出目錄,報錯如下圖所示:

分析過程如下:

這個是乙個vsftpd伺服器,客戶端用的是被動模式。

已經登陸上了,證明控制通道是沒有問題的,是連線通道的問題。

抓包分析

客戶端

伺服器端

這裡至於為什麼源ip和目的ip抓包看到都不一樣,是因為是公網ip,做過轉換的。

從這裡可以看出,客戶端要連線伺服器的12*256+166 = 3238埠。但是發的包伺服器端沒有收到(客戶端還重發了包),到這裡,猜測兩個原因:

網路前端防火牆策略為開放3238埠

伺服器端有防火牆

檢查了伺服器端的防火牆配置,發現selinux, iptables都沒問題。

與網路溝通了一下,網路反饋沒有做過任何變更。繼續追問網路前端是否有安全策略,答曰有。讓其截圖看了一下

開放的埠是3001~3100。檢視了一下vsftpd的配置檔案,其中有兩行如下

pasv_min_port=3001pasv_max_port=3300
顯然,是這裡的埠跟防火牆的不匹配,讓網路同事把安全策略調整了一下後恢復正常。

FTP的主被動模式

自 在主動模式下,ftp客戶端隨機開啟乙個大於1024的埠n向伺服器的21號埠發起連線,然後開放n 1號埠進行監聽,並向伺服器發出port n 1命令。伺服器接收到命令後,會用其本地的ftp資料埠 通常是20 來連線客戶端指定的埠n 1,進行資料傳輸。在被動模式下,ftp庫戶端隨機開啟乙個大於102...

ftp主被動模式及vsftp配置

總結 主動模式 與 被動模式是針對ftp伺服器來說明的 在傳送資料的時候 ftp伺服器主動連線客戶端的是主動模式 在傳送資料的時候 客戶端主動連線伺服器的是被動模式 而主被動的連線方式 是在ftp客戶端上設定的 1.什麼是pasv模式和port模式?ftp port模式 主動模式 主動方式的ftp是...

FTP 被動模式搭建

centos6.8下ftp伺服器的安裝配置。安裝ftp 使用yum安裝 yum y install ftp vsftpd 或者使用rpm安裝以下兩個包 ftp 0.17 66.el7.x86 64 vsftpd 3.0.2 9.el7.x86 64 另外需要安裝db包,用來加密虛擬使用者的賬戶資訊 ...