免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: xiao_root
打印 上一主题 下一主题

请教关于访问两层防火墙后面的ftp服务器问题 [复制链接]

论坛徽章:
0
21 [报告]
发表于 2010-01-11 16:11 |显示全部楼层
对不起,第一次到网上问问题,主要还是自己思路还没完全理清楚,表达起来就有点乱。
非常感谢老大的指点。
我的思路和老大的思路可能不一致,我实验的重点还是在数据包上,而默认墙和配置都是正确的。
现在我的问题暂时使用变通的方法解决了,还需要进一步的对ftp的源码和内核中ftp_nat的源码去了解一下;

论坛徽章:
0
22 [报告]
发表于 2010-01-11 16:26 |显示全部楼层
解决思路是:
通过从外网ftp客户端上进行抓包,重点对ls命令的包进行解析;同时在内网防火墙上和ftp服务器上抓包,对比在这个过程中数据包的异常;
在抓包的过程中发现:三处抓包地方都只有ls的“指令”传输的三个数据包,正常情况下,客户端应该再发送ls的“数据”传输请求,但没有;
通过对ftp服务器应答包的数据对比中发现,内网墙中数据包流经后,正常的打上ftp_nat的包内容,但外网的墙却没有,导致ftp客户端解析包出错;
考虑到是否和端口有关,后来试试在内网墙上转发21端口,欺骗一下外网墙,没想到竟然成功了,为什么成功,还是不解;
原来的数据走向是:外网ftp客户端=>外网墙的8221端口=>内网墙的8221端口=>ftp服务器的21端口
现在修改后的数据走向:外网ftp客户端=>外网墙的8221端口=>内网墙的21端口=>ftp服务器的21端口

论坛徽章:
0
23 [报告]
发表于 2010-01-11 16:31 |显示全部楼层
弱弱的问一下,老大在做两台墙的实验中,转发的端口是21,还是其他的?

无法解释,其他没有任何改动和变化,仅仅只是在内网墙中,把原来转发的8221,现在直接改为21,就正常了;
这样也带来了一个新的问题,如果内网墙后面另外的机器想在开ftp服务,内网墙就没有端口可以做转发了。

希望老大能给点解释和建议,或者説,真是我的内网墙配置有问题?

论坛徽章:
0
24 [报告]
发表于 2010-01-11 17:33 |显示全部楼层
原帖由 scorer1120 于 2010-1-11 16:58 发表
我看你得先搞清楚端口转发和FTP通信端口和数据端口的概念
开始又不说怎么做的端口转发,用抓包把问题复杂化了。


内网墙上的端口转发我采用的就是:iptables -t nat -I PREROUTING -m iprange --dst-range IP1-IP2 -p tcp --syn --dport 8221 -j DNAT --to-destination FTPIP:21
外网墙上是思科的配置,具体怎么写不知道,实际的工作模式就是把访问外网的8221端口数据转发给内网墙的8221端口,再由内网墙把数据转发给真正的ftp服务器的21端口;

FTP的通信端口和数据端口:对FTP还仅仅停留在使用上,深入的对东西不是太了解,只知道21和20,由于思科的墙不能随意动和配置,所以我更多的还只能依赖被动模式下来实现;

问题复杂化:还是没有经验导致,刚开始我把问题简单化了,认为是两台墙造成的结果,所以表达的不是很清楚,后来又没能理解老大的意思,又发了抓包的贴,把问题复杂化了。

是否ftp的端口转发,只能转发到21端口上,转发到其他端口会不行?

论坛徽章:
0
25 [报告]
发表于 2010-01-11 17:38 |显示全部楼层
两台墙,从内到外都是全放开的, 不存在防火墙上做了限制,从外访问内,都是通过端口转发的;
ftp的也只是开了一个端口转发:
外网墙:访问外网墙的8221端口转发给内网墙的8221端口上;
内外墙:访问内网墙的8221端口转发给ftp服务器的21端口;

这里只是把内网墙的8221端口改成21端口,即
外网墙:访问外网墙的8221端口转发给内网墙的21端口上;
内外墙:访问内网墙的21端口转发给ftp服务器的21端口;
就正常了。

我现在还是不明白的是,内外墙上的端口一定只能是21?还是我的墙配置出了问题?

论坛徽章:
0
26 [报告]
发表于 2010-01-12 10:51 |显示全部楼层
 Cisco 路由器针对这种情况有个解决的方法。就是显式告诉路由器,那些端口是 ftp 的端口:
  router(config)#ip nat service list 1 ftp tcp port 20010(非标准端口)
  router(config)#ip nat service list 1 ftp tcp port 21 (标准端口)
  router(config)#access-list 1 permit host 201.1.1.10 (对方Ftp Server 地址)

