[security][modsecurity] modsecurity 规则说明/中文/转发
原文转发以防丢失。
地址: http://www.catssec.com:8090/exploit/?p=691
转来细读之后,并没有太多的参考价值 :(
modsecurity规则手册
一、变量variable
ModSecurity |
ARGS 请求参数,类型read-only collection |
ARGS_COMBINED_SIZE 请求参数的总大小 |
ARGS_NAMES 请求参数的名字, 类型read-only collection |
ARGS_GET 查询字符串参数,类型read-only collection |
ARGS_GET_NAMES 查询字符串参数,类型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 查询字符串 |
REQUESET_BASENAME URI basename,同时支持/与\这两种文件分隔符 |
REQUEST_BODY 请求体,默认处理application/x-www-form-urlencoded 请求 |
REQUEST_COOKIES cookie参数 |
REQUEST_COOKIES_NAMES cookie参数的名字,类型read-only collection |
REQUEST_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后有数据 |
MUTLIPART_HEADER_FOLDING multipart 解析错误:boudnary中 |
MULTIPART_LF_LINE multipart 解析错误:使用\n作为分界线 |
MULTIPART_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 使用换行做分界线
MULTPART_SEMICOLON_MISSING 分号缺失
MULTPART_INVALID_QUOTING 无效引号
|
MULTIPART_INVALID_QUOTING multipart 解析错误: 无效引号 |
MULTIPART_UNMATCHED_BOUDDARY 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 |
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 移除左右两端的空格 |
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 |
SecRuleRemoveByMsg |
SecRuleUpdateActionById 更新指定RuleID的rule action |
SecRuleScript |
SecMarker |
SecAction |
SecDefaultAction 设置默认的action |
from:http://danqingdani.blog.163.com/blog/static/18609419520146296181531/
[security][modsecurity] modsecurity 规则说明/中文/转发的更多相关文章
- ModSecurity的规则
一.ModSecurity的规则 基本格式 SecRule VARIABLES OPERATOR ACTIONS SecRule:ModSecurity主要的指令,用于创建安全规则. VARIABLE ...
- 数据库SQLite在Qt5+VS2012使用规则总结---中文乱码
VS2012默认格式为 "GB2312-80",而有时我们用到字符串需要显示中文时,就会出现乱码.下面仅就Qt5和VS2012中使用数据库SQLite时,做一个简单的备忘录 #in ...
- Firefox火狐广告过滤插件Adblock Plus过滤规则包[中文维护小组]
如果你经常使用Firefox火狐浏览器那么一定知道Adblock Plus这款广告过滤插件,功能非常强大,但是Adblock Plus广告过滤插件自带的过滤规则并不多,而且也不太适合我们中国的网站,在 ...
- 双向最大匹配算法——基于词典规则的中文分词(Java实现)
目录 一.中文分词理论描述 二.算法描述 1.正向最大匹配算法 2.反向最大匹配算法 3.双剑合璧 三.案例描述 四.JAVA实现完整代码 五.组装UI 六.总结 前言 这篇将使用Java实现基于规则 ...
- modsecurity配置指令学习
事务(transactions) Console(控制台) 1 Introduction Modsecurity是保护网络应用安全的工作.不,从零开始.我常称modsecurity为WAF(网络应用防 ...
- ModSecurity CRS笔记[转]
转自:http://danqingdani.blog.163.com/blog/static/186094195201472304841643/ ModSecurity的规则因为奇怪的正则(可读性差? ...
- ModSecurity for Nginx
Announcing the availability of ModSecurity extension for Nginx ModSecurity for Nginx ModSecurity for ...
- 利用ModSecurity防御暴力破解
利用ModSecurity防御暴力破解 from:http://www.freebuf.com/articles/web/8749.html 2013-04-18 共553248人围观 ,发现 12 ...
- Centos7.4 modsecurity with nginx 安装
1.准备: 系统环境:Centos7.4 软件及版本: nginx:OpenResty1.13.6.1 ModSecurity:ModSecurity v3.0.0rc1 (Linux) modsec ...
随机推荐
- 解决python3 UnicodeEncodeError: 'gbk' codec can't encode character '\xXX' in position XX
从网上抓了一些字节流,想打印出来结果发生了一下错误: UnicodeEncodeError: 'gbk' codec can't encode character '\xbb' in position ...
- C++11 右值引用和转移语义
新特性的目的 右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和 ...
- java 生成Http 头部date格式的string-RFC 1123 Date Representation in java
https://blog.csdn.net/lvzhuyiyi/article/details/51770148 ******************************************* ...
- InstallShield: 1628 完成基于脚本的安装失败
问题: 第一次卸载程序失败,以后每次卸载出现1628 完成基于脚本的安装失败,使用安装包打开也会出现相同问题. 原因: 首先检查安装包是否出错,然后检查卸载脚本是否出错. InstallShield程 ...
- SwingWorker
Swing应用程序员常见的错误是误用Swing事件调度线程(Event DispatchThread,EDT).他们要么从非UI线程访问UI组件:要么不考虑事件执行顺序:要么不使用独立任务线程而在ED ...
- Java知多少(3) 就业方向
Java的就业前景如何,看培训班就知道了,以Java培训为主的达内,已经上市. 根据IDC的统计,在所有软件开发类人才的需求中,对JAVA工程师的需求曾达到全部需求量的50%以上.而且,JAVA工程师 ...
- plsql 常用函数-转
PLSQL常用函数 1)处理字符的函数 || 或 CONCAT---并置运算符. 格式∶CONCAT(STRING1, STRING2) 例:’ABC’|| ’DE’=’ABCDE’ CONCAT(‘ ...
- Ubuntu 设置NAT共享网络(命令行方法)
本文介绍如何使用iptables来实现NAT转发,事实上就是将一台机器作为网关(gateway)来使用.我们假设充当网关的机器至少有网卡eth0和eth1,使用eth0表示连接到外网的网卡,使用eth ...
- Entity Framework 5中遇到的 mysql tinyint(1) 转换为 bool 的问题 (我用的是VS2013中的EF5版本)
数据有一个字段,用的是 tinyint 长度是1 默认值为0 , 当用vs2013中的 EF5来生成 实体模型之后,看到这个列被标识为 bool 类型 Mysql官方参考文档关于布尔类型的说明: ...
- centos7 centos中apache运行php需要连接mysql一直连不上,telnet访问mysql出错Connection closed by foreign host
执行命令: getsebool -a|grep httpd 发现 httpd_can_network_connect off 解决: setsebool httpd_can_network_conn ...