ModSecurity中文手册(4)

2018-11-28 17:04

描述:配置ModSecurity允许的最大请求体的缓存区大小 语法:SecRequestBodyLimit NUMBER_IN_BYTES 示例:SecRequestBodyLimit 134217728 范围:Any 版本:2.0.0

备注:默认值是131072 KB (134217728 bytes)。任何超过此限制的都会被拒绝,提示413,请求体太大。还有一个硬限制,1GB。

SecRequestBodyNoFilesLimit

描述:配置ModSecurity允许的最大请求体的缓存区大小,除了请求中正在传送的文件大小。这项指令便于在受到某些使用大尺寸请求进行DoS攻击时减少影响。提供上传文件服务的WEB应用必须配置SecRequestBodyLimit为一个很大的值。由于大文件直接进行磁盘文件存取,不会加大内存的消耗。但是,仍然有可能有人利用超大请求体限制和发送大量大小的非上传请求。该指令消除这一漏洞。 语法:SecRequestBodyNoFilesLimit NUMBER_IN_BYTES 示例:SecRequestBodyLimit 131072 范围:Any 版本:2.5.0

备注:默认为1 MB (1048576 bytes)。这个值比较古老了,大部分应用应该到128KB或是更低,任何超过此限制的都会被拒绝,提示413,请求体太大。还有一个硬限制,1GB。

SecRequestBodyInMemoryLimit

描述:配置ModSecurity使用内存保存的最大请求体大小 语法:SecRequestBodyInMemoryLimit NUMBER_IN_BYTES 示例:SecRequestBodyInMemoryLimit 131072 阶段:N/A 范围:Any 版本:2.0.0 备注:None

默认的限制是128 KB,在内存中最多存储128KB SecRequestBodyInMemoryLimit 131072

SecResponseBodyLimit

描述:配置允许缓存的最大响应体大小

语法:SecResponseBodyLimit NUMBER_IN_BYTES 示例:SecResponseBodyLimit 524228 阶段:N/A 范围:Any 版本:2.0.0

备注:任何超过此限制的都会被拒绝,提示500,内部服务器错误。这一设置不影响使用MIME类型的响应,缓存不为此做标记,有一个硬限制,1GB。

默认配置成 512 KB:

# Buffer response bodies of up to 512 KB in length SecResponseBodyLimit 524288

SecResponseBodyLimitAction

描述:配置SecResponseBodyLimit控制碰到响应体限制的情况,默认时ModSecurity拒绝超过指定长度的响应体,然而一些WEB站点,会产生一些非常长的响应为适当限制带来难度。这类网站不得不极大的提高关注度,把限制放到了首位(控制内存消耗)。有能力选择的是发生站点限制时,管理员能选择仅仅检查响应的第一部分,这部分可融入理想的限制,并让其通过。可以证明未经检查就允许部分响应是个漏洞,理论上这是对的,但仅适用于攻击者控制输出的案例(如它可以任意的长)。不管怎样,在这种情况下,无论如何是阻止不了漏洞的。攻击者在数据回送前可以压缩,打乱或者甚至是加密,因为可以穿越任意监控设备。

语法:SecResponseBodyLimitAction Reject|ProcessPartial 示例:SecResponseBodyLimitAction ProcessPartial 阶段:N/A 范围:Any 版本:2.5.0 备注:None

SecResponseBodyMimeType

描述:为响应数据缓存配置推荐的MIME类型 语法:SecResponseBodyMimeType mime/type

示例:SecResponseBodyMimeType text/plain text/html 阶段:N/A 范围:Any 版本:2.0.0

备注:可以使用多个SecResponseBodyMimeType指令来增加MIME类型

默认值是text/plain text/html:

SecResponseBodyMimeType text/plain text/html

SecResponseBodyMimeTypesClear

描述:清除推荐的响应体缓存MIME类型,允许你重新开始配置。 语法:SecResponseBodyMimeTypesClear 示例:SecResponseBodyMimeTypesClear

阶段:N/A 范围:Any 版本:2.0.0 备注:None

SecResponseBodyAccess

描述:配置响应体是否被缓存并被分析 语法:SecResponseBodyAccess On|Off 示例:SecResponseBodyAccess On 阶段:N/A 范围:Any 版本:2.0.0

备注:如果你计划检查HTML的响应,需要使用这个指令。这个指令必须和\处理阶段动作和REQUEST_BODY变量/位置一起使用,这三部分任一一个没有配置,你就无法检查请求体。

可选值如下:

On - 访问响应体 (仅支持使用MIME类型,具体见上述). Off - 不尝试访问响应体

