排除代理防火墙连接故障的技巧
2008-09-04 12:13:46 来源:WEB开发网随着客户机和服务器之间安装更多的代理防火墙,排除连接故障比以前更复杂了。然而,稍微了解一些传输控制协议(TCP)“握手”的过程有助于诊断包括代理防火墙在内的连接问题。
首先,对于自从我们最后一次推出网络课程之后长出白发的我们当中的一些人来说,让我们复习一下TCP握手是如何工作的。TCP是一个面向连接的协议。在一对设备之间发生任何通讯之前,这些设备之间的双向通道必须要打开。这是通过使用包含标记的特殊数据包实现的。一个这种标记是SYN(同步)标记,用来指示一个连接请求,同时ACK标记确认一个连接已经打开了。
完整的三次握手如下图所示:
首先,客户机向服务器发送一个SYN数据包。服务器收到这个数据包之后将编辑一个回答数据包。这个服务器打开ACK标记确认客户机通讯的请求。然后,服务器打开SYN标记请求相对方向的一个通讯频道:从服务器到客户机。当客户机收到这个SYN/ACK数据包之后,它必须回复一个ACK数据包确认服务器-客户机连接请求。在这个时候,客户机和服务器也许就可以双向通讯了。
然而,代理防火墙把自己注入到这些过程之间从而影响正常的TCP握手。见下图:
客户机连接到代理防火墙,以为他们已经与服务器建立了连接。这个代理防火墙然后代表这个客户机打开一个单独的与服务器的连接。这种独特的方法在客户机与服务器之间提供了一个增加的隔离层,并且允许防火墙调节这个会话,也许检查应用层通讯中潜在的恶意内容。
代理防火墙的存在使排除客户机与服务器之间的连接故障更复杂了。为了诊断一个故障,需要对防火墙的两边都进行监视。我们需要一个查看防火墙外部通讯的外部监视设备,还需要一个查看防火墙的每个内部接口的内部监视设备。让我们看几个普通的连接问题以及它们在tcpdump输出中是如何出现的。我们的所有例子都将使用上面解释的连接情况。需要指出的是web服务器有两个IP地址:192.168.3.150是服务器在有防火墙的局域网内部的服务器专用地址。10.0.0.120是暴露给世界的公共地址。
第一种情况:服务器问题
服务器可能由于拒绝服务攻击、设置错误、成功的黑客攻击或者其它原因出现连接问题。在这些情况下,因为防火墙工作正常,防火墙外部将出现一个完整的三次握手。输出的数据看起来就像下面那样:
19:24:36.959777 IP 10.1.1.16.1450 > 10.0.0.120:80: S 735906036:735906036(0) win 16384
19:24:36.987938 IP 10.0.0.120:80 > 10.1.1.16.1450: S 3607622985:3607622985(0) ack 735906037 win 8190
19:24:36.987961 IP 10.1.1.16.1450 > 10.0.0.120:80: . ack 1 win 17640
注意:为了你的方便,SYN和ACK都用了黑体字。这是一个合适的三次握手。问题将出现在防火墙和Web服务器之间。如果服务器坏了或者没有反应,指示器信号将是从防火墙发到服务器的一系列SYN数据包,如下所示:
19:22:40.214672 IP 192.168.3.124.1439 > 10.0.0.120.80: S 4182454:4182454(0) win 16384
19:22:43.154580 IP 192.168.3.124.1439 > 10.0.0.120.80: S 4182454:4182454(0) win 16384
19:22:43.154580 IP 192.168.3.124.1439 > 10.0.0.120.80: S 4182454:4182454(0) win 16384
19:22:43.154580 IP 192.168.3.124.1439 > 10.0.0.120.80: S 4182454:4182454(0) win 16384
19:22:43.154580 IP 192.168.3.124.1439 > 10.0.0.120.80: S 4182454:4182454(0) win 16384
第二种情况:防火墙问题
根据具体问题,防火墙问题也许以不同方式显示自己。如果防火墙完全坏了,从防火墙向服务器的公共地址将有一系列没有应答的SYN数据包。这些数据包将出现在外部监视器上,在内部监视器上将不会显示相关的通讯。
另一方面,如果防火墙的规则设置不正确,外部监视器也许会显示一种合适的三次握手。内部监视器也许不会显示出任何通讯。
第三种情况:应用程序问题
如果在内部和外部监视器上都显示出了合适的三次握手,防火墙的问题一般可以排除。在这种情况下,最可能原因是应用程序本身的问题。例如,攻击者也许会攻破这个应用程序和改变其行为,这个服务也许配置错了或者客户机也许做出了一个非法的请求。
这些情况不能包括一切。它不可能涉及到一切可能的排除故障的情况。这就是说,这些例子为诊断具有代理防火墙的连接问题提供了一个极好的起点。
更多精彩
赞助商链接