在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。
在被动模式下,FTP库户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。
总的来说,主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。
被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTp服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。
很多人误认为利用WINDOWS组件IIS来构建的FTP服务器没有实用价值,只能做一些测试和学习。主要是FTP服务的PORT和PASV两种连接模式下防火墙难以设置。对于PORT模式,客户端无法在此环境下运行,因为 FTP 服务必须向 FTP 客户端发出新的连接请求,防火墙会将这些连接检测为未经请求的连接尝试,并因此而将它们断开。防火墙管理员可能也不希望使用PASV模式 FTP 服务器,因为该 FTP 服务可以打开任何短暂的端口号。如果防火墙配置允许未经请求的连接完全访问所有的短暂端口,则可能会是不安全的。
从实用的角度来看,建立一个默认短暂端口范围有限制的PASV模式 FTP 服务方案应该是较好的选择。下面通过一个实例,说明如何在Windows 2003 中利用IIS组件架设PASV模式FTP服务。
1建立一个PORT模式的FTP服务
1.1安装“文件传输协议(FTP)服务”组件
安装步骤:
控制面板--->添加删除程序--->添加删除windows组件--->应用程序服务器--->Internet信息服务(IIS)--->文件传输协议(FTP)服务
将“文件传输协议(FTP)服务”复选框钩上,插入windows 2003安装盘或选择windows 2003安装路径,直至安装结束。
1.2FTP主目录及用户权限的配置
主目录:D:/soft/ftpup
拥有读写权限而不允许其它用户访问的用户:
ww1用户拥有 ww1目录的读写权限,位置在:D:/soft/ftpup/LocalUser/ww1
XX1用户拥有 XX1目录的读写权限,位置在:D:/soft/ftpup/LocalUser/XX1
允许匿名用户只读访问:
Everyone 拥有 public目录的只读权限,位置在:D:/soft/ftpup/LocalUser/public
创建 ww1和xx1用户并设置密码。
建立相应的目录,并设置对应的权限。
1.3创建FTP站点
通过“控制面板 --->管理工具 --->Internet信息服务(IIS)管理器 --->Internet信息服务--->本地计算机--->FTP 站点”标签,右击“FTP 站点”--->新建--->FTP 站点,进入FTP站点建立向导:站点描述--->IP地址和端口设置--->隔离用户--->FTP站点主目录(D:/soft/ftpup ),直到向导结束。
右击刚建立的FTP站点,在“安全帐户”选项卡上选中“允许匿名用户连接”。至此,一个PORT模式的FTP站点架设完成。
可以关闭防火墙在客户端进行测试是否符合要求。
2将FTP站点设置成PASV模式
2.1启用直接编辑元数据库
打开 IIS Microsoft 管理控制台 (MMC):控制面板 --->管理工具--->Internet信息服务(IIS)管理器 --->Internet信息服务--->本地计算机
右击本地计算机节点,选择属性,选择启用直接编辑元数据库复选框。
2.2 修改端口号 方法 1 通过 ADSUTIL 脚本配置 PassivePortRange
运行cmd.exe程序进入命令行模式,并输入以下命令:
C:/Inetpub/AdminScripts/adsutil.vbs set /MSFTPSVC/PassivePortRange "5500-5550"
这样就将FTP服务器上TCP 默认短暂端口范围限制在5500-5550范围内,如果同时连接数量较多,可适当进行调整。
用以下命令查看PassivePortRange:
C:/Inetpub/AdminScripts/adsutil.vbs get /MSFTPSVC/PassivePortRange 方法 2 通过修改配置文件 打开下面这个文件 :1. C:/WINDOWS/system32/inetsrv/MetaBase.xml搜索 MaxConnections 这个字段 在 MaxConnections 下面新加一行被动模式的配置信息,修改后的配置文件为 LogType="1" MSDOSDirOutput="TRUE" MaxClientsMessage=" " MaxConnections="100000" PassivePortRange="5500-5550"
3.windows 2003 中防火墙的设置
3.1打开FTP控制端口TCP 21(如果更改端口号,这里要做相应的更改)
在命令行输入:
NETSH FIREWALL ADD PORTOPENING TCP 21 FTPPort21
3.2打开PassivePortRange 5500-5550的TCP端口
建立以下批处理文件并运行(例如:ftpport.bat):
ECHO OPENING FIREWALL PORTS 5500-5550
FOR /L %%I IN (5500,1,5550) DO NETSH FIREWALL ADD PORTOPENING TCP %%I FTPPort%%I
iisreset /restart
ECHO FINISHED
Pause
至此,整个服务架设完成,可在启用防火墙的情况下进行测试。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)