2009年5月14日星期四

视频会议流量穿越ASA问题后续原理解释


ASA/PIX系列从6.3开始就有监控引擎了,这个监控引擎的作用
1,通过协商动态分配连接资源,自动生成conn,xlate以及ACL
2,监控应用层的一些命令(安全保护)

我先解释下ASA/PIX的处理过程
当一个数据包到达ASA并请求一个连接时,ASA检查自身的ACL,如果允许这个连接,就创建一个连接项(CONNECT),然后ASA进程查找自身的(inspection)数据库,确定是否需要对此连接进行特别的处理,应用检查对数据包进行必要的修正(fixup),然后再传给目的地,会话建立成功,ASA会将识别出属于此绘画的后续数据包进行转发处理。

比如FTP,FTP是资格特殊的应用,它是用21作为目的端口,但回应的时候会用到随机端口号
client--------in-ASA-out-------ftp server
1,客户端用tcp 21端口号去连接服务器,这是第一信道,它的作用是用户认证,罗列清单(有些什么文件),同时在第一信道理包含了PORT字段告诉服务器你来连接我的什么地址,还有端口号(这个端口号是cilent随机产生的)
2,第二信道是由服务器主动发起的,但是由于此时外部进来的数据目的地址的端口号是内部client告诉ftp服务器的随机端口号,而一般我们配置outside的in方向列表是只会放些知名的端口号,而此时这个随机目的端口号的流量是无法进入内网的,所以会被丢弃,这就造成了FTP无法通过ASA

解决方案
CISCO在7.X里使用inspect ftp来解决这个问题,它的原理就是当client告诉服务器你来连接我的什么地址,还有端口号时,ASA通过7层监控来监控这个请求,这样ASA可以看到里面的client产生的随机端口来放行回来的流量


eve的解决办法
由于7.0(6)的inspect H323出现了某些问题,导致无法使回来的流量过ASA,所以只能手动来监控
1,由于我关闭了inspect H323,必须要手动做出动态放行端口的动作,所以使用如下命令
established TCP 1720 0 permitto UDP 16384 32767 permitfrom UDP 16384 32767------(里面德0表示any)
命令意义:源是any目的是1720出去的时候,放开回来的udp 16384-32767端口号

命令的意义动态放端口命令
establish A B C permitto D E permitfrom D F
使用协议A(TCP|UDP)目的端口B,源端口C,那么就允许回来的协议是D(TCP|UDP)目的端口是E,源端口是F的流量回来


2,打开inspect XDMCP
因为这个established命令需要打开这个做支持,单其实默认是打开的,这里只是提一下

为什么使用udp 16384 32767
答:因为H323会使用H225的TCP 1720来创建TCP初始化连接,然后使用H.225来协商最后RTP流使用的UDP端口号(RTP的端口号是协商出来的),而RTP得端口号是16384-32767里的偶数端口,这个端口+1后的奇数端口就是给RTCP用的,所以要放回这个范围的端口号

加上如上命令后,H323就正常了,但是这个理论上讲ASA应该不用配置就能让H323过的,可能是BUG吧,但是有一点,ASA的监控引擎毕竟支持的协议还是有限,如果你的客户那里遇到了ASA不支持的协议,而且正好这个协议的很多端口号需要协商的时候,这个命令正好有用,^_^CISCO还是为自己留了后路了,感觉还是蛮使用的,在此公享给大家,手酸死了,不敲了,有疑问可以继续跟贴问哦

0 评论: