DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: a332452295
今日帖子: 0
在线用户: 8
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
男 redsworft (牛肉干) ★☆☆☆☆ -
盒子活跃会员
2003/12/26 11:49:49
标题:
文件传输协议跳板(FTP bounce) 攻击以及安全防护措施(转) 浏览:3891
加入我的收藏
楼主: 日期:2003-03-10作者:爱迪安网络技术有限公司 宋建锟 

编者按:爱迪安网络安全技术有限公司的安全技术文摘原则上不选用带有攻击性的文章,然而在防火墙配置安装实践及安全性检查中,发现了很多的安全性隐患,甚至包括客户选择防火墙本身设计的缺陷,下面的文章很好地举出了其中的一个问题。

FTP 协议分析:

Ø基本介绍
一个FTP会话通常包括五个软件元素的交互:
用户接口:提供了一个用户接口并使用客户端协议解释器的服务
客户 PI:客户协议解释器,其项远程服务器协议机发送命令并且驱动客户数据传输过程
服务器PI:服务器协议解释器,响应客户协议机发出的命令并驱动服务器端数据传输过程
客户 DTP:客户数据传输过程,其负责完成和服务器数据传输过程及客户端本地文件系统的通信
服务DTP:服务器数据传输过程,其负责完成和客户数据传输过程及服务器端文件系统的通信

Øftp的目的:
1>促进文件共享。
2>鼓励非直接的或隐式的使用远程计算机。
3>有效地、可依赖地传输数据。

Ø数据类型:
1.ascii 类型: 默认的数据类型,所有的ftp应用都必须接受。主要用于传输文本文件。发送端将内部字符表达方式转换为标准ascii字符表示方式进行传输,接收方收到数据后,将其转换成自己使用的内部格式。
用作结束符。
使用标准ascii格式意味着数据必须用8位来表示。
2.EBCDIC 类型: 用于客户机之间使用EBCDIC作为它们的内部字符格式。传输时,数据被表示为8 为EBCDIC 字符。
被用作结束符。
3.IMAGE 类型: 数据传输以将临近的位压缩成8位的传输字节的形式来进行。接收方以比邻位的形式存储数据。为了方便(字节,字,或块)分界,存储系统的结构需要进行填充,必须使用0来在文件或记录的尾部来填充。以二进制的形式进行传输。
4.LOCAL 类型:这种传输形式是以由参数指定的逻辑字节数为单位进行传输的。

ØFTP 控制连接建立过程实例
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 :3283 ] [192.168.0.2 : 21] TCP:SYN
[192.168.0.2 : 21] [192.168.0.55 :3283 ] TCP:ACK,SYN
[192.168.0.55 :3283 ] [192.168.0.2 : 21] TCP:ACK
[192.168.0.2 : 21] [192.168.0.55 :3283 ] FTP:FTP SERVER READY
[192.168.0.55 :3283 ] [192.168.0.2 : 21] TCP:ACK
[192.168.0.55 :3283 ] [192.168.0.2 : 21] FTP:USER ROOT
上一行表示用户登录,注册用户为root
[192.168.0.2 : 21] [192.168.0.55 :3283 ] TCP:ACK
[192.168.0.2 : 21] [192.168.0.55 :3283 ] FTP:Password required for root
[192.168.0.55 :3283 ] [192.168.0.2 : 21] FTP:PASS 1234
上一行表示用户输入密码,口令为1234
[192.168.0.2 : 21] [192.168.0.55 :3283 ] TCP:ACK
以上过程完成用户基本登录。

Ø传输模式:
1.流模式:数据以字节流的形式传送,对数据的类型没有限制。
2.块模式:以一系列以一个或多个头字节开头的数据块形式传输。头字节包括计数段和描述符代码。如果该文件已经存在,那么原来的文件的内容就会被传输的内容所替代,如果原来文件不存在,就创建一个新的文件。
3.压缩模式:用于传输三种类系的信息,标准数据,以一个字节串形式传输;压缩数据,包含复制位和填充位;控制信息,以双字节序列形式传输。

Ø错误恢复和重启动
系统提供一个重启动的过程来对系统级失败作出保护。并且只有块传输模式和压缩传输模式支持重启动过程。

Ø文件传输函数
Port命令(data port)该命令的参数是32位的主机网络地址和一个16位的tcp端口地址。系统为用户端和服务器端都提供了默认数据端口。在一般情况下,不需要使用这个命令。 port命令指明下次connect()的目标。在port命令执行成功之后,实际的数据连接并未建立,只有进行下一步的数据传输命令开始执行的时候,数据连接才会建立。
使用port命令指定的端口号需要超过1024,否则会返回错误提示:如下是一个使用小于1024的
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 :3283 ] [192.168.0.2 :21] FTP:port 192,168,0,55,0,20
syn=0,ack=1,fin=0,psh=1
[192.168.0.2 :21] [192.168.0.55 :3283 ] TCP:ACK
[192.168.0.2 : 21] [192.168.0.55 :3283] FTP:A Privilieged port was requested。
syn=0,ack=1,fin=0,psh=1
[192.168.0.55 :3283] [192.168.0.2 :21] TCP:ACK

以下为一个正确的输入:
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 :3283 ] [192.168.0.2 :21] FTP:port 192,168,0,55, 249,175
syn=0,ack=1,fin=0, psh=1
[192.168.0.2 :21] [192.168.0.55 :3283 ] TCP:ACK
[192.168.0.2 : 21] [192.168.0.55 :3283 ] FTP:PORT command successful。
syn=0,ack=1,fin=0,psh=1
[192.168.0.55 :3283] [192.168.0.2 :21] TCP:ACK
Pasv命令(passive) 该命令请求服务器数据传输进程监听一个数据端口(不是默认数据端口)并等待一个连接。该命令的回应包括服务器监听的主机地址和端口地址。
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 :3283 ] [192.168.0.2 :21] FTP:pasv
syn=0,ack=1,fin=0,push=1
[192.168.0.2 :21] [192.168.0.55 :3283 ] TCP:ACK
[192.168.0.2 :21] [192.168.0.55 :3283 ] FTP:Entering Passive Mode (192,168,0,2,249,175)
syn=0,ack=1,fin=0,psh=1
[192.168.0.55 :3283] [192.168.0.2 :21] TCP:ACK
可以看到,执行pasv命令后,客户端进入被动状态,并返回一个端口号,该端口提交给服务器,用于建立与服务器20端口的数据连接,用于传递数据。客户端实际用于数据传输所分配的端口号为:249×256+175=63919,该端口的范围应该是大约1024小于65535的一个值。在实际的使用中,不同的操作系统允许的范围不尽相同。数据传输完成后,数据连接自动关闭。下次传输使用另外的端口。一般是顺次增加。
进入pasv状态以后,客户机端进入等待。直到数据传输结束或者被强行中断。
Type命令 (representation type) 该命令参数指定表示数据在这一部分表示和存储的类型。有几种类型使用了第二个参数。
RETR 命令 (RETRIEVE) 该命令使服务器的数据传输进程传输一个文件的拷贝。文件的状态和内容对于文件的传输没有影响。在实际执行该命令的过程中,首先要建立服务器和客户端的连接,如果建立连接不成功,客户端会有所提示。
STOR 命令 (STORE) 该命令使服务器数据传输进程通过一个数据连接来接收数据,并把接收的数据存储到一个文件。该命令在未进行数据传输以前已经创建了一个文件,这样即使数据传输过程没有开始就被中断,在接受数据的一端也可以看到一个空的文件。但实际的数据传输过程并没有开始。
NLST 命令 (NAME LIST) 该命令用于从服务器端向客户端发送一个目录的列表。路径名应该设定为一个目录或者其他形式的系统文件组描述符;一个空参数表示显示当前目录。服务器只返回文件名的数据流。显示信息和不带参数的unix ls命令显示的信息一样。(对应封装过后的ls命令)
LIST命令 (LIST) 该命令用于从服务器端发送一个列表到被动的数据传送端口。如果路径名指定为一个目录或者其它的文件组模式,服务器传送一个特定目录的文件的列表。如果路径名指定为一个文件,服务器发送文件的当前信息。一个空的参数表示用户的当前工作或者默认目录。在数据连接上传输的数据是以ascii或者ebcdic码的形式传输的。显示信息的方式类似于unix系统中ls –l命令(对应封装过后的dir命令)。

ØFTP回复
文件传输协议命令的回复是用来确保请求和文件传送处理过程的同步,并确保用户处理过程总能够知道服务器的状态。每一个命令必须产生至少一个回复。有些情况下可能产生多于一个的回复。如果是这样,多回复必须很容易的被区别。另外,一些命令要以一组序列的方式执行,那么如果这些命令执行成功,回复可以显示处理过程的中间状态。而这一序列中的任何一个步骤失败都会造成整个序列的重新启动。
一个FTP回复包括三个数字和紧跟的文本。自动控制利用这些数字来决定下一步进入那种状态,文本用于提供给用户。需要说明的是,文本的内容是依赖于服务器的,因此,对于每一个回复代码,可能对应不同的文本内容。
回复的三个数字都有它们特定的意义:
1.第一个数字表示反应是好的,坏的还是未成功的。
2.第二个数字表示具体的错误类型。
3.第三个数字表示信息的级别。

Ø在FTP会话中,一共会存在有两个独立的网络连接,一个是由两端的PI使用的,另一个是由两端的DTP使用的。PI之间的连接一般被称作控制连接(control connection),DTP之间的连接被称做数据连接(data connection)
1)控制连接:由客户端打开到服务器21端口的一个连接。用于在客户端和服务器端交换命令和回复。这一连接服从telnet 协议。
2)数据连接:用于在客户机与服务器之间以特定地模式和方式进行数据传输的连接。该连接是在第一个连接建立之后,由客户端执行port命令来建立的。执行该命令时,需要指定连接的客户端的ip地址和相应的端口。该端口号一般要求大于系统保留端口号。服务器打开这一连接,服务器端使用20端口作为源端口来建立连接,目的端口使用port 命令提供的端口号。


Ø数据连接建立的过程:
数据传输机制包括建立到特定端口的数据连接以及选择数据传输所需要的特定参数。用户端和服务器端都有它们的默认端口。因为ftp数据连接的建立使用tcp协议,所以建立数据连接也需要进行三次握手。和控制连接不同的是,它是由ftp服务器端发起,服务器首先发送一个tcp连接请求包,ack设为0,客户端回应请求,然后服务器端回应客户端,从而完成三次握手。需要说明的是,在执行port命令的时候,建立实际的连接。
被动的数据传输过程将会监听发送了数据传输请求命令的数据端口。ftp请求命令决定数据传输的方向。当服务器接受到数据传输请求,就会启动数据连接到数据端口。当连接建立以后,数据传输进程开始执行。
一般来说,由服务器来维持数据连接,包括打开和关闭它。
通常情况下,服务器监听端口号21来等待控制连接建立请求。而数据连接端口号的选择依赖于控制连接上命令。通常是客户发送一个控制消息来指定客户监听并等待服务器端发送数据连接建立请求的端口号。
对数据传输和控制命令传输来使用不同的独立连接有如下优点:两个连接可以选择不同的合适服务质量,如:对控制连接来说高需要更小的延迟时间,对数据连接来说需要更大的数据吞吐量;而且可以避免实现数据流中的命令的通明性及逃逸。
当传输建立时,总是由客户端首先发起。然而客户和服务器都可能是数据发送者。除了传输用户请求下载文件,数据传输过程同样在客户端请求列服务器端目录结构时建立。

Ø注意:
1.数据连接不一定始终存在
2.数据连接可以是由服务器到客户机的,也可以是由客户机到服务器的。一个数据连接可以进行数据的发送,同时它也可以进行数据的接收。
3.控制连接的生存期必须大于或者等于数据连接,一旦控制连接被中止,所进行的数据传输过程也就会被中止。
4.在另一种情况下,ftp 协议被用于两个客户机之间,用户在它们之间建立控制连接,并用一个数据连接来连接它们。
5.每一个ftp应用必须支持使用默认数据端口,只用用户协议解释器可以启动一个到非默认端口的改变。

Øftp协议与防火墙
为了避免运行时tcp TIMEWAIT状态冲突,客户端使用新的连接来传输数据。它每次选择一个端口传,使用port命令来告诉服务器。
如果使用了数据包过滤器,数据通道的请求以对未知端口进入调用的方式出现。大多数的防火墙被配置为只允许它认为安全的端口的进入调用。通常阻塞小于1024的端口。另一方面,输出调用只会产生很少的问题。任何的设置了ack位的tcp包都不能用于创建一个tcp连接,因此,过滤器可以配置为只向输出目录转发这种数据包。

FTP bounce 攻击
使用port命令出于非正当的目的来建立一个到任意主机的连接称为FTP bounce 攻击。

FTP bounce攻击的危害:
1)端口扫描
攻击者可以假借存在问题的FTP Server做connect()式的端口扫描,最终被扫描对象看到连接来自FTP Server,而不是原始的攻击者所在IP。
在某些特定的环境下,这种攻击方式给攻击者带来的好处不仅仅是隐藏他们使用的探测器的源ip。当被攻击的主机在其所在的子网中用作ftp服务器或者它不过滤来自ftp服务器的数据传输的时候,由于攻击者可以绕过访问控制的实施,这些主机看起来就像是他们的客户机。


2)突破常规防火墙
攻击者可以突破一个网络中配置的防火墙。通过连接一个公共的ftp服务器,攻击者建立一个进一步的连接到一个受防火墙保护的非公共的和服务器处于同一站点的机器。从而可以上传或者下载数据。


3)突破动态包过滤设备
客户端使用防火墙工具作为动态数据包过滤软件。
例如,被攻击的主机使用动态数据包过滤软件来保护它的系统。当用户通过其主机浏览网页,并下载了一个由攻击者构建的java程序包的时候,这一程序就会建立一个对外的到攻击者主机的ftp连接。接着执行port命令,指示攻击者主机打开一个到防火墙后面的系统的telnet端口的连接。
因为防火墙的动态包过滤器检查发出的数据包从而决定是否需要作出相应的处理。它记录port命令并且允许一个远程的服务器登录到本机的telnet端口。通常,这种连接是得不到防火墙的允许的,但是因为port命令是由本客户机执行的,所以这样的连接的到允许。(以上的攻击方式类似于一个木马程序)


以上的攻击方式甚至可以不使用java。如果一个浏览器可以被欺骗而发送一个包含完全格式的port命令的http请求到一个服务器的ftp端口,比如,通过上传一个多部分的形式到http://evil.com:21/,防火墙就会打开特定的tcp漏洞。

解决办法:
解决这一ftp bounce 问题的最好办法就是确保你的ftp 服务器不能建立到任意主机的连接。然而,那些依赖rfc规则的站点会发现使用这种解决方式会影响他们的应用。
1)限制PORT命令,只能指定控制流上的client ip。保证控制和数据传输的client ip必须一致。
2)限制匿名FTP帐号的写权限,有助于减弱FTP bounce攻击的意义,但无法防止端口扫描。
3)谨慎选用防火墙软件,并仔细配置。
4)网络配置:在进行网络配置的时候,要注意以下方面:

1.仔细的设计网络的拓扑,从而保证存在于各级系统间提供不同级别服务的数据传输界限是有效的。例如,那些拥有允许使用port命令来建立到第三方主机的ftp 服务器的机器应该阻塞和那些依赖主机名和ip地址作为登录许可来提供服务的机器间的数据传输。这些服务的例子包括:rlogin,rsh和NFS。防火墙或者一个过滤路由器应该始终阻塞外部对这些服务的直接访问。

2.如果使用动态数据报过滤工具,需要进一步配置,以确保第三方厂家提供的port命令被防火墙拦截。

3.使用代理服务器。如果一个浏览器使用代理来从某一个站点取得一个java程序,代理会会通知java 安全管理员有来自某站点的java程序,这样,如果配置了外部代理就会使攻击失败。因为安全管理员会阻止java程序打开一个除本机外的任何tcp连接。而包过滤器阻止浏览器直接连接到主机,因此,恶意的port命令的执行无法进行。

检测方法:
目前程序的处理办法是截获包含port 命令的数据包,从数据段中读取port 命令后紧跟的指定的目的ip,把该ip和数据包的源ip进行比较,如果两个ip相同,说明是从同一主机发起的数据传输过程,否则,确认为ftp bounce 攻击。不准予建立连接。

基本认识:
1)除使用java 程序包的攻击方式外,其他的攻击方式都要求攻击者有登录被攻击站点的用户权限。如果无法登录,则无法完成数据端口的指定工作。

2)这一问题的出现主要是因为在ftp中错误的使用或者说滥用port命令。Port命令在默认状态下是被用于主动模式下的ftp,一般不用于被动模式。ftp服务器一般两种模式都会用到,对于Client则要指明使用某种模式。

