详细内容
ModSecurity for Apache2[二十六]
发布日期:2010-07-20     点击:2391     字体:[ ]
SecResponseBodyAccess
说明:配置响应体是否将被缓冲和分析。

语法:SecResponseBodyAccess On|Off

例子:SecResponseBodyAccess On

处理阶段:无

适用范围:任何

版本:2.0.0

属地/注:如果你计划检查的HTML输出这个指令是必须的。本指令必须和“阶段:4”(phase:4)以及响应体变量或地址(RESPONSE_BODY variable/location)一起使用。这3部分缺一不可。

可选值是:

On – 访问请求体(只在MIME类型匹配,见上文)。

Off - 不试图访问响应体。

SecRule
说明:SecRule是ModSecurity的主要指令。它用来在分析数据的基础上执行动作。

语法:SecRule VARIABLES OPERATOR [ACTIONS]

例子:SecRule REQUEST_URI "attack" \
"phase:1,t:none,t:urlDecode,t:lowercase,t:normalisePath"


处理阶段:任何

适用范围:任何

版本:2.0.0

备注:无

在一般情况下,这一规则的格式如下:

SecRule VARIABLES OPERATOR [ACTIONS]

第二部分,操作符,指定他们将怎样检查。第三部分,动作,指定当一个操作符成功匹配变量时将执行怎样一个动作。

规则里的变量
第一部分,变量,指定哪些变量将进行检查。例如,下面的规则是当地址栏里有”dirty”这个单词时会拒绝交互:

SecRule ARGS dirty

每个规则可以指定一个或多个变量:

SecRule  ARGS|REQUEST_HEADERS:User-Agent dirty

还有第三种格式的选择符 - XPath表达式的支持。 XPath表达式只能用来对付特殊的XML变量,只用请求体中的变量作为XML被处理的时候可用。

SecRule XML:/ XPath/Expression dirty

注意:并非所有的集合都支持所有的操作符格式。你应该查阅每个集合的文档检查是否支持。

集合
一个变量可以包含一个或多个数据块,这取决于该变量的性质和它的使用方式。我们已经看到了在上一节两个例子。当一个变量包含多个值时我们称它为一个集合。

集合在规则运行之前总是扩展的。例如,下面的规则:

SecRule ARGS dirty
可以扩展为:

SecRule ARGS:p dirty
SecRule ARGS:q dirty
在一个请求里只有两个参数,分别为p和q

集合有以下几种特性:

只读
在运行时用交互数据创建。例如: ARGS(包含所有请求参数值列表)和REQUEST_HEADERS(包含所有请求标头值的列表)。

瞬态读/写
TX集合在每一个交互中都生成。规则可以从中读取并且可以写入(例如,使用的SETVAR动作),但在此集合中存储的信息并不持续至交互结束。

持续的读/写
有几个集合,能被写入并且持久存储。这些集合可在交互中跟踪客户。这类集合的例子是IP,SESSION和USER。

规则里的操作符
最简单的情况是用一个正则表达式作为第二个规则参数。这也是我们在上面的例子中所使用的。
如果你这样做ModSecurity就假定你要使用rx(正则表达式),你也可以显式地指出通过使用@符号,其中@符号紧跟着操作符的名字,并且在第二个SecRule参数的开头。例如:
SecRule ARGS “@rx dirty”
 
这里我们应该注意到规则里的第二个参数使用了双引号作为界定符,这是因为第二个参数里包含空格,任何个数的空格可紧跟着操作符名称,如果那里有任何非空格字符,他们将被视为一个特殊的参数作为操作符。在正则表达式运算符里特殊参数的例子是将他们用于比较的模式。

如果使用否定符来返回否定的结果,@可以作为第二个字符,例如:

SecRule &ARGS "!@rx ^0$"

否定操作符

通过在第二个参数开始使用一个感叹号可返回一个否定结果。下面的规则匹配如果单词dirty不出现在User-Agent请求头:

SecRule REQUEST_HEADERS:User-Agent !dirty

您可以组合使用任何参数用感叹号。如果这样做,感叹号需要放在首位,紧跟着操作符参数。下面的规则与前面的例子有相同的效果:

SecRule REQUEST_HEADERS:User-Agent "!@rx dirty"

如果您需要使用否定在一个规则里,并且它将用于几个变量,,可能不会立即清楚将会发生什么。考虑下面的例子:

SecRule ARGS:p|ARGS:q !dirty
 
上述规则等效于:

SecRule ARGS:p !dirty
SecRule ARGS:q !dirty

警告
否定针对个别操作符,而不是针对整个变量列表。

规则里的动作
第三个参数,ACTIONS,可以省略,因为有一个辅助功能,即它可以在默认的动作清单中指定。
如果这个参数不省略,它将和默认动作清单合并,则规则匹配时执行实际的动作列表。
用户评论
昵称 
内容  *
验证码   
   
Copyright © 2010 zdbase.com All Rights Reserved. 苏ICP备15039389号 可人软件设计