防火墙对ftp的影响以及解决方法–亿恩小路

  • A+
所属分类:未分类

防火墙对ftp的影响以及解决方法;
  从上述ftp工作的简单描述中我们看到防火墙会影响到client <->; server
的数据传输,有下列几种情况:

  1).server <-wan->; client,没有防火墙,没有任何限制。

  2).server <-wan->;fw -- client,client在防火墙后面,使用私网地址,
通过NAT访问公网:

      在一般的情况下,port指令将被防火墙阻挡,表现为client发port
指令(通常ls就会需要进行一次data传输)时总是得不到server的响应,直到超时
错误,此时,是因为server无法连接到client所开的随机高端口(client在port指
令中会告知server自己所开的端口以及自己的地址);此时client可以使用pasv模
式进行工作;如果该client不能使用pasv指令(如一些简单的ftp client程序,我
遇到的有ca kill的病毒代码库自动升级程序,使用ftp从服务器下载升级文件),
就要求防火墙具有outing ftp proxy功能(iptables称ftp conntrack),或称ftp
映射内核代理,即防火墙监控在特定端口(一般是21)的ftp连接,在检测到client
向server发送的port指令时,把该指令中的client地址以及端口修改为防火墙地址以
及端口,再把修改后的数据发往server,同时在server返回数据时将该数据重定向到
client的监听端口,完成一次完整的port过程;

在Ipfilter下可以使用类似下面的nat规则实现,其他的防火墙产品请查阅其文档:
map ed0 192.168.100.0/24 ->; 211.97.116.21x/32 proxy port ftp ftp/tcp

  3).server --fw <-wan->; client,server在防火墙后面,使用私网地址,通过fw的
重定向接收外部访问:

      此时,port指令没问题,但是pasv会被防火墙阻挡,出错的表现类似port指令,
此时,client可使用port指令工作;如果需要server支持pasv,需要在防火墙以及ftp server
上做相应的设置:

首先,设置pasv参数:

Proftpd:
#/usr/local/etc/proftpd.conf
MasqueradeAddress 211.97.116.21x
#该参数设置在client发pasv指令时,server返回给client的pasv地址串中应该包含的连接地址,
#该地址通常是防火墙的外部地址(作rdr的地址)

PassivePorts 30001 50000 # These ports should be safe...
#该参数说明pasv指令使用的端口范围

对于pure-ftpd
# Port range for passive connections replies. - for firewalling.
PassivePortRange 30001 50000
#在防火墙上开放的passsive端口范围
# Force an IP address in PASV/EPSV/SPSV replies. - for NAT.
ForcePassiveIP 211.97.116.21x
#这里211.97.116.21x就是防火墙进行rdr的公网地址了。

对于windows里的serv-u在其高级设置里也有类似的设置(passive ports,passive address),
图形界面,很简单了;

如果是其他的ftpd,应该也有类似的设置,如wu-ftpd,不熟悉,不胡说。

  然后设置防火墙:
pass in on ed0 proto tcp from any to 192.168.100.10 port 30000 >;< 50001 flags S keep state
#允许外部连接server的pasv端口范围
rdr ed0 211.97.116.21x/32 port 30001-50000 ->; 192.168.100.10 port 30001 tcp
#将该范围的端口重定向到ftp server
#注意:某些ftp server并没有proftpd这样的配置参数(比如ms iis里的ftp),
#将不能通过此方法解决问题,具体请查阅其说明书。

如果是使用iptables,就简单些:
#iptables modules
#modprobe ip_tables
#nat
modprobe iptable_nat
#connect_track
modprobe ip_conntrack

#ftp NAT,PASV,PORT command.
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
有ftp的DNAT支持模块,在规则里做21端口的DNAT重定向即可,conntrack会自动维护其中的PORT/PASSIVE关系。

  4).server --fw<->;fw -- client server和client都在防火墙后面:
      如果没有特别的方法,server和client之间将不能工作;解决的办法就是综合上述2).3)的方法,
在server的防火墙以及client的防火墙分别做相应的设置.

BTW:不单是ftp server,其他的某些服务也有类似问题,比如netmeeting(h323),pptp server,解决的思路也相似。

我是亿恩科技小路   qq  :1339268817   电话:0371-60135992
欢迎您的垂询!!!

亿恩科技云计算数据中心,机柜10M独享托管 代理年付只需 55000元

本文出自:亿恩科技【www.enkj.com】

河南亿恩科技股份有限公司(www.enkj.com)始创于2000年,专注服务器托管19年,是国家工信部认定的综合电信服务运营商。亿恩为近五十万的用户提供服务器托管、服务器租用、机柜租用、云服务器、网站建设等网络基础服务,另有网总管、名片侠网络推广服务,使得客户不断的获得更大的收益。 服务热线:400-723-6868 服务器/云主机 24小时售后服务电话:0371-60135900 虚拟主机/智能建站 24小时售后服务电话:0371-55621053
广告也精彩
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: