ModSecurity: Rule -- Handling

1. Header Handling

SecUnicodeMapFile

  • Description: 定义 urlDecodeUni 转换函数将使用的文件的路径, 以便在规范化过程中映射 Unicode 代码点, 并指定要使用的代码点。
  • Scope: Any
  • Syntax: SecUnicodeMapFile /path/to/unicode.mapping CODEPOINT
SecUnicodeMapFile unicode.mapping 20127

SecUnicodeCodePage

  • Description: 定义在规范化期间, urlDecodeUni 转换函数将使用哪个 Unicode 码点。
    • Version: < v2.6.1
  • Scope: Any
  • Syntax: SecUnicodeCodePage XXXXX
SecUnicodeCodePage 20127

SecCookieFormat

  • Description:Cookie version配置
  • Scope: Any
  • Syntax: SecCookieFormat 0|1
    • 默认值为 0

SecCookieV0Separator

  • Description:Version 0的cookie分割符配置
  • Scope: Any
  • Syntax: SecCookieV0Separator character

SecServerSignature

  • Description: 更改response中server header
    • Apache ServerTokens命令必须置为Full
  • Scope: Main,不支持VirtualHost
  • Syntax: SecServerSignature "WEB SERVER SOFTWARE"

2. Body Handling

2.1 Request body

SecRequestBodyAccess

  • Description: 允许Mod_Security缓存request body
  • Scope: Any
  • Syntax: SecRequestBodyAccess On|Off

SecArgumentSeparator

  • Description:当 application/x-www-form- urlencoded使用的不是标准的分隔符的时候,使用该命令更改分隔符进行匹配。如果配置不正确,规则匹配有效性将大大降低。
  • Scope: Any
  • Syntax: SecArgumentSeparator character
    • character:默认为&

SecRequestBodyInMemoryLimit

  • Description:存储在RAM中的request body大小。multipart/form-data请求,超过该限制将被存储在disk临时文件中。
  • Scope: Any
  • Syntax: SecRequestBodyInMemoryLimit LIMIT_IN_BYTES

SecRequestBodyLimit

  • Description:允许mod_security缓存的request body大小,超过限制回413。Phase 1 RULE。
  • Scope: Any
  • Syntax: SecRequestBodyLimit LIMIT_IN_BYTES
    • 默认值:134217728 (131072 KB)

SecRequestBodyLimitAction

  • Description: 配置request body达到限制时的action
  • Scope: Any
  • Syntax: SecRequestBodyLimitAction Reject|ProcessPartial
  • Reject:拒绝请求,默认值
  • ProcessPartial:部分处理

SecRequestBodyNoFilesLimit

  • Description:非上传文件的request body缓存限制,上传文件不消耗内存,不受该命令影响。
  • Scope: Any
  • Syntax: SecRequestBodyNoFilesLimit NUMBER_IN_BYTES
    • 默认值:1048576 (1 MB),对大部分Web应调小到128K

SecTmpDir

  • Description: 临时文件存放位置,临时文件包括超出限制的request body,配置限制的命令为 SecRequestBodyInMemoryLimit, Apache user process对该目录需要有write权限。
  • Scope: Any
  • Syntax: SecTmpDir /path/to/dir

SecStreamInBodyInspection

  • Description: 配置在 re-allocable 缓冲区中对入站请求数据使用流检查的能力。受server资源限制。
  • Scope: Any
  • Syntax: SecStreamInBodyInspection On|Off
    • Default: Off

2.2 File Upload Interception

SecUploadKeepFiles

  • Description:是否截获上传文件
  • Scope: Any
  • Syntax: SecUploadKeepFiles On|Off|RelevantOnly
    • RelevantOnly: 只保存触发error或者warning的上传文件

SecUploadDir

  • Description:Mod_security截获的上传文件存放位置
  • Scope: Any
  • Syntax: SecUploadDir /path/to/dir

SecUploadFileMode

  • Description:截获的上传文件权限设置, 该命令可以用于开放clamd (第三方病毒扫描)账户对上传文件的权限。
  • Scope: Any
  • Syntax: SecUploadFileMode octal_mode|"default"
    • Default: 只对创建文件的账户开放read/write权限

SecUploadFileLimit

  • Description:一个请求中允许上传的文件个数
  • Scope: Any
  • Syntax: SecUploadFileLimit number

2.3 Response Body

SecResponseBodyAccess

  • Description:允许Mod_Security缓存response body
  • Scope: Any
  • Syntax: SecResponseBodyAccess On|Off

SecResponseBodyMimeType

  • Description: 检查哪些MIME类型的response,没有配置的MIME TYPE将不做response body检查。
  • Scope: Any
  • Syntax: SecResponseBodyMimeType MIMETYPE MIMETYPE ...
    • null:匹配 没有指定MIME TYPE的response

SecResponseBodyMimeTypesClear

  • Description: 清除SecResponseBodyMimeType配置, 允许重新配置。
  • Scope: Any
  • Syntax: SecResponseBodyMimeTypesClear

SecResponseBodyLimit

  • Description:允许缓存的response body size,超出该限制的response由SecResponseBodyLimitAction决定如何处理
  • Scope: Any
  • Syntax: SecResponseBodyLimit LIMIT_IN_BYTES
    • Default: 524288 (512 KB)

SecResponseBodyLimitAction

  • Description: 处理超出SecResponseBodyLimit定义限制的response
  • Scope: Any
  • Syntax: SecResponseBodyLimitAction Reject|ProcessPartial
    • ProcessPartial:超出部分不做处理,直接转发给client
    • Reject:超出限制的response被丢弃,发送500给client

SecDisableBackendCompression

  • Description:禁用后台压缩, 同时使前端压缩处于启用状态。
  • Scope: Any
  • Syntax: SecDisableBackendCompression On|Off

SecContentInjection

  • Description:另一种方式控制是否截获response body,当需要使用@rsub + STREAM_时,必须打开这个开关。
  • Scope: Any
  • Syntax: SecContentInjection On|Off

SecStreamOutBodyInspection

  • Description: 配置在 re-allocable 缓冲区中对出站请求数据使用流检查的能力。
  • Scope: Any
  • Syntax: SecStreamOutBodyInspection On|Off
    • Default: Off

2.4 Persistent data

SecDataDir

  • Description:存储persistent data的位置
  • Scope: Main
  • Syntax: SecDataDir /path/to/dir

3. Log Handling

3.1 Debug log

SecDebugLog

  • Description:Debug log存放位置及log文件名字
  • Scope: Any
  • Syntax: SecDebugLog /path/to/modsec-debug.log

SecDebugLogLevel

  • Description:Debug log等级,不低于配置级别的log将被记录; 1-3级别的log将被记到apache error logs
  • Scope: Any
  • Syntax: SecDebugLogLevel 0|1|2|3|4|5|6|7|8|9
    • 0:No logging
    • 1: Errors (e.g., fatal processing errors, blocked transactions)
    • 2: Warnings (e.g., nonblocking rule matches)
    • 3: Notices (e.g., nonfatal processing errors)
    • 4: Handling of transactions and performance
    • 5: Detailed syntax of the rules
    • 9: Detailed information about transactions

3.2 Audit log

SecAuditEngine

  • Description:审计log开关
  • Scope: Any
  • Syntax: SecAuditEngine RelevantOnly
    • On:Log everything
    • Off:Log nothing
    • RelevantOnly: 只记触发error或者warning的transaction

SecAuditLogType

  • Description: 配置要使用的审核日志记录机制的类型。
  • Scope: Any
  • Syntax: SecAuditLogType Serial|Concurrent|HTTPS
    • Serial : 所有审计log将被记录到SecAuditLog指定的一个文件中,速度慢。
    • Concurrent : 一个transaction对应一个log文件,加快速度;当使用远程log服务时,必须选择该机制。
    • HTTPS : 使用URL传输log。

SecAuditLog & SecAuditLog2

  • Description: 将审计log记录到指定文件中
  • Scope: Any
  • Syntax: SecAuditLog /path/to/audit.log
  • Syntax: SecAuditLog2 /path/to/audit.log
# Use a single file for logging.
SecAuditLogType Serial
SecAuditLog /usr/local/modsecurity/var/log/audit.log
# Copy the audit log to another file
SecAuditLog2 /usr/local/modsecurity/var/log/audit2.log

# Specify the path for concurrent audit logging.
SecAuditLogType Concurrent
SecAuditLogStorageDir /usr/local/modsecurity/var/audit/

SecAuditLogDirMode

  • Description: 配置审计log目录权限
  • Scope: Any
  • Syntax: SecAuditLogDirMode octal_mode|"default"

SecAuditLogFileMode

  • Description: 配置审计log文件权限
  • Scope: Any
  • Syntax: SecAuditLogFileMode octal_mode|"default"

SecAuditLogFormat

  • Description:配置审计log格式
  • Scope: Any
  • Syntax: SecAuditLogFormat JSON|Native
    • native: Default
    • JSON

SecAuditLogRelevantStatus

  • Description: 记录指定response status code的transaction
  • Scope: Any
  • Syntax: SecAuditLogRelevantStatus REGEX
SecAuditLogRelevantStatus "^(?:5|4(?!04))"

SecAuditLogParts

  • Description:审计log被分为多个部分,每个部分用一个字母代表,改命令用于配置记录那些部分
  • Scope: Any
  • Syntax: SecAuditLogParts PARTLETTERS
    • A:Audit log header (mandatory)
    • B:Request headers
    • C:Request body
    • D:Reserved
    • E:Response body
    • F:Response headers
    • G:Reserved
    • H:Audit log trailer, which contains additional data
    • I:Reduced multipart request body, which excludes files (alternative to part C)
    • J:Information on uploaded files (multipart requests)
    • K:Contains a list of all rules that matched for the transaction
    • Z:Final boundary (mandatory)

SecSensorId ?

  • Description:定义一个sensor ID,该ID将被记录在log H中
  • Scope: Main
  • Syntax: SecSensorId TEXT

Reference:
https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,324评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,356评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,328评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,147评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,160评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,115评论 1 296
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,025评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,867评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,307评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,528评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,688评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,409评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,001评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,657评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,811评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,685评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,573评论 2 353

推荐阅读更多精彩内容