ModSecurity中文手册(6)

2018-11-28 17:04

描述:配置是否保存事务处理后的拦截文件

语法:SecUploadKeepFiles On|Off|RelevantOnly 示例:SecUploadKeepFiles On 阶段:N/A 范围:Any 版本:2.0.0

备注:该指令要求已经定义存储目录(使用SecUploadDir).

可选值:

On - 保存上载文件 Off - 不保存上载文件

RelevantOnly - 只保存被确认与请求有关的文件

SecWebAppId

描述:创建服务器上的一个分区只属于一个WEB应用 语法:SecWebAppId \示例:SecWebAppId \阶段:N/A 范围:Any 版本:2.0.0

备注:通过使用分区来避免会话ID和用户UD之间的冲突,在同一台服务器上部署多个应用时一定要使用这个指令,如果不使用,会话ID之间的冲突可能发生,默认值是default,如: ServerName app1.com ServerAlias www.app1.com SecWebAppId \

SecRule REQUEST_COOKIES:PHPSESSID !^$ chain,nolog,pass SecAction setsid:%{REQUEST_COOKIES.PHPSESSID} ...

ServerName app2.com ServerAlias www.app2.com SecWebAppId \

SecRule REQUEST_COOKIES:PHPSESSID !^$ chain,nolog,pass SecAction setsid:%{REQUEST_COOKIES.PHPSESSID} ...

配置显示了两个例子,SecWebAppId与apache的VirtualHost指令协同工作,在一台服务器上应创建各自独特的集合名称,一般情况下,当启用setsid时,ModSecurity会使用\的錅来创建集合,

这可以保存专用值,然而象上述例子一样使用SecWebAppId,集合的名字会变成\和\。

SecWebAppId相关的两个情况:

你正把事务和报警记录到ModSecurity控制台上,并且你想用WEB应用ID来搜索仅属于那些应用的事务。

你正使用数据留存设施(SESSION和USER集合)并且你需要在属于不同的应用之间的会话和用户的冲突。

十四、处理阶段

ModSecurity 2.x允许把规则置于下述五个阶段之一: 请求头(REQUEST_HEADERS) 请求体(REQUEST_BODY) 响应头(RESPONSE_HEADERS) 响应体(RESPONSE_BODY) 记录(LOGGING)

下图是标准的apache请求流程,5个ModSecurity处理阶段显示其中。

为了在规则执行时选择阶段,需要使用阶段命令,可以通过规则中直接使用,也可以通过SecDefaultAction指令。

SecDefaultAction \

SecRule REQUEST_HEADERS:Host \注意:

要注意规则的执行是依赖于阶段,即使是一个配置文件中的两条邻近的规则,只要是设置了在不同的阶段中执行,它们就不会是一个接一个的生效。配置文件中的规则顺序仅仅是在规则各自的阶段中是重要的。在使用Skip和SkipAfter动作时尤为重要。 注意:

LOGGING阶段比较特别,无论前面的各个阶段发生了什么事,都会每个事务的最后被执行。这就意味着哪怕是请求被中断或是放行事务时都会被执行。

请求头阶段

这个阶段的规则会在apache完成请求头的读取后立即被执行(post-read-request阶段),这时,还没有读取请求体,意味着不是所有的参数都可用。如果你必须让规则尽早运行,应把规则放在这个阶段(在apache使用这个请求做某些事前),在请求体被读取前做些事情,从而决定是否缓存这个请求体,或者决定你将希望这个请求体如何被处理(如是否以XML格式解析或不解析)。 注意:

这个阶段的规则无法影响apache的范围指令(Directory, Location, LocationMatch等)像post-read-request钩子一样还无法得到信息。VirualHost指令有些例外,如果想在apache的locations使用ModSecurity规则,那么他们应该运行在阶段2,参考apache请求环/ModSecurity处理阶段图表。

请求体阶段

这是通用输入分析阶段,大部分传统的应用规则不在这儿,这个阶段你肯定能收到参数(只有读取过请求体后),在请求体阶段,ModSecurity支持三种编码类型。

application/x-www-form-urlencoded - used to transfer form data multipart/form-data - used for file transfers text/xml - used for passing XML data

