选择高档完备的网络安全设备是每一个成功企业必不可少的组网设施,但是实际上更多网络中存在的威胁来自于企业内部,因此仅仅保护网络组建的边界是远远不够的,建立一个一体化、多层次的安全体系结构可以提供更为彻底和实际的保护,提高企业内部安全防范意识才是解决企业网络安全的重中之中。
PIX防火墙简介
PIX(Private Internet Exchange)防火墙是Cisco产品系列中称得上佼佼者的防火墙产品。PIX防火墙可以部署到各种各样的设计方案中。简单的情况如下,PIX防火墙可能只有两个接口,一个接口连接至受保护的内部网络(内部接口),而另一个接口则连接到公共网络(外部接口),一般来说就是指因特网。这里所谓的内部和外部具有特别的意义,且各个接口在PIX防火墙配置中分别被命名为Inside接口(内部)和Outside接口(外部)。
为了让公司能够利用与因特网的连接,通常某些服务器必须对于外部世界是可访问的,这些可访问的服务器包括DNS、SMTP以及企业能够拥有的任何公用Web服务器。DNS服务器必须是可访问的,这样才能将主机名字转换成可用于数据报寻址的IP地址。虽然这些服务器可以放在防火墙之后的内部网络中,但是强烈建议不要这样做。因为这些主机中的任意一台受到侵害后,都会导致入侵者能够方便的访问到内部网络。而如果这些服务器放置在DMZ中,则PIX防火墙能够允许内部用户不加限制的访问这些主机,而同时限制外部用户来访问这些主机。
从市场所占份额来说,状态数据报防火墙是主导类型的防火墙产品。大多数的市场都显示,PIX防火墙或Chechpoint软件公司的Firewall经常占据市场中的第一位。在PIX防火墙的具体配置中共有58个PIX独有特性,这些特性中有些功能非常明显,而有些却略显隐蔽;有些特性是默认启动的,而有些则需要手动进行配置。下面我们就来看下一些在企业组网中需要特别“关注”特性的配置方法,以便充分利用PIX防火墙,为企业网络提高安全系数。
手动配置TCP Intercept
思科从IOS 11.2版本中首次在路由器产品中引用了TCP Intercept(TCP截获)特性,在PIX5.2以上版本中也引入了相同的特性,这个功能特性虽然是默认启用的,但是仍需要一些手动设置。
该特性能够为隐藏在防火墙后的主机设备提供保护,抵御成为“SYN泛洪”的特定类型网络攻击。使用SYN泛洪,攻击者通过好像发自不存在或不可达主机的连接请求,有效的使受害系统负荷过重,从而达到拒绝向目标主机提供服务的目的。SYN防洪巧妙的利用了操作系统为每条新的TCP连接请求分配内存和其他资源的原理。即使主机和服务器能够支持大量的连接,它们所能处理的未完成连接的数目仍然是有限的。
由于TCP是双向和全双工的,所以它在两个方向上都要建立连接。为了建立从服务器到客户端的连接,服务器设置SYN位并包括他自己的顺序号以便请求建立从服务器到客户端的连接,服务器设置SYN位置承载对来自客户端的初始连接请求的确认(ACK位)的分段重并发送给客户端。此后,服务器等待第3步:从客户端发来的对服务器到客户端的连接请求的确认。这个过程通常被成为TCP的“3次握手”。
如果应答者服务器没有在特定的TCP时间间隔内接收到应答,那么服务器会重传设置有SYN和ACK位的分段。根据具体的TCP实现,重传的次数一般是4次,重传的时间间隔开始是1秒,然后一次加倍。如果服务持续的接受连接请求,那么资源可能很快就会被这些半开放的请求耗尽,这样就不能再接受其他传入请求,从而拒绝了那项服务。
TCP Intercept通过启用此特性实现保护的主机设备截获连接,以及对连接请求进行应答来解决这个问题。它代表客户端建立了从PIX到受保护的主机的第二条连接。如果客户端正常的完成连接,那么PIX防火墙透明地将这两条连接结合在一起,最后的结果是建立了一条在客户端和服务器之间的直接连接。
PIX防火墙使用了更短的超时时间间隔,而且如果在这个时间间隔内连接没有完成,那么PIX就会放弃与客户端的未完成连接,并且向受保护的服务器发送RST位,结束PIX到服务器的连接,从而释放掉服务器资源。除了更短的超时之外,TCP Intercept还加入了可配置的阈值。阈值会对连接总数以及最近1分钟内的连接速率进行监控。如果这两个指标中任何一个超过了阈值,TCP Intercept都会从最久的连接开始断掉半开放的连接,知道连接的数目或速率降到阈值以下。
在PIX防火墙上,半开放连接称作初期连接。阈值可以通过static命令的可选参数进行设置。阈值默认值为0,这样就有效的禁用了TCP Intercept。而若将这些初期连接参数设置为任何非零数值,就可以启用TCP Intercept。它有效的替代了称作Flood Defender的旧PIX特性。这个旧特性只允许对每个主机和服务上的初期连接总数进行限制。
PIX特殊应用配置
PIX防火墙支持很多需要某种特殊形式处理的标准或普通应用,其中一些要求对ASA状态表所维护的信息作一些修改,以便在状态数据报过滤环境中可以使用。另外一些由于被NAT修改了IP地址,所以可能需要对一个或多个上层协议头字段进行调整。还有一组并不遵循所期望的发送者和接受者交换的对称模式。对于大多数应用来说,客户端和服务器之间交换的IP数据报具有相同的源和目的IP地址以及TCP/UDP端口号,只不过每次交换过程中发送者和接收者的角色正好相反。接下来我们将对这些特殊情况进行详细介绍。
1、 Java Applet封锁
PIX防火墙使得网络管理员能够过滤掉可能有害的Java小程序。可以根据内部客户端的源地址、外部服务器的目的地址,或者同时根据两者,来对Java过滤进行定义。命令语法中包含反掩码,它可以用来定义单个的地址或地址范围。当启用了Java过滤后,PIX防火墙就会搜索含有Java小程序标记(十六进制字符串0 x CEFE BABE)的http数据报。
启用Java过滤的配置命令的一个实例如下:
Filter java 80 10.1.1.0 255.255.255 0.0.0.0.0.0.0.0
对上面命令的解释如下:如果访问端口80,那么子网10.1.1.0(一个较为安全的接口)中的所有客户端都会禁止从安全性级别较低的接口商的任何主机(0.0.0.0.0.0.0.0)上下载Java小程序。这里的0.0.0.0.0.0.0.0 也可以缩写称0 0
2、ActiveX
与ActiveX有关的网络安全问题类似于Java问题。ActiveX控件由可嵌入到Web页中的对象组成,这些空间能够下载到客户端计算机中运行。ActiveX的过滤可以通过注释掉HTML<object>命令的引用来实现。所用到的命令语法实际上与Java过滤使用的命令相同,只不过是用filter activex…代替了filter java…。
3、 URL过滤
利用与Websense公司合作,Cisco提供了将Websense的Open Server内容过滤服务器与PIX防火墙配合使用的能力。Websense被很多组织用于设置和增强作为网络安全策略的一个组成部分的因特网访问策略(IAP)。Websense利用一个由超过150万的站点构成的主数据库对因特网内容进行过滤。对访问的拒绝(封锁)可以根据用户、团体或者时间来设置。
URL过滤允许PIX防火墙将Websense服务器定义的IAP出站用户所请求的URL进行比较。下面的例子使用地址为10.2.2.2的Websense服务器过滤掉除子网10.1.1.0上的用户之外的所有出站访问。第3行只在例外情况时才需要,否则它是可选的。
url-server host 10.2.2.2
filter url http 0000
filter url except 10.1.1.0 255.255.255.0
控制通过PIX防火墙的流量
由于防火墙的主要目的是封锁,至少是要控制对受保护网络的访问,所以应当关注的是传入的数据报。把传入流量或入站流量定义为从安全性较差的接口进入PIX防火墙和从安全性较高的接口离开PPIX防火墙的数据报。类似的,把传出流量或出站流量定义为从安全性较高的接口进入PIX防火墙和从安全性较差的接口离开PIX防火墙的数据报。其中只有一个接口被命名为Inside(安全级别=100),也只有一个接口被命名为Outside(安全级别=0)。这是因为在所有接口中,这两个接口是永远分别处在最内部和最外部的。根据具体的安全级别,其他DMZ或外围接口相对于另外的接口可能是内部的,也可能是外部的,但是他们相对于Inside接口而言总是外部的,对于Outside接口而言则总是内部的。
在PIX防火墙5.2之前的版本中,用来定义允许流量的协议参数的命令是conduit命令。Conduit命令的语法看起来非常像扩展访问列表所使用的格式,不过在命令的语法中,源地址和目的地址的位置正好相反。从5.2版本开始,传统的扩展访问列表代替了conduit命令。目前,尽管Cisco推荐使用新的格式,但是实际上这两种命令格式都可以使用。
为了对去往这些服务器的流量定义相应的通道,可以规定服务器的IP地址作为目的地址,并规定HTTP、DNS和SMTP作为目的端口号,但是通常并不知道源地址和源端口号。下面是一个访问列表的例子,在这个例子中,IP地址为10.1.1.1的服务器能够提供所有3种服务。
Access-list dmz permit tcp any host 10.1.1.1 eq http
Access-list dmz permit tcp any host 10.1.1.1 eq smtp
Access-list dmz permit tcp any host 10.1.1.1 eq domain
上面所列方法就举例而言是已经足够了,但是在安全方面还要进一步设置。因为并不能预知外部用户将使用哪些源IP地址和源端口,所以必须在ACL中规定允许使用所有的原地址和源端口。