读“ModSecurity配置关键字说明”之摘抄

通用格式

 SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS]

阶段phase

  (1) request headers

  (2) request body

  (3) response headers

  (4) response body

  (5) logging

  

一、变量variable

  绿色:请求变量  蓝色:server变量 紫色:响应变量 红色:请求体解析变量 黑色:时间变量  橙色:实体变量

   

ModSecurity    

ARGS 请求参数,类型read-only collection
ARGS_COMBINED_SIZE 请求参数的总大小
ARGS_NAMES 请求参数的名字,类型read-only collection
ARGS_GET 查询字符串参数,类型read-only collection
ARGS_POST 请求体参数,类型read-only collection
ARGS_POST_NAMES 请求体参数的名字,类型read-only collection
FILES 上传文件域,类型read-only collection
FILES_COMBINED_SIZE 上传文件大小
FILES_NAMES 上传文件表单文件域参数的名字,类型read-only collection
FILES_SIZES上传文件的大小,类型read-only collection
FILES_TMPNAMES 文件临时名字,类型read-only collection
PATH_INFO URI path
QUERY_STRING 查询字符串
REQUEST_BASENAME URI basename,同时支持/与\这两种文件分隔符
REQUEST_BODY 请求体,默认处理application/x-www-form-urlencoded请求
REQUEST_COOKIES cookie参数
REQUEST_COOKIES_NAMES cookie参数的名字,类型read-only collection
REQUEST_COOKIES_FILENAME URI filename/path
REQUEST_HEADERS 请求头,类型read-only collection
REQUEST_HEADERS_NAMES 请求头参数的名字,类型read-only collection
REQUEST_LINE 请求行
REQUEST_METHOD 请求方法
REQUEST_PROTOCOL 请求协议
REQUEST_URI 请求URI,但不包括hostname
REQUEST_URI_RAW请求URI,包括hostname
 
AUTH_TYPE 认证类型,代理模式下非本地认证,需要指定Authorization头
REMOTE_ADDR 远程地址,访问者ip
REMOTE_HOST 远程host,访问者hostname,当HostnameLookUps开启时,为dns解析的域名,否则为ip地址
REMOTE_PORT 远程端口,访问者端口
REMOTE_USER 访问者用户名
SERVER_ADDR 服务端地址
SERVER_NAME 服务端hostname,取值Host请求头
SERVER_PORT 服务端端口
SCRIPT_BASENAME 脚本basename,代理模式不可用
SCRIPT_FILENAME 脚本filename,代理模式不可用
SCRIPT_GID 脚本group ID,代理模式不可用
SCRIPT_GROUPNAME 脚本group name, 代理模式不可用

SCRIPT_MODE 脚本权限,代理模式不可用

1   表示可执行

2   表示可写

4   表示可读

7   表示可读可写可执行

SCRIPT_UID 脚本user ID,代理模式不可用
SCRIPT_USERNAME 脚本user name,代理模式不可用
RESPONSE_BODY 响应体
RESPONSE_CONTENT_LENGTH 响应实体长度,单位bytes
RESPONSE_CONTENT_TYPE 响应实体类型,仅仅在phase3可用

RESPONSE_HEADERS 响应头,类型read-only collection

在内嵌模式中,像那种会优先将数据发送给客户端的响应头是不可获得的,例如Server,Date,Connection,Content-Type

在代理模式中,阶段5可用

RESPONSE_HEADERS_NAMES 响应头参数的名字,类型read-only collection

在内嵌模式中,像那种会优先将数据发送给客户端的响应头是不可获得的,例如Server,Date,Connection,Content-Type

在代理模式中,阶段5可用

RESPONSE_PROTOCOL 响应协议
RESPONSE_STATUS 响应码,仅代理模式可用

TX 事件内变量,类型read/write collection

当使用operator @rx或@pm时,TX:0表示capture action捕获的变量 TX:1-TX:9:表示capture action捕获的子串

RULE rule元数据,类型read/write collection, 用于设置Rule对象的属性:id,rev,severity,logdata,msg

SESSION session数据,类型read/write collection

仅当setsid action执行后使用,session对象的属性,SCORE得分,BLOCKED是否阻塞

GEO geo信息,类型read-only collection
ENV 环境变量,类型read-only collection,但可以使用setvar来修改变量的值
GLOBAL 全局变量,类型read/write collection
IP 存储的ip数据,类型read/write collection
USER user数据,类型read/write collection
XML xml dom相关的,类型read-only collection
HIGHEST_SEVERITY 严重级别,值越小级别越高,255表示未设置严重级别
MATCHED_VAR 最近一次匹配的变量
MATCHED_VAR_NAME 最近一次匹配的变量的名字
MODSEC_BUILD modsecurity版本号

SESSION_ID sessionID

USERID user ID
WEBAPPID web app ID
WEBSERVER_ERROR_LOG server产生的错误信息

TIME HH:mm:ss
TIME_DAY 1-31
TIME_EPOCH
TIME_HOUR 0-23
TIME_MIN 0-59
TIME_MON 0-11
TIME_SEC 0-59
TIME_WDAY 0-6
TIME_YEAR 
DURATION 时间花费,milliseconds
MULTIPART_BOUNDARY_QUOTED multipart 解析错误;boudnary中有引号
MULTIPART_BOUNDARY_WHITESPACE multipart解析错误:boudnary中有空格
MULTIPART_CRLF_LF_LINES multipart 解析错误:混合使用\r\n与\n作为分界线,当允许使用混合符号时设置为1
MULTIPART_DATA_BEFORE multipart 解析错误:第一个boudnary前有数据
MULTIPART_DATA_AFTER multipart 解析错误:最后一个boudnary后有数据
MULTIPART_HEADER_FOLDING multipart解析错误:boudnary中
MULTIPART_LF_LINE multipart解析错误:使用\n作为分界线
MULTIKPART_SEMICOLON_MISSIONG multipart解析错误:缺少分号

MULTIPART_STRICT_ERROR 当以下值为1时,该值为1;

REQBODY_PROCESSOR_ERROR

MULTIPART_BOUNDARY_QUOTED

MULTIPART_BOUNDARY_WHITESPACE

MULTIPART_DATA_BEFORE

MULTIPART_DATA_AFTER

MULTIPART_HEADER_FOLDING

MULTIPART_LF_LINE 使用换行做分界线

MULTIPART_SEMICOLON_MISSING 分号缺失

MULTIPART_INVALID_QUOTING 无效引号

MULTIPART_INVALID_QUOTING multipart解析错误:无效引号
MULTIPART_UNMATCHED_BOUDNARY multipart解析错误:不合规范的boudnary,容易漏报
REQBODY_PROCESSOR 处理request解析,内置的解析功能包括URLENCODED,MULTIPART,XML
REQBODY_PROCESSOR_ERROR request解析错误标记,1表示错误,0表示ok
REQBODY_PROCESSOR_ERROR_MSG request解析错误信息
URLENCODED_ERROR 当解析application/x-www-form-urlencoded格式的请求体出错时值为1
二、操作符operator
绿色:字符串操作符  蓝色:数字操作符  橙色:验证操作符

ModSecurity
@beginsWith
@contains
@containsWord
@endsWith
@rx
@pm 特征字符串的匹配,大小写不敏感,基于Aho-Corasick匹配算法
@pmFromFile 从文件读取匹配特征字符串
@streq
@within
@eq
@ge
@gt
@le
@lt
@validateByteRange
@validateDTD XML相关
@validateSchema XML相关
@validateUrlEncoding
#validateUtf8Encoding
@geoLookup
#inspectFile 使用外部脚本处理
@rbl 去RBL REAL-TIME BLANKHOLE LISTS反垃圾邮件黑名单里查找ipv4地址,或hostname
@verifyCC

三、事件函数transform function

