| 网络攻击几乎是从互联网络的诞生以来伴随着互联网络的发展而一直存在也不断发展和升级。2000年年初的Yahoo、CNN、eBay等大型网站被攻击,2002年10月全球13台互联网域名解析器被Dos的变种DDos攻破,险些造成全球互联网的崩溃。作为一种安全防护设备,防火墙在网络中自然是众多攻击者的目标,因此防御攻击能力是防火墙必备的功能。
中科网威信息技术有限公司研发的防火墙提出了一种基于LINUX平台,数据包过滤与透明代理相结合复合型防火墙的解决方案。
一、目前防网络攻击技术分析
目前的国内外流行的防火墙产品主要分两大类:基于代理服务方式和基于状态检测方式的。
以世界著名的Check point 公司为代表的基于Unix、WinNT平台的软件防火墙属于状态检测型,综合性能较为优秀,速度都很快,对用户很透明。然而包过滤只看这些基本信息只能知道包从哪儿来到哪儿去而不检查包的内容,不知道数据包之间的关系。例如TCP连接是通过TCP头中ACK位实现的,在没有连接的情况下具有ACK位的包也能通过这种过滤。改进的状态包过滤方式虽然克服了简单包过滤的缺点,通过状态表来判断连接是新创建的还是已经存在的连接可以简化规则;识别伪装成已经存在连接的虚假连接。然而由于状态包过滤只能基于包头信息的检查它,不能识别畸形的HTTP连接或者有意的IP重叠,而且它对包内容的检查级别比较低,这是包过滤体制不可克服的问题。
以AXENT Raptor公司为代表的基于应用层的代理防火墙可以克服状态包过滤的缺陷,对于畸形的包例如IP头标志畸形透明代理防火墙可以不让其通过,又由于代理防火墙从新建立与客户端的连接,可以检查连接状态而不是简单的拷贝这些数据,例如假设对于超长的URL会产生缓冲区溢出,可以检查到这个超长的URL报错并丢弃它。然而代理防火墙大大降低了防火墙的性能,包括吞吐量、时延、并发连接数等,都大受影响。
二、包过滤与代理相结合模型的提出
为了达到更高安全性的要求,需要把基于包过滤的方法与基于应用代理的方法结合起来,形成复合型防火墙产品。这种结合通常是以下两种方案: 屏蔽主机防火墙体系结构、屏蔽子网防火墙体系结构,这两种方案都需要一台堡垒主机与分组过滤路由器进行组合,黑客入侵的难度大增加了但是吞吐量会受到影响,增大了防火墙系统成为瓶径的可能性,降低了系统的可用性。
本系统根据最新一代防火墙的发展趋势在linux平台下有机的综合了状态检测与透明代理技术,在一个操作系统上组成了三级过滤防御体系,在网络层利用数据包过滤模块检测包头的内容,可以将带有欺骗性源地址的包过滤掉,有效的防御拒绝服务攻击,在应用级网关根据不同的协议重定向到不同的代理,代理模块验证连接协议是否与RFCs协议相一致。在电路网关一级内部主机和外部站点透明连接,策略模块采用根据自身需要设置的安全策略对包进行检查。

图1 包过滤与代理相结合防御网络攻击模型
三、包过滤与代理相结合模型的实现
1、包过滤的实现
包过滤技术作为作为防火墙的应用有三类:一是路由设备在完成路由选择和数据转发之外,同时进行过滤;二是在工作站上使用软件进行包过滤;三是在屏蔽路由器设备上启动包过滤功能 。后两种造价太高,本系统采用第一种方法。
Netfilter是Linux2.4实现的防火墙框架,提供了一个抽象、通用化的框架,该框架定义一个子功能实现的就是包过滤子系统 。数据包过滤系统是一种功能强大的工具,可用于添加、编辑和除去规则,这些规则是在做数据包过滤决定时,防火墙所遵循和组成的规则。这些规则存储在专用的信息包过滤表中,而这些表集成在 Linux 内核中。在信息包过滤表中,规则被分组放在链(chain)中 。
iptables 组件是一种工具,也称为用户空间(userspace),它使插入、修改和除去信息包过滤表中的规则变得容易。
通过使用用户空间,可以构建自己的定制规则,这些规则存储在内核空间的信息包过滤表中。这些规则具有目标,它们告诉内核对来自某些源、前往某些目的地或具有某些协议类型的信息包做些什么。如果某个信息包与规则匹配,那么使用目标 ACCEPT 允许该信息包通过。还可以使用目标 DROP 或 REJECT 来阻塞并杀死信息包。对于可对信息包执行的其它操作,还有许多其它目标。

