网络防火墙功夫深入到第七层
作者:
应用层攻击挑战传统防火墙
最近两年来,攻击者的兴趣明显从端口扫描和制造拒绝服务攻击(DoS Attack)转向了针对Web、E-mail甚至数据库等主流应用的攻击。传统的防火墙仅仅检查IP数据包的包头,而忽略了内容——如果用信件来做比喻,也就是只检查了信封而没有检查信纸。因此对这类应用层的攻击无能为力。可以说,仅仅靠第三层和第四层的IP地址和协议端口过滤的防火墙产品早已走到了尽头。
战火烧向七层
为了对抗应用层(OSI网络模型的第七层)的攻击,防火墙必须具备应用层的过滤能力,一些防火墙产品已经具备了这种能力。
如果把计算机网络比做一座建筑,传统的包过滤防火墙就是在企业内部网络和Internet之间的一系列并列的门。每道门都有安检人员对到达的包裹(IP数据包)进行逐一检查,若没有发现数据包含有异常代码便开门放行。攻击者常用的伎俩就是通过端口扫描来检查哪些门是敞开不设防的,然后加以利用。晚些时候出现的具有状态检测功能的防火墙可以检查哪些数据包是来自Internet对内部网络访问请求的应答。也就是说,安检人员能够鉴别那些不请自来的包裹。
但应用层攻击就要复杂得多,因为攻击数据包在绝大多数情况下是合法的数据包,不同的只是内容具有攻击性,而且因为IP数据包是分段传输的,其内容的判别需要将所有相关的包重组后才能准确进行。一旦这种攻击数据包通过了防火墙,它们通常会开始有条不紊地利用目标系统的漏洞制造缓冲区溢出,获得系统的控制权,然后以此为平台开始寻找周围其他系统的漏洞或者其他的蠕虫留下的后门,进而展开攻击。
防火墙的对策
对此,一些防火墙产品采取的应对措施是,针对每一类主流的应用, HTTP、SMTP、FTP和SQL Server数据库访问(基于RPC)都设置专门的过滤器,如果未来出现新的应用层威胁,还可以增加相应的过滤器。用户可以针对每一种过滤器进行应用相关的过滤设置,例如,可以通过限制任何HTTP访问请求的缓冲区不得超过3000个字节来防止一些蠕虫的攻击。在这种新的机制下,来自Internet的数据包被发送到各自的过滤器,过滤器会将数据包重组后进行内容扫描和判别。拿一封邮件来说,SMTP过滤器会等待相关的包到齐后,在转发之前重组邮件对其内容进行扫描,与已知类型的攻击进行比对,在确认这是正常流量后才允许通过。
经过正确配置的现代防火墙可以阻挡绝大多数已知的病毒邮件和攻击代码。虽然阻挡未知的病毒和攻击要困难得多,但是经过合理的策略设置通常是有效的。正确设置策略的基础是企业用户对于自身业务需求的正确理解,例如,多数企业的用户通常是没有必要通过邮件来传递可执行文件和Visual Basic脚本代码的。用户可以通过阻断含有这类可执行附件的邮件来对付一些未知的病毒。一旦真的需要发送这类文件,也可以设置更有针对性的策略,比如只允许IT部门的用户发送含有可执行文件附件邮件,或者允许用户接收除含有名为“Kournikova.jpg.vbs”的脚本附件之外的所有邮件。
安全与性能的矛盾
用户早已习惯于把安全性和性能看成是对立的,就像在机场的安检入口,检查的步骤越多,等待安检的队伍也就越长。对于防火墙来说,性能和安全的确是一对永远的矛盾,但是应用层过滤的功能对防火墙性能的影响并没有多数用户想象得那么大,一些防火墙标称每秒钟可处理超过1000个并发用户,同时保持每会话(session)27Mbps的吞吐量。事实上,有些厂商通过硬件(ASIC)实现应用层的过滤引擎,能够达到更加接近线速(可理解为以太网交换机的处理极限)的处理能力。
新的挑战
具有应用层过滤功能的防火墙可以更有效地阻挡当前多数病毒和攻击程序,但新的安全威胁的不断出现又对防火墙提出了新的挑战。攻击的来源正在变得更加复杂,而攻击的手段也愈加高明,最近垃圾邮件与攻击代码的结合就是一个典型的例证。这一方面需要防火墙设备对于应用层的内容有更好的认知和智能判别的能力,另一方面也需要防火墙更多地与其他的安全设备和应用有效配合,从而实现更加有力的防护。