ModSecurity
base64Decode
base64Encode
compressWhitespace
cssDecode
escapeSeqDecode 解码ANSI/C escape序列
hexDecode
hexEncode
htmlEntityDecode
jsDecode
length
lowercase
md5
none 移除当前rule的所有transformation functions
normalizePath 移除掉多个斜杠
normalizePathWin 移除掉多个斜杠,但首先会将\(win正斜杠)转化成/(linux反斜杠)
parityEven7bit
parityOdd7bit
parityZero7bit
removeNulls 删除空字节
removeWhiteSpace 删除空格字符
replaceComments 将c格式的注释语句/*...*/转换为空格ASCII 32
replaceNulls 将null字节转换为空格ASCII 32
urlDecode
urlDecodeUni url解码%uXXXX编码范围FF01-FF5E
urlEncode
sha1
trimLeft 移除左边的空格
trimeRight移除右边的空格
trim 移除左右两端的空格

四、动作action

绿色:disruptive action (每个rule只能有1个disruptive action,如果有多个disruptive action,那么只有最后一个有效,在rule chain中,disruptive action只能出现在第一个rule中)

  蓝色:flow action    紫色:metadata action     红色:variable action    黄色:logging action    灰色:special action 黑色:其他

ModSecurity

allow

2.5版本之前是只影响当前阶段


2.5版本之后,遵守以下规则

(1) 如果单独使用,除了log阶段,其他阶段都停止处理

(2) 如果和参数phase一起使用,allow将停止当前阶段的处理,其他阶段不受影响

block 相当于占位符,会被上下文的SecDefaultAction 指令中的动作取代
deny 使用错误页面block当前事务
drop 断开网络连接
pass 继续执行下一个规则
proxy 代理请求到后端web server
redirect 重定向请求到其他web server
chain 相当于多个规则的and操作
skip 跳过指定的规则,值为跳过的规则个数,不能跳过同一个规则链中的规则
skipAfter 调转到指定的规则
id 设置规则ID
phase 指明处理阶段
msg
rev 设置版本号
severity  设置rule的严重级别,最好用文本来指定,v2.5.0版本已经弃用
tag
capture 将捕获结果存入TX变量,可以存储10个变量,tx变量集合的下标为0-9
deprecatevar 设置指定时间内递减数字型变量
expirevar 设置指定时间内移除过期的变量
initcol 创建持久性collections,通常在阶段1中设置
setenv 设置环境变量
setvar 设置变量
setuid 设置当前事务的user ID
setsid 设置当前事务的session ID
auditlog 将当前事务记录到log中

log

logdata
noauditlog
nolog
sanitiseArg 在日志中将指定的请求参数替换为*
sanitiseMatched 在日志中将指定的请求参数,请求头,响应头替换为*
sanitiseRequestHeader 在日志中将指定的请求头替换为*
sanitiseResponseHeader 在日志中将指定的响应头替换为*
ctl 改变当前事务的配置
multiMatch 每次变量发生变化会进行以此匹配计算
t 在对变量做匹配操作前指定调用的事务处理函数
append 响应体中注入内容,该action必须开启SecContentInjection指令
exec 执行外部脚本或二进制文件
pause 暂定事务处理
prepend 响应体中注入内容,该action必须开启SecContentInjection指令
status action 为deny与redirect action时指定响应码
xmlns XML专用

五、指令directory

ModSecurity
SecRule
SecRuleInheritance
SecRuleRemoveById
SecRuleRemoveById
SecRuleUpdateActionById  更新指定RuleID的rule action
SecRuleScript
SecMarker
SecAction
SecDefaultAction   设置默认的action
六、常用操作符
 |  或者操作符  e.g.REQUEST_URI|REQUEST_PROTOCOL

 :  数组取值操作符  eg.ARGS:p

 !  非操作符   eg:ARGS|!ARGS:z

 @ 操作符函数调用   eg. @rx

 t  事务函数调用   eg.t:lowercase

 &  取数组个数符   eg.&ARGS @ge 1

 %{COLNAME.VARNAME} 变量扩展符 eg.SecRule REQUEST_URI_RAW "!@beginsWith http://%{REQUEST_HEADERS.Host}" "drop,tag:'WEB_ATTACK/ILLEGALHTTPPROTOCOL',msg:'host header illegal',id:00001,phase:2"

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值