大部分WEB应用还没有使用其他的编码方法。

响应头阶段

发生在响应头被发送到客户端之前,如果你想观察响应发生前就在这儿运行,如果你想使用响应头来决定你是否想缓存响应体也行。注意一些响应状态码(如404)在请求环的早期就被apache管理着,我也无法触发预期。加上apache在后面的勾子上双增加了一些响应头(如日期、服务器和连接信息等),这些我们无法触发和审查。在代理配置模式下或使用phase:5(logging)工作的较好。

响应体阶段

这是通用输出分析阶段,这里你能运行规则截断响应体(当然提供缓存)。这个阶段你想检查输出的HTML信息公布、错误消息和失败的验证文字。

日志阶段

在日志发生前运行的一个阶段,放在这个阶段的规则只能影响日志记录器如何执行,这个阶段可以检测apache记录的错误消息,在这个阶段你不能拒绝或阻断连接,因为太迟了,这个阶段也允许检测其他的响应头,如那在phase:3或者phase:4阶段中不可用的。注意在这个阶段,你应当小心不要继承破坏性的动作到规则中,这样的情况在ModSecurity2.5.0及其以后的版本中被当作配置错误。

十五、变量(A~E)

Variables

以下都是ModSecurity 2.x中支持的变量

ARGS

ARGS是一个集合,可以作为静态参数(以名称匹配论点)方式或以正则表达式(以正则表达式匹配的所有匹配的论点名称)方式用于它自身(意思为POST负载中的所有论点),

一些变量是事实上的集合,在运行时可以扩展更多的变量,下述例子会测试所有的请求论点。

SecRule ARGS dirty

不过有些时候你只想看看集合的一部分,可以通过selection操作(colon)得到完美的帮助,下述例子仅提供查看名为p的变量(值得注意的是,通常行情况下,请求可以包含多个同名的变量) SecRule ARGS:p dirty

它也可以指定排除方式,下面的例子将仔细检查所有的请求参数是否有单词dirty,除了名字为z的参数(再则,z参数可以为0个,也可以是多个) SecRule ARGS|!ARGS:z dirty

这儿用了一个特殊的操作符,允许你统计一个集合中有多少个变量。如果一个请求中使用了0个以上的参数,下面的规则就会有效果(暂时忽视了第二个参数)。 SecRule &ARGS !^0$

还有些时候你需要查看一个参数数组,每个名字只有稍微不同,这种情况下,你可以为集合操作符自己指定一个正则表达式,下面的规则就是查阅所有以id_打头的参数名字。 SecRule ARGS:/^id_/ dirty 注意:

如果参数p不存在,则使用ARGS:p不会对操作符调用起到任何作用。

在ModSecurity 1.x时,ARGS变量代表 QUERY_STRING + POST_PAYLOAD,但是现在已经扩展成独立的变量了。

ARGS_COMBINED_SIZE

此变量相比apache的LimitRequest指令允许你更有针对性的设置Arguments的总大小。如你可以创建一条规则确保参数数据的部大小小于一个特定的阈值(帮助防止缓存溢出问题)。例:如果参数的大小超过25个字符就阻断它。

SecRule REQUEST_FILENAME \

\SecRule ARGS_COMBINED_SIZE \

ARGS_NAMES

是参数名的集合,你可以搜索你想阻断的特定的参数名,在一个积极策略情况下,你也可以仅仅使用白名单(使用!可以反转规则)来审计参数名。例:下例规则仅允许规则名为p和a的两个参数,如果有其他参数名字在其中,就会被阻断。

SecRule REQUEST_FILENAME \

\SecRule ARGS_NAMES \

ARGS_GET

ARGS_GET类似于ARGS,但仅针对于查询字符串中包含的参数。

ARGS_GET_NAMES

ARGS_GET_NAMES类似于ARGS_NAMES,但仅针对于查询字符串中包含的参数。

ARGS_POST

ARGS_POST类似于ARGS,但仅针对于POST字符串中包含的参数。

ARGS_POST_NAMES

ARGS_POST_NAMES类似于ARGS_NAMES,但仅针对于POST字符串中包含的参数。


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

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

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

马上注册会员

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