3)包过滤器:包过滤防火墙独立地检查每个ip数据包,通过检查源ip,目的ip或者其余的字段,决定是否转发这一数据包。一般包过滤器通过匹配数据包和固定的静态规则实例来决定。一些包过滤器允许管理员基于包的内容,时间的延迟,和其他的参数来设置复杂的顾虑规则,这种过滤器被成为动态包过滤器。
数据包过滤是一个网络安全保护机制,它用来控制流出和流入网络的数据。通过控制存在于某一网段的网络流量类型,包过滤可以控制存在于某一网段的服务方式。不符合网络安全的那些服务将被严格限制。基于包中的协议类型和协议字段值,过滤路由器能够区分网络流量;基于协议特定的标准,路由器在其端口能够区分包和限制包的能力叫包过滤(Packet Filtering)。正是因为这种原因,过滤路由器也可以称作包过滤路由器(Packet Filter Router)。

4)应用代理:一个应用代理可以看作是网络对话中用作转发的中间人。在防火墙方案中,一个路由器或一个简单的包过滤器被配置为转发所有的相关数据包到一个可靠的代理主机。在代理主机上,对于防火墙支持的每一种协议,都有一个用户程序用于监听特定的tcp端口。其作用是把本地局域网以一种有效的方式和互联网相隔离。

深入认识:
1.不同的系统可能会对port 命令的执行有不同的反应,aix系统会对port 命令输入的ip和ftp的ip进行比较如果输入的两个ip不一致,就会提示IP Address for data destination doesn\'t match client\'s.也就是说不能建立有效的数据连接来进行数据的传输。
Redhat的liunx系统也对port 命令作了限制。所不同的是,aix系统的主机可以作为一个跳板主机,它可以被动模式打开,从而接收数据。使用linux的主机也可以被动模式打开,但是它会检测将要建立的数据连接是否和控制连接来自同一主机,这样即使把linux主机被动打开时返回的端口使用port命令提交给未对port命令进行限制的主机,也无法使该主机和liunx主机进行数据的传输。以下为测试过程:
ftp登录到linux主机操作(192.168.0.54 21)
telnet 192.168.0.54 21
user user
pass pass
cwd /home/dest
以上完成对liunx 主机的登录,具体的数据包内容已经在上面进行了说明,此处不再给出。并且已经切换到相应的用于数据接收的工作目录。
ftp 登录到可以接受port命令并且没有进行限制的系统的主机 (192.168.0.5 21)
telnet 192.168.0.5
user user
pass pass
cwd /home/source

该主机使用的sun的操作系统,它可以接受port命令,并且没有进行限制,以上已经切换到了相应的用作数据发送的工作目录。
接下来对linux主机执行pasv 命令,结果显示如下:
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 2071] [192.168.0.54 21] ftp:pasv ack=1,syn=0,fin=0,psh=1
[192.168.0.54 21] [192.168.0.55 2071] tcp:ack
[192.168.0.54 21] [192.168.0.55 2071] ftp:227 Entering Passive Mode (192,168,0,54,102,73) ack=1,syn=0,fin=0,psh=1
[192.168.0.55 2071] [192.168.0.54 21] tcp:ack
以上的过程使linux主机进入被动模式,并且返回一个数据端口(102×256+73=26185)
因为已经切换到了准备接收数据的目录,还要创建一个文件用于接收数据。
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 2071] [192.168.0.54 21] ftp:stor temp.file ack=1,syn=0,fin=0,psh=1
[192.168.0.54 21] [192.168.0.55 2071] tcp:ack
这样,linux主机进入等待状态,直到数据传输开始。
在sun系统主机执行port命令
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 2070] [192.168.0.5 21] ftp:port 192,168,0,54,102,73 ack=1,syn=0,fin=0,psh=1
[192.168.0.5 21] [192.168.0.55 2070] tcp:ack
[192.168.0.5 21] [192.168.0.55 2070] ftp:200 PORT command successful ack=1,syn=0,fin=0,psh=1
[192.168.0.55 2070] [192.168.0.5 21] tcp:ack

可以看到,本次port命令执行成功,尽管和sun系统主机建立控制连接的主机是另外的一台机器[192.168.0.55],但是可以看出,sun系统允许数据连接是建立到和建立控制连接不一致的机器上。因为,port 命令已经执行成功,下面可以进行数据的传输,看实际的数据连接能否建立成功。
Source Addr & Port Dest Address &Port Summary
[192.168.0.55 2070] [192.168.0.5 21] ftp:retr test.file ack=1,syn=0,fin=0,psh=1
[192.168.0.5 20] [192.168.0.55 2070] tcp:ack
[192.168.0.5 20] [192.168.0.55 26185] tcp:syn
[192.168.0.55 26185] [192.168.0.5 20] tcp:syn,ack
[192.168.0.5 20] [192.168.0.55 26185] tcp:ack

以上的数据包完成连接前的三次握手。可以看到是sun主机的20端口和使用port命令传递的数据端口之间进行的通讯。
接下来是两台主机回显的信息:
Source Addr & Port Dest Address &Port Summary
[192.168.0.5 21] [192.168.0.55 2070] ftp:150 ASCII data connection for test.file (192.168.0.54,26185) (1866556) ack=1,syn=0,fin=0,psh=1
[192.168.0.54 21] [192.168.0.55 2071] ftp:425 Possible PASV port theft, cannot open data connection ack=1,syn=0,fin=0,psh=1
[192.168.0.54 20] [192.168.0.5 26185] tcp:fin,ack
[192.168.0.5 26185] [192.168.0.54 20] tcp:ack
[192.168.0.54 20] [192.168.0.5 26185] ftp:binary data
[192.168.0.54 20] [192.168.0.5 26185] ftp:binary data
[192.168.0.5 26185] [192.168.0.54 20] tcp:rst
[192.168.0.54 20] [192.168.0.5 26185] ftp:binary data
[192.168.0.5 26185] [192.168.0.54 20] tcp:rst
[192.168.0.5 26185] [192.168.0.54 20] tcp:rst
[192.168.0.55 2070] [192.168.0.5 21] tcp:ack
[192.168.0.55 2071] [192.168.0.54 21] tcp:ack
从上面的信息可以看到,在建立数据连接的三次握手完成后,liunx主机返回信息,进行数据通讯的连接无法建立,并向sun系统主机返回fin信号。但是,sun系统主机依然进行三次数据的传输,linux主机会拒绝接收。下面的通讯过程用于中止本次操作。
Source Addr & Port Dest Address &Port Summary
[192.168.0.5 21] [192.168.0.55 2070] ftp:550 test.file : Broken pipe ack=1,syn=0,fin=0,psh=1
[192.168.0.55 2070] [192.168.0.5 21] tcp:ack
如果改变linux主机为aix主机,尽管aix对port命令作了限制,但是,它可以在被动模式下接收数据。
sun的系统不会提示,可以接受这样的输入。

2.在网络文件传输中减少漏洞的一种方式就是采用ftp的被动模式来通过包过滤器。在被动模式下,服务器选择一个端口来侦听,客户端积极的打开该端口。在这种方式下,防火墙注意到客户端打开一个对外的连接并允许连接的建立,不需要一个特定port命令的解析。不过,不是所有的ftp服务器都使用被动模式,所有这不是总能成为一种选择。在这种情况下,网络管理员可以建立一个懂得被动模式的ftp代理,然后使用一个包过滤器来禁止除代理主机外的所有主机的数据包。于是代理主机可以访问不懂得客户机被动模式的ftp服务器。如果ftp代理不是透明的,客户端主机设置必须进行相应的修改,以便能够和代理主机进行通讯。

3.ftp的数据传输连接打开方式有两种,一种是主动方式打开,一种是被动方式打开。所谓的主动和被动对ftp服务器而言的。如果服务器被动打开,就是被动模式,如果服务器主动打开,就是主动模式。执行ftp登录的时候使用-p选项使数据传输被动打开。主动打开则不用此参数。以下是总结出来的关于主动和被动方式的几点区别:
1)在主动模式中,服务器用于数据连接的是20端口,而在被动模式中,服务器使用一个大于1024的端口。
2)在主动模式中,客户端要执行一个port命令,告诉服务器客户端打开的本地端口。然后由服务器发起建立连接的请求。请求在本地20端口和客户端传来的端口间建立连接。
3)在被动模式中,由客户端执行pasv命令,使服务器进入pasv状态,并向客户端返回一个服务器打开用于数据连接的端口号。然后由客户端发起建立一个数据连接。
4)客户端防火墙会禁止一个由外部建立连接的请求,所以如果客户端配置了防火墙,就会阻断服务器发起的建立数据连接的请求,也就无法建立和客户端的连接。
5)如果采用被动模式,因为是由服务器分配一个端口,由客户端发起建立连接的请求,所以防火墙不会阻断连接请求。
6)在windows下的ftp不支持-p选项,没有办法采用这种方式绕过防火墙。




----------------------------------------------
哇靠 ~~~~~~~~~~~~~~
这个帖子一定要回!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行78.97949毫秒 RSS