FTP协议有主动模式和被动模式,主要因为主动模式对客户端的网络有一定的要求,必须能够映射端口到公网上,所以必须使用被动模式。vsftpd模式就是被动模式
主动模式
主动模式与被动模式的最大的区别就是,FTP服务器是主动连接发送数据(主动模式),还是被动接收连接发送数据(被动模式)。
原理图
主动模式原理图
流程
原理如上图,流程解释如下
- FTP服务器监听21端口
- FTP客户端使用一个随机端口N,连接服务器21端口,并登录成功
- FTP监听N 1
- FTP发送PORT命令,把客户端IP和端口N 1发送给服务器
- 服务器使用端口
20
主动连接客户端N 1端口,并发送数据
抓包分析
主动模式抓包分析
- 客户端使用端口49991连接服务器的21端口
- 发送的PORT命令中,
Active IP Address : 172.25.0.12
,Active port: 49893
- 服务器使用端口20,发送数据到
172.25.0.12:49893
缺点
被动模式最大的问题,就是客户端监听的端口,必须映射到公网IP,否则服务器就连接不上
被动模式
原理图
被动模式原理图
流程
原理如上图,流程解释如下
- FTP服务器监听21端口
- FTP客户端使用一个随机端口N,连接服务器21端口,并登录成功
- FTP发送PASV命令
- 服务器监听随机端口M,并返回服务器IP和M
- 客户端连接服务器M端口,并接收数据
抓包分析
被动模式抓包分析
- 客户端使用端口
60253
连接服务器的21
端口 - 发送的PASV命令给服务器
- 服务器监听端口
58506
- 服务器返回
Passive IP Address : 172.25.0.101
,Passive port: 58506
- 客户端使用使用端口
60254
连接服务器端口58506
,并获取数据