应用防火墙:一点一点地砌

日期: 2008-08-18 作者:Shawn Moyer翻译:李娜娜 来源:TechTarget中国 英文

没有应用防火墙的预算?那么使用开源组件来构建你自己的应用防火墙吧。   HTTP正迅速成为任何以及所有商业逻辑的默认传输。随着网络服务和面向服务架构的出现,XML已经成为一个粘合体,它将完全不同的应用程序和数据类型结合到一起。网络入口、内容管理系统、以及甚至企业博客和wikis正成为首选的通信1渠道。

  但是,保护网络应用程序是一场艰难的战斗。虽然,传统的网络安全防御已经集中于OSI(开放式系统互联)的前四层,但是,根据定义,大多数网络应用程序开发是通过代理器和防火墙的有效HTTP信息流。   该怎么办呢?你当然可以购买一个商业网络应用防火墙产品,但是,也许你不能(或者不会)在预算中添加另一……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

没有应用防火墙的预算?那么使用开源组件来构建你自己的应用防火墙吧。

  HTTP正迅速成为任何以及所有商业逻辑的默认传输。随着网络服务和面向服务架构的出现,XML已经成为一个粘合体,它将完全不同的应用程序和数据类型结合到一起。网络入口、内容管理系统、以及甚至企业博客和wikis正成为首选的通信1渠道。

  但是,保护网络应用程序是一场艰难的战斗。虽然,传统的网络安全防御已经集中于OSI(开放式系统互联)的前四层,但是,根据定义,大多数网络应用程序开发是通过代理器和防火墙的有效HTTP信息流。

  该怎么办呢?你当然可以购买一个商业网络应用防火墙产品,但是,也许你不能(或者不会)在预算中添加另一个年许可更新。另一个选择就是使用免费的开源工具,解析、重写并过滤HTTP信息流,以预防应用层攻击,进而构建一个网络应用防火墙。你不会获得商业解决方案的所有功能。但是,你将在因特网所面临的网络服务和应用程序前面,添加一个亟需的保护层。

  坚实的基础

  网络应用防火墙将完美地处在因特网所面对的防火墙之后,充当着所有网络信息流的唯一出入路径。使用强化的Unix或者Linux平台,比如OpenBSD有堆栈保护、最小安装和积极的源代码审计。Bastille也是一个出色的强化工具,可用于大多数Linux的相关产品。

  由于防火墙会解析所有的网络信息流,负载会大大高于典型的代理器。你需要尽可能大的CPU,此外还有大量的RAM。你可以构建一些备用的网关,并在多个安全网关前端使用HTTP负载均衡器。

  然而,得出这样一个解决方案是复杂的。作为网络IDS或者IPS配置,你配置中的规则数量、进入站点的信息量、以及重新编写和解析操作的复杂度都会影响到性能。

  此外,良好的凭经验的方法可以保证您的网络应用防火墙与您最繁忙的网络服务器一样大。由于性能会因你的组织所使用的应用程序类型的不同而异,所以在任何生产制造之前,准备好调试、测试以及基准。

  所需知识

  作为网络应用防火墙构建者,你需要有一个坚实的Unix/Linux背景知识,以及对网络应用程序、网络攻击、和HTTP协议有扎实的了解。会有一些感觉像网络开发:你需要进行测试,并确保过滤不会影响任何网络应用程序,并运行诸如Nikto (www.cirt.net)之类的网络扫描工具,进而对比原始内容和代理内容。

  你应该了解指令行周围的方式,并熟悉Apache配置语法,进而下载所需要的程序块,创建安全规则和过滤表达式。你会发现采用规则表达式(通常用于Snort规则中)工作的良好舒适程度也将派上用场。

  现在,我们来探讨一些开源组件,你可以用来构建网络应用防火墙。

  奠基工作

  在所有现有的商业代理器和开源HTTP代理器中,Apache Web服务器解析和改写内容的能力突出。Apache包括一个快速稳定的内置HTTP代理器,作为其核心产品的一部分,此外,其模块化设计允许你进行广泛的调试,这样你可以在单代理器配置中进行配置。你可以利用其内容感知来构建一个过滤和改写HTTP代理器。

  Apache从2.0版开始,包括作为内置模式匹配引擎的PCRE (Perl兼容正则表达式)库,这大大地提高了规则表达式的性能。它还允许指令多个基于内容类型的解析和改写操作。

  这些特点与后面将讨论的第三方和内置式模块进行结合,为保护网络应用程序提供了一个强有力的工具包。

  构建平台

  Mod_security(www.modsecurity.org)是防火墙的网络入侵防御能力的核心。虽然,它从一个简单的基于模式的过滤引擎开始,阻止网络蠕虫信息流,但是,它已经发展成为一个成熟的网络安全套件。

  Mod_security特征使用一种基于规则表达式的过滤语言,Snort用户很熟悉这种语言,该签名可以通过mod_security站点自动更新,这与典型的IDS特征很相似。这些包括反跨站点脚本攻击的过滤器和URL中的SQL语句,以及包含shell指令和路径或者用户ID信息的信息流。

  mod_security需要经常更新签名,在www.gotroot.com上可以免费下载。

  Mod_security也使Uni-code信息流恢复正常,并对其净化,以防止URL-解码攻击。

  Mod_security的模式匹配也能用于防止错误信息泄露。错误信息泄露可能会给攻击者提供有用信息。任何有可能泄露网络服务器配置的信息都会经过过滤,并将其改向为一个通用的错误信息。你也可以使用mod_security来执行环境所要求的文件类型,比如.php、.asp、.jsp、以及.html文件。

  万里长城

  虽然Mod_security功能强大,但是,正如大部分IDS/IPS解决方案一样,它采用的是一种默认许可或者排斥性方法。对于一个开始获得默认-否定情况的网络应用防火墙而言,你需要使用一些Apache中额外的模块。这里是一些完成任务所需要的额外模块:

  这是一个典型的使用开源网络应用防火墙的网络交易。客户端请求一个静态的HTML页面,它按照网关后端的动态请求重新编写,经过监测、扫描与验证。HTTP响应标头也进行了改写,以掩盖网络服务器,并隐藏其基础平台。

  • 隐藏你的平台。网络服务器版本所标榜的是一种可以让攻击者识别到网络服务器平台的简捷方法。端口80的简单远程登录和HTTP GET请求将会产生版本号码,并且通常会有加载在服务器上的额外扩展。隐藏服务器标头和其它任何有mod_headers的特定平台标头,这是减少信息泄露的一个简单方法。

  为了阻止更先进的指纹识别工具,你可以更进一步,修改Apache源,以发送独特的错误标头和重新排序响应。

  • 重新编写内容并进行杀毒。只要运行在后端的编码没有任何变化,你就可以修改外部响应或者内部请求,并验证输入信息。所有这些都可以通过简单的规则表达式实现。
  • Mod_rewrite是一个受欢迎的用于改写内部HTTP请求的工具,通常以搜索引擎更容易解析的格式表述网络内容。使用规则表达式,你可以创建一个过滤器,按照特定的安全规则(如参数为最大长度,仅包括字母和数字字符,请求也是最大长度),限制允许通过你网络环境的信息流,将所有其它的请求发送到一个通用的错误页面上。
  • 虽然Mod_proxy_html的工作方式也类似,但是仅仅是输出方式相似,而非输入。它可以读取并替换服务器返回的HTML。只要将mod_proxy_html 和mod_rewrite结合起来,就可能运行网络应用层模拟,这与网络地址转换、以及改写给定站点提供的内容。
    这可以为欺骗攻击者带来几乎无限的可能性:ASP页面可以模拟为PHP,动态内容可以呈现为静态的,此外,站点可以向外部明显地分裂于多个服务器上。

  另一个工具是mod_lineedit,它提供了和mod_proxy_html相同的改写功能:不仅仅在HTML方面,也包括HTTP信息中的任何内容。它对剔除信息泄露的其它来源非常有用,比如META标签可以命名创建网络页面的作者或者工具、开发者的注释和任何其它你的过滤器没有捕获的潜在危险数据。

  砖瓦和砂浆

  其它许多工具都可以配置在代理其上,监测所有网络信息流:

  • 流量截流工具通过限制特定主机和网络每秒可以产生的请求数量,进而可以将蠕虫信息流和DoS攻击最小化。
  • 日志解析器有助于检测网络请求日志中的异常情况。
  • 当负载与标准不符时,流量分析应用会发出警报。
  • 网络安全网关是添加多因素认证的良好位置,要么使用LDAP或者其它机制,与企业单点登陆目录进行结合。

  虽然构建你自己的网络应用防火墙在前一阶段需要大量的艰苦工作,但是回报可能是相当高的。不论你创立一个解决方案还是购买一个,对于理解网络安全防御无法获知网络环境内部的情况都不要迟疑。

相关推荐