- 了解FTP协议
在Windows操作系统上使用serv-U软件搭建FTP服务
分析FTP流量
一、FTP协议
1、FTP概念
- FTP(文件传输协议)由两部分组成:客户端/服务端(C/S架构)
应用场景:企业内部存放公司文件、开发网站时利用FTP协议将网页或程序传到网站服务器,网络中传输一些大文件使用该协议。
- FTP:基于传输层TCP的,默认端口号(20号端口一般用于传输数据,21号端口用于传输控制信息),但是,是否使用20号端口作为传输数据端口和FTP的传输模式有关系。
- 如果采用的主动模式,传输数据使用20号端口
- 如果采用的被动模式,传输使用的端口需要服务器和客户机协商决定
2、工作方式
- 主动模式(port方式)
- 建立连接使用21号端口,客户端通过此通道向服务器发送port命令,服务器从20号端口主动向客户端发起连接(不是很安全)
- 建立连接使用21号端口,客户端通过此通道向服务器发送port命令,服务器从20号端口主动向客户端发起连接(不是很安全)
- 被动模式(passive方式)
- 建立连接使用21号端口,客户端像服务器发送pasv命令,服务器收到会随机打开一个高端端口(大于1024),服务器在指定范围内的某个端口被动等待客户端的连接。
- 建立连接使用21号端口,客户端像服务器发送pasv命令,服务器收到会随机打开一个高端端口(大于1024),服务器在指定范围内的某个端口被动等待客户端的连接。
3、 传输模式
- 文本模式:ASCII模式,以文本序列传输
- 二进制模式:binary模式,以二进制序列“0”和“1”传输(视频、图片、应用程序等)
二、FTP的客户端和服务端
1、服务端程序
- serv-U
- filezilla server(开源)
- vsftpd(Linux平台)
- Windows server IIS(FTP 发布服务)
2、客户端程序
- 命令行:ftp 192.168.10.10
- 资源管理器:地址栏输入ftp://92.168.10.10
- 浏览器:输入ftp://92.168.10.10
- 第三方工具
- flashFXP
- filezilla client
- cuteftp
- xftp
三、部署FTP服务器
1、Serv-U
一台windows serversion2016虚拟机,设置vmnet1网络,自动获取IP技术
在D盘创建技术部文件夹、财务部文件夹,在文件夹中存入一些内容。
安装Serv-U,首次打开会有一个登录界面,关掉重新打开一下就直接进去了
(1)定义新域
- 域详细信息
定义新域woniu就好了
- Domain Type
文件传输和文件共享,我们不用文件共享功能,可以把它勾掉
- Protocols
默认是开启了FTP的21号端口、FTPS的990端口、使用SSH的SFTP的22号端口、HTTP的80端口和HTTPS的443端口
FTP传输的是明文信息,SFTP传输的是密文信息,使用SSH可以将FTP的密码进行加密,使用SSH的SFTP是SSH和SFTP的结合。
- IP Listeners
监听,ipv4,所以只将ipv4勾上。
- 加密
Serv-U能够恢复密码 ,密码的加密模式,我们使用服务器设置
(2)创建用户
针对FTP的用户有匿名用户和普通用户。
a、匿名用户
匿名用户:anonymous 固定名称(某些FTP服务端软件也可以使用ftp用户名作为匿名用户)
密码设为空
这个用户创好了
b、普通用户
用户信息
zhangsan访问的时候直接访问到技术部文件夹且对技术部下的文件夹有完全访问权限
2、工作方式(被动)
针对Serv-U默认使用的是被动模式。
Winshark打开抓Vmnet1网卡流量,本地资源管理器访问一下,然后抓包分析:
客户机和服务器的21号端口建立三次握手
服务器返回给客户端一个消息Response响应状态码是220,服务器信息是Serv-U FTPServerv15.1 redy 220状态码 成功响应
客户机请求服务器,请求用户名是anonymous
服务器向客户机响应
状态码331,user name okey,please send complete E-mail address as password。
匿名用户没有设置密码,客户机像服务器发送响应报文,Request:PASS IEUSER@
服务器向客户机发送响应报文,Response :230 User logged in,proceed
客户机向服务器确认ACK
客户机向服务器请求,opts utf8 on,请求指定utf8字符编码集
服务器向客户机响应,Response:200 OPTS UTF8 is set to ON
客户机向服务器确认ACK
接着
客户机向服务器发送请求Request :syst
服务器向客户机响应:Response:215 UNIXType:L8(可以看出Serv-U软件的底层是UNIX)
客户机向服务器确认ACK
接着
客户机向服务器请求Request:site help
服务器响应客户机 Response:214,返回了一些Help Message
pasv 227状态码
端口是49684这个端口我们没有设置过
接着是客户机和服务器重新建立三次握手
3、传输模式(binary)
从ftp://192.168.254.133下载到本地一个文件,抓包可以看到文件传输是binary模式.
四、FTP状态码
状态码 | 说明 |
1XX | 肯定的初步答复 |
110 | 重新启动标记答复 |
120 | 服务已就绪,在nnn分钟后开始 |
125 | 数据连接已打开,正在开始传输 |
150 | 文件状态正常,准备打开数据连接 |
2xx | 肯定的完成答复 |
200 | 命令确定 |
202 | 未执行命令,站点上的命令过多 |
211 | 系统状态,或系统帮助答复 |
212 | 目录状态 |
213 | 文件状态 |
214 | 帮助消息 |
215 | NAME系统类型,其中,NAME是Assigned Numbers文档中所列的正式系统名称 |
220 | 服务就绪,可以执行新用户的请求 |
221 | 服务关闭控制连接,如果适当请注销 |
225 | 数据连接打开,没有进行中的传输 |
226 | 关闭数据连接,请求的文件操作已成功(例如:传输文件或放弃文件) |
227 | 进入被动模式(h1,h2,h3,h4,p1,p2) |
230 | 用户已登录,继续进行 |
250 | 请求的文件操作正确,已完成 |
257 | 已创建“PATHNAME” |
3xx | 可定的中间答复 |
331 | 用户名正确,需要密码 |
332 | 需要登录账户 |
350 | 请求的文件操作正在等待进一步的信息 |
4xx | 状态否定的完成答复 |
421 | 服务不可用,正在关闭控制连接,如果服务确定它必须关闭,将向任何命令发送这一应答 |
425 | 无法打开数据连接 |
426 | Connection closed;transfer aborted |
450 | 未执行请求的文件操作,文件不可用(例如:文件繁忙) |
451 | 请求的操作异常终止们正在处理本地错误 |
452 | 未执行 请求的操作,系统存储空间不够 |
5xx | 永久性否定的完成答复 |
500 | 语法错误,命令无法识别。这可能包括诸如命令行太长之类的情景 |
501 | 在参数中有语法错误 |
502 | 未执行命令 |
503 | 错误的命令序列 |
504 | 未执行改参数的命令 |
530 | 未登录 |
532 | 存储文件需要账户 |
550 | 未执行请求的操作,文件不可用(例如:未找到文件,没有访问权限) |
551 | 请求的操作异常终止,未知的页面类型 |
552 | 请求的文件操作异常终止,超出存储分配(对于当前目录或数据集) |
553 | 未执行请求的操作,不允许的文件名 |