<< Back to man.ChinaUnix.net   CU网友原创,转载请注明出自ChinaUnix.net及原作者

性能

 ModSecurity提供的保护是有代价的。你的web服务器会变的有一点点慢,并使用更多的内存。

速度

根据我的经验,速度差异并不显著。我在开发早期做了一些实验,速度差异大约是10%。但是,如果你配置ModSecurity只处理动态请求,差异会更小。在实际的网站中,一个对动态页面的请求通常会伴随几个对其他类型文件(CSSJavaScript,图片)的访问。性能影响是和配置的复杂度直接相关的。你可以使用Apache 2中的性能测量模块来测量ModeSecurity在每个请求的处理上花了多少时间。在我的测试中,这个时间大约是24毫秒(在一个2GHz处理器的服务器上)。

内存消耗

为了能够分析一个请求,ModSecurity把请求数据放在内存里。多数情况下数量不大,因为多数请求都很小。但是,对网站的那些上传文件的部分可能就有问题了。为了防止这个问题,你需要对网站的这些部分关闭“请求体缓冲”。(这只是Apache 1.x版本的问题。Apache 2.x版本在请求太大以至于无法放进内存的时候会使用磁盘上的临时文件来存储。)在任何情况下,在Apache配置中检查和设置各种限制都是明智的(参考http://httpd.apache.org/docs/mod/core.html#limitrequestbody关于LimitRequestBodyLimitRequestsFieldsLimitRequestFieldsize

LimitRequestLine指示)。

其他方面

调试特性很有用,但是它会为每个请求写大量的数据到文件中。因此对繁忙的服务器可能会造成瓶颈。没有理由在产品服务器上使用调试特性,所以保持关闭这个选项。

审计日志特性类似,也会因为两个原因产生瓶颈。首先,大量的数据会写到磁盘;其次,对文件的访问必须是同步的。如果你仍然希望使用审计日志,试着创建很多不同的审计日志,对服务器上运行的每个应用程序创建一个,来最小化同步的代价(这个建议在Apache 2.x版本中不能去掉任何代价,因为同步是用一个集中的互斥量来实现的)。

已知问题

有一些已知的问题:

l         (只针对Apache 2ModSecurity支持响应体截获,但是它不能显式地照顾响应报头。这可能在一些原始的响应头通过的时候发生。

l         (只针对Apache 2)响应体截获现在和mod_deflate不完全兼容。为了保证平滑操作,ModSecurity会阻止mod_deflate对那些(只针对那些)已经被截获的响应进行操作。

 

重要注意事项

请阅读下列注意事项:

l         你应该小心地考虑你加到配置里的每个过滤器规则的影响。特别的,你肯定不希望用非常宽泛的规则拒绝访问。结果会是错误的positives(?不知道怎么翻译)和盛怒的用户。

l         尽管ModSecurity可以用在.htaccess文件里(需要AllowOverride选项),不要对你不信任的人员开放使用。