图2 包过滤过程
2、代理的实现
从代理技术上讲,一般具有一下两种代理:传统代理和透明代理 。代理防火墙与包过滤防火墙本质的区别就是从客户端到代理服务器和从代理服务器到客户端是两个完全独立的过程,它将客户端请求间接传递给服务器,与目标服务器建立单独的连接,它不处理数据包包也不转发据包,它以字节流的形式接收连接,解析并验证连接所采用协议元素的内容,在安全策略允许的情况下与服务器建立连接,这样可以对数据包的内容进行细致的分析。

图3 代理服务器工作过程
本系统采用透明代理技术,透明代理和传统代理一样,可以比包过滤更深层次地检查数据信息,比如FTP包的port命令等。同时它也是一个非常快的代理,从物理上分离了连接,这可以提供更复杂的协议需要,例如带动态端口分配的H.323,或者一个带有不同命令端口和数据端口的连接。这样的通信是包过滤所无法完成的。防火墙使用透明代理技术,这些代理服务对用户也是透明的,用户意识不到防火墙的存在,便可完成内外网络的通讯。当内部用户需要使用透明代理访问外部资源时,用户不需要进行设置,代理服务器会建立透明的通道,让用户直接与外界通信,这样极大地方便了用户的使用。
透明代理可以做到内外地址的转换,屏蔽内部网的细节,使非法分子无法探知内部结构。透明代理提供特殊的筛选命令,可以禁止用户使用容易造成攻击的不安全的命令,从根本上防火墙使用透明代理技术,还可以使防火墙的服务端口无法探测到,也就无法对防火墙进行攻击,大大提高了防火墙的安全性与抗攻击性。透明代理避免了设置或使用中可能出现的错误,降低了防火墙使用时固有的安全风险和出错概率,方便用户使用,抵御攻击。

图4 对数据的检查过程
3、应用代理与策略层的实现
应用策略层代理程序使用组件化,面向对象,事件驱动的方式,使用面向对象脚本语言Python调用,灵活的制定代理安全策略。例如对URL请求进行限制可在代理类的基础上先定义一个隐藏浏览器HTTP代理类: class HttpProxyAnonimize(HttpProxy):
def config(self): HttpProxy.config(self) self.request_headers["User-Agent"] = /(HTTP_HDR_CHANGE_VALUE,"Mozilla 5.0") 在定义服务策略时引用该类: def intra(): Service('intra_HTTP',HttpProxyAnonimize) Listener(SockAddrInet('192.168.0.254', 50080), 'intra_HTTP')
在次类基础上可以进一步扩展成URL请求的限制:
class HttpProxyAnonimize(HttpProxy):
def config(self): HttpProxy.config(self) self.request_headers["User-Agent"] =/(HTTP_HDR_CHANGE_VALUE,"Mozilla 5.0") self.request_headers["Referer"]=/(HTTP_HDR_POLICY, self.rewriteReferer) def rewriteReferer(self,name, value): self.current_header_value = self.request_url return HTTP_HDR_ACCEPT 限于篇幅有限其他实例不再一一列举。
代理服务程序采用可嵌套模块调用方式,不同协议的代理可以相互嵌套使用,代理程序可以分析嵌入在主协议里的子协议,例如在传输层SSL协议提供私有保密服务,SSL协议可以将一些不安全的协议如HTTP或POP3嵌入其中来保护它们,代理嵌套方式可以满足这种嵌入,目前很多公司的防火墙不允许用HTTPS连接,因为HTTPS的内容是加密的数据包不能被完全检查,很容易被人利用来进行攻击,然而不允许SSL协议通过防火墙有很大的缺陷,很多信息就得用明文发送.嵌套方式可以在SSL代理上嵌入HTTP代理来建立连接,保证HTTPS连接在内容保密的情况下确保连接可控。
网威防火墙内部工作过程充分利用了数据包过滤检测速度快与透明代理检查细致的特点,提出了三级防御网络攻击的解决方案,在分组过滤一级过滤数据包头信息,在应用网关一级控制和检测网络提供的所有服务,在电路网关一级,实现内部主机与外部站点的透明连接,并对服务的通行进行严格控制,既可以有效防御拒绝服务攻击又可以防范以改变数据内容形式的应用级攻击。符合最新一代防火墙的发展趋势,在实际应用中防御能力上强于单一类型的防火墙。 【转自世纪安全网 http://www.21safe.com】
|