我们的思科防火墙是5540型号的,刚刚把你的帖子转发给我们的网管,他竟然説不支持ip nat命令,超郁闷;
没有玩过cisco的墙,俺也不懂。r2007大哥,能不能针对5540的型号,给个命令,谢谢了。

论坛徽章:
0
27 [报告]
发表于 2010-01-13 13:10 |显示全部楼层
非常感谢大家对小弟问题的热心,经过这么多天的折腾,终于搞明白了。
是我把问题复杂化了,我这个问题实际上就是典型的非标准端口的ftp的应用,一开始被两层防火墙误导了。

论坛徽章:
0
28 [报告]
发表于 2010-01-13 13:23 |显示全部楼层
基本思路:
由于小弟的ftp服务器是对方开放的,无法知道客户端的环境,因此只能采用被动模式
为了支持被动模式下非标准端口的ftp应用,ftp服务器做如下设置:
增加对pasv_ip和pasv_port的参数设置(在linux下的vsftp即增加pasv_min_port、pasv_max_port、pasv_address);pasv_ip必需设置为公网的IP,pasv_port端口范围我这里设置的为:60000~60009;
两台防火墙上其他所有设置不变,只要新增pasv_port端口范围的地址转发(或映射)功能即可;
映射:
  外网防火墙的8221端口=>内网防火墙的8221端口=>ftp服务器的21端口
  外网防火墙的60000端口=>内网防火墙的60000端口=>ftp服务器的60000端口
  外网防火墙的60001端口=>内网防火墙的60001端口=>ftp服务器的60001端口
  外网防火墙的60002端口=>内网防火墙的60002端口=>ftp服务器的60002端口
  外网防火墙的60003端口=>内网防火墙的60003端口=>ftp服务器的60003端口
  外网防火墙的60004端口=>内网防火墙的60004端口=>ftp服务器的60004端口
  外网防火墙的60005端口=>内网防火墙的60005端口=>ftp服务器的60005端口
  外网防火墙的60006端口=>内网防火墙的60006端口=>ftp服务器的60006端口
  外网防火墙的60007端口=>内网防火墙的60007端口=>ftp服务器的60007端口
  外网防火墙的60008端口=>内网防火墙的60008端口=>ftp服务器的60008端口
  外网防火墙的60009端口=>内网防火墙的60009端口=>ftp服务器的60009端口

论坛徽章:
0
29 [报告]
发表于 2010-01-13 13:29 |显示全部楼层
发点ftp的基本资料,希望对小弟和其他初学者有用

    FTP是仅基于TCP的服务,不支持UDP。 与众不同的是FTP使用2个端口,一个数据端口和一个命令端口(也可叫做控制端口)。通常来说这两个端口是21-命令端口和20-数据端口。但当我们发现根据(FTP工作)方式的不同数据端口并不总是20时,混乱产生了。
    在主动模式下,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:
       命令连接:客户端 >1023端口 -> 服务器 21端口
       数据连接:客户端 >1023端口 <- 服务器 20端口
    被动FTP:
       命令连接:客户端 >1023端口 -> 服务器 21端口
       数据连接:客户端 >1023端口 -> 服务器 >1023端口
    下面是主动与被动FTP优缺点:
    主动FTP对FTP服务器的管理有利,但对客户端的管理不利。因为FTP服务器企图与客户端的高位随机端口建立连接,而这个端口很有可能被客户端的防火墙阻塞掉。
    被动FTP对FTP客户端的管理有利,但对服务器端的管理不利。因为客户端要与服务器端建立两个连接,其中一个连到一个高位随机端口,而这个端口很有可能被服务器端的防火墙阻塞掉。
    幸运的是,有折衷的办法。既然FTP服务器的管理员需要他们的服务器有最多的客户连接,那么必须得支持被动FTP。我们可以通过为FTP服务器指定一个有限的端口范围来减小服务器高位端口的暴露。这样,不在这个范围的任何端口会被服务器的防火墙阻塞。虽然这没有消除所有针对服务器的危险,但它大大减少了危险。

论坛徽章:
0
30 [报告]
发表于 2010-01-13 13:31 |显示全部楼层
现在的防火墙中大多数都已增加了ip_nat_ftp及ip_conntrack_ftp的模块,用于对被动模式下ftp数据端口的映射,这里有个问题在于,只能针对的是ftp服务器的端口是标准的21;如果ftp侦听的端口不是标准端口21或者其他的非21端口的ftp应用都将无法正常工作;只能采用设置pasv_port和pasv_ip参数的形式;
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP