关闭

FTP采用主、被动传输模式时的通信过程及解决方案

标签: ftp服务器tcp防火墙服务器server网络
2229人阅读 评论(0) 收藏 举报
分类:

原文地址:http://ewangsoft.blog.163.com/blog/static/7721558220108219013713/

一、主动传输模式:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

       上图是使用标准FTP协议(明文传输)通信抓包截图。通信过程简单描述如下:
          1、FTP客户端使用TCP随机端口2308主动连接FTP服务器的TCP 21端口,进行TCP三次握手
          2、TCP三次握手之后,FTP客户端主动提供用于登录验证的用户名和密码,验证通过,服务器返回信息
          3、FTP客户端发出命令PORT,并打开比自己刚才连接FTP服务器大1的端口TCP 2309端口供FTP服务器来连接
          4、FTP服务器使用自己的TCP 20端口主动连接FTP客户端的TCP 2309端口,连接成功后则可以在服务器、客户端之间传递数据
 
      标号为1、2的抓包可以看到FTP用户登录时的用户名和密码明文,这是FTP的一个不安全之处。标号为3的抓包中我们可以看到客户端传送了PORT命令,此命令正是客户端发起主动请求数据连接的命令,从抓图中我们可以看到,客户端要求FTP服务器主动连接自己的2309端口,如下图示:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

    随后标记为4的抓包,FTP服务器端使用TCP20端口主动连接FTP客户端TCP 2309端口,如下图示:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

二、被动传输模式

       被动传输模式通信过程:

          1、FTP客户端使用TCP随机端口2153主动连接FTP服务器的TCP 21端口,进行TCP三次握手

          2、TCP三次握手之后,FTP客户端主动提供用于登录验证的用户名和密码,验证通过,服务器返回信息

          3、FTP客户端发出命令PASV,要求FTP服务器打开数据端口让客户端连接

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

           4、FTP服务器进入Passive Mode,打开自己的TCP8445端口供FTP客户端连接

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

          5、FTP客户端使用比刚才连接FTP服务器大1的端口即2154端口主动连接FTP服务器提供的8445端口,连接成功后则可以在服务器、客户端之间传递数据 

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

 
 三、我所用过的支持主动、被动传输的防火墙
      1、pfsense(m0n0wall不支持)
          在pfsense的网络接口设置界面中,提供了FTP Helper功能,即启用FTP主动被动模式支持。开启此功能后,不需要添加FTP通信的允许规则就可以使用FTP。如果是发布pfsense内的FTP服务器,则需要在WAN接口启用它;如果是pfsense内部的PC要与外部的FTP服务器使用主、被动传输模式,则需要在LAN接口开启它。设置操作如下图:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

      2、ISA Server

          我使用的是ISA2006,在ISA2006中,只要使用服务器发布规则发布的内部FTP服务器,其就支持主、被动传输模式;使用访问规则允许FTP出站通信(用系统创建的协议),则内部PC就可以与外部FTP服务器间使用主、被动传输模式。

四、如果防火墙不支持主动或被动传输模式,那就要手工添加防火墙允许规则。

      主动模式:由于主动传输模式是FTP服务器用20端口主动连接FTP客户端提供的数据传输端口,而FTP客户端提供的数据传输端口一般是随机的(客户端连接服务器端口+1),如果想固定此端口,则需要FTP客户端软件支持,在Cuteftp中的设置如下:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

 知道了主动传输模式服务器要连接客户端的端口后,在两侧防火墙上就可以添加相应的入站和出站访问规则即可。针对如上的设置,对于FTP服务器端的防火墙,则需要添加TCP 20端口到TCP 50000-50010端口的出站允许访问规则;对于FTP客户端的防火墙,则需要添加外部TCP 20端口到内部TCP 50000-50010端口的入站允许访问规则。
      被动传输模式:被动传输模式是FTP服务器打开端口让客户端连接,因此首先要在FTP服务器上设置被动模式时让客户端连接的端口范围,然后在两侧的防火墙上添加对应的出站和入站访问规则即可。
      下面是Server-U和filezilla服务器上关于被动模式设置的界面:

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog 

 如果FTP服务器被动模式使用的端口是30000-30010,对于FTP服务器端的防火墙,则需要添加允许外部到内部TCP 30000-30010的入站允许访问规则;对于FTP客户端的防火墙,则需要添加内部到外部TCP 30000-30010的出站允许访问规则。

【原创】FTP客户端采用主、被动传输模式时标准FTP协议通信过程 - 大河 - 大河Blog


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:877161次
    • 积分:10497
    • 等级:
    • 排名:第1625名
    • 原创:62篇
    • 转载:806篇
    • 译文:0篇
    • 评论:31条
    最新评论