当前位置:文档之家› 文件传输协议(FTP)

文件传输协议(FTP)

文件传输协议(FTP)文件传输协议(File Transfer Protocol,FTP)是一个被广泛应用的协议,它使得我们能够在网络上方便地传输文件。

早期FTP并没有涉及安全问题,随着互连网应用的快速增长,人们对安全的要求也不断提高。

本文在介绍了FTP协议的基本特征后,从两个方面探讨了FTP安全问题的解决方案:协议在安全功能方面扩展;协议自身的安全问题以及用户如何防范之。

1. 简介1.1 FTP的一些特性早期对FTP的定义指出,FTP是一个ARPA计算机网络上主机间文件传输的用户级协议。

其主要功能是方便主机间的文件传输,并且允许在其他主机上进行方便的存储和文件处理。

[BA72]而现在FTP的应用范围则是Internet。

根据FTP STD 9定义,FTP的目标包括:[PR85]1) 促进文件(程序或数据)的共享2) 支持间接或隐式地使用远程计算机3) 帮助用户避开主机上不同的4) 可靠并有效地传输数据关于FTP的一些其他性质包括:FTP可以被用户在终端使用,但通常是给程序使用的。

FTP中主要采用了传输控制协议(Transmission Control Protocol,TCP)[PJ81],和Telnet 协议[PJ83]。

1.2 重要历史事件[PR85]1971年,第一个FTP的RFC(RFC 114)由A.K. Bhushan在1971年提出,同时由MIT 与 Harvard实验实现。

1972年,RFC 172 提供了主机间文件传输的一个用户级协议。

1973年2月,在长期讨论(RFC 265,RFC 294,RFC 354,RFC 385,RFC 430)后,出现了一个官方文档RFC 454。

1973年8月,出现了一个修订后的新官方文档 RFC 542。

确立了FTP的功能、目标和基本模型。

当时数据传输协议采用NCP。

1980年,由于底层协议从NCP改变为TCP,RFC 765 定义了采用TCP的FTP。

1985年,一个作用持续至今的官方文档RFC 959(STD 9)出台。

1.3 FTP模型[PR85]就模型而言,从1973年以来并没有什么变化。

下图是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注: 1. data connection 可以双向使用(双工)2. data connection 不需要一直存在.图一 FTP使用模型术语User PI(user-protocol interpreter): 用户协议解释器Server PI(Server-protocol interpreter): 服务协议解释器control connection:控制连接Data connection:数据连接FTP Commands:FTP命令。

描述Data connection的参数,文件操作类型FTP Replies:FTP命令在图一描述的模型中,User PI创建control connection。

control connection 遵从Telnet协议。

在用户初始化阶段,标准FTP命令被User PI生成并通过control connection 传到服务器处理。

Server PI将相应的标准FTP应答通过control connection回传给User PI。

数据传输由Data connection完成。

User DTP 在特定端口监听,由Server DTP 用指定参数初始化连接。

另一种情形是用户希望在两台非本地的主机上传递文件。

用户与两个服务器建立control connection,安排两个服务器间的文件传输。

下图描述了这样的模型。

Control ------------ Control---------->| User-FTP |<-----------| | User-PI | || | "C" | |V ------------ V-------------- --------------| Server-FTP | Data Connection | Server-FTP || "A" |<---------------------->| "B" |-------------- Port (A) Port (B) --------------图二服务器间交互模型2.FTP协议的安全扩展[HL97]2.1 一些安全地进行文件传输实践a. 通过FTP传输预先被加密的文件b. 通过E-mail传输预先被加密的文件c. 通过PEM消息d. 通过使用Kerberos的rcp命令.2.2 在RFC 2228 之前的FTP并不安全虽然FTP采用 TELNET 协议执行connection control操作,而且 TELNET 协议后来又增补了认证和加密选项,但在RFC 1123 中禁止在connection control中进行TELNET 选项协商。

另外 TELNET 协议也没有提供完整性保护,而且也没有data connection 的保护。

2.3 扩展命令AUTH (Authentication/Security Mechanism),认证与安全机制ADAT (Authentication/Security Data),认证与安全数据PROT (Data Channel Protection Level),数据通道保护层次PBSZ (Protection Buffer Size),保护缓冲大小CCC (Clear Command Channel),清空命令通道MIC (Integrity Protected Command),完整性保护命令CONF (Confidentiality Protected Command), 保密保护命令ENC (Privacy Protected Command),私有性保护命令一种新的返回类型(6yz)也被引入以保护返回值。

2.4 协议状态图下图描述了在一个提高了安全性的FTP实现中认证和和授权的流程。

方形的块表示客户端需要发出的命令的状态,菱形的块表示服务器需要发出响应的状态。

,------------------, USER__\| Unauthenticated |________\| /| (new connection) | /|| `------------------' || | || | AUTH || V || / \ || 4yz,5yz / \ 234 ||<--------< >------------->. || \ / | || \_/ | || | | || | 334 | || V | || ,--------------------, | || | Need Security Data |<--. | | || `--------------------' | | || | | | || | ADAT | | || V | | || / \ | | || 4yz,5yz / \ 335 | | |`<--------< >-----------' | |\ / | |\_/ | || | || 235 | |V | |,---------------. | |,--->| Authenticated |<--------'| |当客户与服务器| `---------------' | 完成了认证,如| | | 果存在完整性就| | USER | 必须对命令进行| | | 完整性保护。

CCC | |<-------------------' 命令可以用来放松| V 这个限制。

| / \| 4yz,5yz / \ 2yz|<--------< >----------->.| \ / || \_/ || | || | 3yz || V || ,---------------. || | Need Password | || `---------------' || | || | PASS || V || / \ || 4yz,5yz / \ 2yz ||<--------< >----------->|| \ / || \_/ || | || | 3yz || V || ,--------------. || | Need Account | || `--------------' || | || | ACCT || V || / \ || 4yz,5yz / \ 2yz |`<--------< >----------->|\ / |\_/ || || 3yz |V |,-------------. || Authorized |/______|| (Logged in) |\`-------------'3. 协议的安全问题及防范措施[AO99]3.1 防范反弹攻击(The Bounce Attack)a. 漏洞FTP规范[PR85]定义了“代理FTP”机制,即服务器间交互模型。

支持客户建立一个FTP控制连接,然后在两个服务间传送文件。

同时FTP规范中对使用TCP的端口号没有任何限制,而从0-1023的TCP端口号保留用于众所周知的网络服务。

相关主题