<p><strong>在win 2003 中配置被动模式</strong></p><p><strong>被动模式
FTP 连接 </strong>是有时称为到 " 服务器管理 ", 因为与之一瞬态端口用作数据连接的服务器端端口服务器响应客户端发出 <strong>pasv </strong>命令后,。 由客户端, 数据连接命令发出后服务器连接到客户立即使用端口上面控制连接的客户端端口。 <br/>
与端口范围 1024 - 65535 内默认模式 Passive - IIS
FTP 中随机选择到响应。 要进一步限制这些巨大端口范围, 系统管理员可配置命名<strong>PassivePortRange </strong>元数据库属性关键字, 此属性关键字仅存在于 IIS 6.0, for IIS 5.0 在 Windows 2000, 系统管理员需要安装 Service Pack 4, 在系统注册表中 <strong>PassivePortRange </strong>项中添加。 <br/>
更改 <strong>PassivePortRange </strong>for IIS, 执行过程之一下面部分中所述。 <br/>
<strong>用于 Windows Server 2003 </strong><br/>
要启用直接编辑元数据库) <br/>
1 . 打开 IIS Microsoft 管理控制台 (MMC)。 <br/>
2 . 右击本地计算机节点。 <br/>
3 . 选择 <strong>属性 </strong>。 <br/>
4 请确保 <strong>启用直接编辑元数据库 </strong>复选框。 <br/>
通过 ADSUTIL 脚本配置 PassivePortRange b) <br/>
1 . 单击 <strong>开始 </strong>、 <strong>运行 </strong>, 键入 cmd, 和然后 <strong>确定 </strong>。 <br/>
2 . 键入 cd Inetpub\AdminScripts, 然后按 Enter。 <br/>
3 . 键入以下命令从命令提示符。 <br/>
<strong> CSCRIPT.exe C:\Inetpub\AdminScripts\adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5515"</strong> <br/>
4 重新启动
FTP 服务。 <br/>
通过 ADSUTIL 脚本配置时您会看到以下输出: <br/>
Microsoft (R) Windows Script Host 版本 5.6 <br/>
版权所有 (C) Microsoft Corporation 1996 - 2001。 保留所有权利。. <br/>
<strong>PassivePortRange </strong>(STRING) " <strong>5500-5515</strong> ": <br/>
注意:如果开了系统自带的防火墙,必须在例外里添加以上端口</p><p><strong>什么是主动,什么是被动,为什么首选被动</strong></p><p>
FTP 分为两类: <br/>
主动FTP(Port
FTP),也就是一般的FTP﹔被动FTP(Port
FTP)</p><p>主动FTP</p><p>主动方式的FTP是这样的:客户端从一个任意的非特权端口N(N>1024)连接到FTP服务器的命令端口,也就是21端口。然后客户端开始端口N+1,并发送FTP命令“port
N+1”到FTP服务器。接着服务器会从它自己的数据端口(20)连接到客户端指定的数据端口(N+1)。</p><p>针对FTP服务器前面的防火墙来说,必须允许以下通讯才能支持主动方式FTP:</p><p>1. 任何端口到FTP服务器的21端口 (客户端初始化的连接 S<-C) <br/>
2. FTP服务器的21端口到大于1024的端口(服务器响应客户端的控制端口 S->C) <br/>
3. FTP服务器的20端口到大于1024的端口(服务器端初始化数据连接到客户端的数据端口 S->C) <br/>
4. 大于1024端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C) <br/>
主动方式FTP的主要问题实际上在于客户端。FTP的客户端并没有实际建立一个到服务器数据端口的连接,它只是简单的告诉服务器自己的端口号,服务器再回来连接客户端这个指定的端口。对于客户端的防火墙来说,这是从外部系统建立到内部客户端的连接,这是通常会被阻塞的。</p><p>防火墙设置的例子 <br/>
建置一个防火墙下的FTP server,使用主动FTP(Port
FTP) mode:预设的FTP port:21 以及FTP data port:20 <br/>
执行以下两行指令,只允许port 21 以及port 20 开放,其它关闭。 <br/>
iptables -A INPUT -p tcp -m multiport –dport 21,20 -j ACCEPT <br/>
iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset</p><p>FTP软件本身的设置</p><p>以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf <br/>
新增底下两行 <br/>
listen_port=21 <br/>
ftp_data_port=20</p><p>设置错会出现的情况 <br/>
FTP client(如cuteFTP)的联机方式不能够选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls、get 等等的指令时,便无法运作。</p><p>被动FTP</p><p>为了解决服务器发起到客户的连接的问题,人们开发了一种不同的FTP连接方式。这就是所谓的被动方式,或者叫做PASV,当客户端通知服务器它处于被动模式时才启用。</p><p>在被动方式FTP中,命令连接和数据连接都由客户端,这样就可以解决从服务器到客户端的数据端口的入方向连接被防火墙过滤掉的问题。当开启一个
FTP连接时,客户端打开两个任意的非特权本地端口(N >
1024和N+1)。第一个端口连接服务器的21端口,但与主动方式的FTP不同,客户端不会提交PORT命令并允许服务器来回连它的数据端口,而是提交
PASV命令。这样做的结果是服务器会开启一个任意的非特权端口(P > 1024),并发送PORT
P命令给客户端。然后客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。</p><p>对于服务器端的防火墙来说,必须允许下面的通讯才能支持被动方式的FTP:</p><p>1. 从任何端口到服务器的21端口 (客户端初始化的连接 S<-C) <br/>
2. 服务器的21端口到任何大于1024的端口 (服务器响应到客户端的控制端口的连接 S->C) <br/>
3. 从任何端口到服务器的大于1024端口 (入;客户端初始化数据连接到服务器指定的任意端口 S<-C) <br/>
4. 服务器的大于1024端口到远程的大于1024的端口(出;服务器发送ACK响应和数据到客户端的数据端口 S->C)</p><p>防火墙设置的例子 <br/>
建置一个防火墙下的FTP server,使用被动FTP(Port
FTP) mode:FTP port:21 以及FTP data port 从9981 到9986。 <br/>
执行以下两行指令,只允许port 21 以及port 9981-9990 开放,其它关闭。 <br/>
iptables -A INPUT -p tcp -m multiport –dport 21,9981,9982,9983,9984,9985,9986,9987,9988,9989,9990 -j ACCEPT <br/>
iptables -A INPUT -p tcp -j REJECT –reject-with tcp-reset</p><p>FTP软件本身的设置 <br/>
以vsFTP为例子. 修改/etc/vsFTPd/vsFTPd.conf <br/>
新增底下四行 <br/>
listen_port=21 <br/>
pasv_enable=YES <br/>
pasv_min_port=9981 <br/>
pasv_max_port=9986</p><p>设置错会出现的情况 <br/>
这个例子中,FTP client(如cuteFTP)的联机方式必须选择passive mode,否则无法建立数据的联机。也就是读者可以连上FTP server,但是执行ls,get 等等的指令时,便无法运作。</p><p><br/></p>