十二、配置指令(九)

SecRule

描述:SecRule是ModSecurity主要的指令,用于分析数据并根据结果执行动作。 语法:SecRule VARIABLES OPERATOR [ACTIONS] 示例:SecRule REQUEST_URI \

\阶段:Any 范围:Any 版本:2.0.0 备注:None

通常规则的格式如下:

SecRule VARIABLES OPERATOR [ACTIONS]

第二部分,OPERATOR描述如何进行检查,第三部分可选的,ACTIONS,描述当操作进行成功的匹配一个变量时具体怎么做。

规则中的变量

第一部分,VARIABLES描述哪个变量被检查,举个例子,下述规则会拒绝URI中含有单词dirty的事务。

SecRule ARGS dirty

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

SecRule ARGS|REQUEST_HEADERS:User-Agent dirty

XPath格式是选择操作的第三方支持格式。XPath格式仅能针对特殊变量XML使用,只有请求体使用XML格式时可用。

SecRule XML:/xPath/Expression dirty 注意:

不是所有的集合支持选择操作格式类型,你需要参考各个集合的文档来决定是否支持。

Collections

一个变量可以包含一个或多个片断的数据,根据变量的性质和方法进行使用,前一节我们看到了这两种方法的例子,当一个变量可以包含一个以上的值,我们把它称为集合。

集合在规则运行前都是可以扩展的。举例如下: SecRule ARGS dirty 可以进行如下扩展: SecRule ARGS:p dirty SecRule ARGS:q dirty

请求中有两个参数,名为p和q。

集合有几个特色:

只读

在运行时创建事务数据,如:ARGS (包含所有请求参数列表)和REQUEST_HEADERS (包含所有的请求头列表).

短暂的读/写

每个事备创建一个空的TX集合,规则能读也能写(如使用setvar动作),但信息存储在这个集合中直到事务结束。

连续的读/写

有几个集合可写,但是为连续的后台存储。这些集合被用于跟踪客户端的交互事务,例如分成IP、SESSION和USER等类型的集合。

操作的规则

一种很简单的情况下,你可能会用一个正则表达式作为规则的第二个参数,我们已经在上面举过这样的例子,如果你这样做,ModSecurity假设你会使用rx(正则表达式)操作符,你也可以很明确的通过使用@来指定你想要的操作符,紧跟之后的是操作符的名字,在规则第二个参数的开始。 SecRule ARGS \

注意我们为什么必须使用双引号把第二个规则参数括起来呢,这是因为第二个参数可能包含空格。一些带空格字符和数字会跟在操作符名字后面,如果出现非空格的字符,所有的这些都会被当作操作符的参数。这种情况下指定的参数中的正则表达式被作为模式进行匹配。

如果你使用取非操作符取反操作符返回的结果,可以让@处于第二个字符。 SecRule &ARGS \

取非操作符

操作符的结果可以通过在第二个字符前使用感叹号来取反,下述规则匹配在User-Agent请求头中找不到dirty单词:

SecRule REQUEST_HEADERS:User-Agent !dirty

你能用感叹号与任一个参数联合使用,这样做,感叹号优先,后面跟上明确的操作符说明,下述规则与前面的例子有相同的效果。

SecRule REQUEST_HEADERS:User-Agent \

如果你在多个变量中使用取非操作符,这可能无法立即清楚将会发生什么情况,考虑下述例子: SecRule ARGS:p|ARGS:q !dirty 这个规则与下面意思相同 SecRule ARGS:p !dirty SecRule ARGS:q !dirty 警告:

取非用于单个操作符,而不要在整体的变量列表中使用。

规则中的动作

第三个参数,ACTIONS可以忽略,因为有个辅助功能,即指定的默认动作列表。如果这个参数没有被省略,当规则匹配时,这个参数指定的动作会联合默认的动作列表创建一个实际的动作列表被执行。

SecRuleInheritance

描述:配置当前环境是否继承父节点环境(大部分情况下都配置成可继承,你应当查一下文档的每一个指令,以明确它继承与否)

语法:SecRuleInheritance On|Off 示例:SecRuleInheritance Off 阶段:Any 范围:Any 版本:2.0.0

备注:指定资源的环境(如:Location, Directory,等)不能覆盖主服务器或虚拟服务器上配置的phase1规则。这是因为phase1在请求处理进程之前运行,早于apache分发请求的资源,虚拟服务环境可以覆盖主服务器配置的phase1规则。


ModSecurity中文手册(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:消防工程竣工资料(自动报警)(固定灭火)全套资料

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: