FTP原理以及在VPC中使用FTP的注意事项

FTP原理以及在VPC中使用FTP的注意事项

更新时间:2018-11-27 09:47:10

概述

本文主要介绍FTP原理以及在VPC中使用FTP的注意事项。

详细信息

FTP介绍

FTP是文件传输协议(FILE TRANSFER PROTOCOL简称FTP,是在TCP/IP网络和INTERNET上最早使用的协议之一。

FTP工作模式

FTP的工作模式分为2种。
  • 主动模式(Active)
  • 被动模式(Passive)
FTP使用的模型如下所示。
                                            -------------
                                            |/---------\|
                                            ||   User  ||    --------
                                            ||Interface|<--->| User |
                                            |\----^----/|    --------
                  ----------                |     |     |
                  |/------\|  FTP Commands  |/----V----\|
                  ||Server|<---------------->|   User  ||
                  ||  PI  ||   FTP Replies  ||    PI   ||
                  |\--^---/|                |\----^----/|
                  |   |    |                |     |     |
      --------    |/--V---\|      Data      |/----V----\|    --------
      | File |<--->|Server|<---------------->|  User   |<--->| File |
      |System|    || DTP  ||   Connection   ||   DTP   ||    |System|
      --------    |\------/|                |\---------/|    --------
                  ----------                -------------

                  Server-FTP                   USER-FTP
注:
  • 数据连接可以在任意方向发起。
  • 数据连接不需要一直存在。

端口说明

  • 21端口:FTP Server端监听的端口,也是FTP控制命令使用的端口。
  • 20端口:在主动模式(Active)中,FTP Server端使用20端口进行数据传输

主动模式(Active )

FTP的主动模式如下图所示,在第1步中,Client的命令端口与Server的命令端口建立连接,并发送命令“PORT 1027”。然后在第2步中,Server给Client的命令端口返回一个“ACK”。在第3步中,Server发起一个从20端口到1027端口的连接,最后Client在第4步中给Server端返回一个“ACK”。
  1. Server监听21端口,Client用大于1024的端口访问Server21端口,进行用户登录认证并且发送FTP控制指令。客户端发送指令PORT,告诉Server使用主动模式。PORT指令中带有Client的IP和端口,如下所示。
    PORT A1,A2,A3,A4,a1,a2
    
  2. 使用Wireshark进行抓包,抓包示例如下图所示,PORT后面数字的前4位是IP地址,后两位表示端口
    注:端口的计算方式是193*256+84。
  3. Server主动用20端口去连接客户端的数据端口(客户端发送的PORT指令中给出的数据端口),进行数据传输。
  4. 在使用主动模式时,要求客户端入方向允许20端口访问。服务端出方向允许20端口访问,规则如下所示。
    FTP
    21端口
    20端口
    服务端
    入方向放开
    出方向放开
    客户端
    出方向允许访问21端口
    入方向允许20端口进

被动模式(Passive)

FTP的被动模式如下图所示,在第1步中,Client的端口与Server的端口建立连接,并发送命令“PASV”。然后在第2步中,Server返回命令“Passive Mode A1,A2,A3,A4,a1,a2”,告诉Client用的哪个端口侦听数据连接。在第3步中,Client初始化一个从自己的数据端口到Server指定数据端口的数据连接。最后Server在第4步中给Client的数据端口返回一个“ACK”响应。
  1. Server监听21端口,Client用大于1024的端口访问Server21端口,进行登录验证,发送FTP控制指令。Client发送指令PASV,告诉Server使用被动模式。
  2. Server接受到PASV指令后,返回类似如下。
    227 Entering Passive Mode A1,A2,A3,A4,a1,a2
    
  3. 使用Wireshark进行抓包,抓包示例如下图所示,“Entering Passive Mode”后面数字的前4位是IP地址,后两位表示端口,端口的计算方式和主动模式类似
  4. Client用大于1024的随机端口,去访问Server指定的端口,进行数据传输。
  5. 使用被动模式时,要求服务端入方向允许随机端口访问或者单独指定PASV端口进行开放,VPC中要指定PASV使用的IP是服务器公网IP,规则如下所示。
    ​FTP
    21端口
    20端口
    PASV端口
    服务端
    入方向放开
    /
    入方向放开
    客户端
    出方向允许访问21端口
    /
    出方向放开

Vsftpd被动模式配置

Vsftpd被动模式的配置内容如下所示。
#使用被动模式
pasv_enable=YES
#指定被动端口设置
pasv_min_port=4000
pasv_max_port=4002
#指定被动模式使用的公网IP
pasv_address=x.x.x.x

适用于

  • 专有网络VPC