读“ModSecurity配置关键字说明”之摘抄
通用格式
?SecRule VARIABLES OPERATOR [TRANSFORMATION_FUNCTIONS, ACTIONS]
階段phase
? (1) request headers
? (2) request body
? (3) response headers
? (4) response body
? (5) logging
??
一、變量variable
? 綠色:請求變量? 藍(lán)色:server變量 紫色:響應(yīng)變量 紅色:請求體解析變量 黑色:時間變量? 橙色:實體變量
? ?
ModSecurity???? |
| ARGS 請求參數(shù),類型read-only collection |
| ARGS_COMBINED_SIZE 請求參數(shù)的總大小 |
| ARGS_NAMES 請求參數(shù)的名字,類型read-only collection |
| ARGS_GET 查詢字符串參數(shù),類型read-only collection |
| ARGS_POST 請求體參數(shù),類型read-only collection |
| ARGS_POST_NAMES 請求體參數(shù)的名字,類型read-only collection |
| FILES 上傳文件域,類型read-only collection |
| FILES_COMBINED_SIZE 上傳文件大小 |
| FILES_NAMES 上傳文件表單文件域參數(shù)的名字,類型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 請求體,默認(rèn)處理application/x-www-form-urlencoded請求 |
| REQUEST_COOKIES cookie參數(shù) |
| REQUEST_COOKIES_NAMES cookie參數(shù)的名字,類型read-only collection |
| REQUEST_COOKIES_FILENAME URI filename/path |
| REQUEST_HEADERS 請求頭,類型read-only collection |
| REQUEST_HEADERS_NAMES 請求頭參數(shù)的名字,類型read-only collection |
| REQUEST_LINE 請求行 |
| REQUEST_METHOD 請求方法 |
| REQUEST_PROTOCOL 請求協(xié)議 |
| REQUEST_URI 請求URI,但不包括hostname |
| REQUEST_URI_RAW請求URI,包括hostname |
| ? |
| AUTH_TYPE 認(rèn)證類型,代理模式下非本地認(rèn)證,需要指定Authorization頭 |
| REMOTE_ADDR 遠(yuǎn)程地址,訪問者ip |
| REMOTE_HOST 遠(yuǎn)程host,訪問者h(yuǎn)ostname,當(dāng)HostnameLookUps開啟時,為dns解析的域名,否則為ip地址 |
| REMOTE_PORT 遠(yuǎn)程端口,訪問者端口 |
| REMOTE_USER 訪問者用戶名 |
| SERVER_ADDR 服務(wù)端地址 |
| SERVER_NAME 服務(wù)端hostname,取值Host請求頭 |
| SERVER_PORT 服務(wù)端端口 |
| SCRIPT_BASENAME 腳本basename,代理模式不可用 |
| SCRIPT_FILENAME 腳本filename,代理模式不可用 |
| SCRIPT_GID 腳本group ID,代理模式不可用 |
| SCRIPT_GROUPNAME 腳本group name, 代理模式不可用 |
SCRIPT_MODE 腳本權(quán)限,代理模式不可用 1? ?表示可執(zhí)行 2? ?表示可寫 4? ?表示可讀 7? ?表示可讀可寫可執(zhí)行 |
| SCRIPT_UID 腳本user ID,代理模式不可用 |
| SCRIPT_USERNAME 腳本user name,代理模式不可用 |
| RESPONSE_BODY 響應(yīng)體 |
| RESPONSE_CONTENT_LENGTH 響應(yīng)實體長度,單位bytes |
| RESPONSE_CONTENT_TYPE 響應(yīng)實體類型,僅僅在phase3可用 |
RESPONSE_HEADERS 響應(yīng)頭,類型read-only collection 在內(nèi)嵌模式中,像那種會優(yōu)先將數(shù)據(jù)發(fā)送給客戶端的響應(yīng)頭是不可獲得的,例如Server,Date,Connection,Content-Type 在代理模式中,階段5可用 |
RESPONSE_HEADERS_NAMES 響應(yīng)頭參數(shù)的名字,類型read-only collection 在內(nèi)嵌模式中,像那種會優(yōu)先將數(shù)據(jù)發(fā)送給客戶端的響應(yīng)頭是不可獲得的,例如Server,Date,Connection,Content-Type 在代理模式中,階段5可用 |
| RESPONSE_PROTOCOL 響應(yīng)協(xié)議 |
| RESPONSE_STATUS 響應(yīng)碼,僅代理模式可用 |
TX 事件內(nèi)變量,類型read/write collection 當(dāng)使用operator @rx或@pm時,TX:0表示capture action捕獲的變量 TX:1-TX:9:表示capture action捕獲的子串 |
| RULE rule元數(shù)據(jù),類型read/write collection, 用于設(shè)置Rule對象的屬性:id,rev,severity,logdata,msg |
SESSION session數(shù)據(jù),類型read/write collection 僅當(dāng)setsid action執(zhí)行后使用,session對象的屬性,SCORE得分,BLOCKED是否阻塞 |
| GEO geo信息,類型read-only collection |
| ENV 環(huán)境變量,類型read-only collection,但可以使用setvar來修改變量的值 |
| GLOBAL 全局變量,類型read/write collection |
| IP 存儲的ip數(shù)據(jù),類型read/write collection |
| USER user數(shù)據(jù),類型read/write collection |
| XML xml dom相關(guān)的,類型read-only collection |
| HIGHEST_SEVERITY 嚴(yán)重級別,值越小級別越高,255表示未設(shè)置嚴(yán)重級別 |
| MATCHED_VAR 最近一次匹配的變量 |
| MATCHED_VAR_NAME 最近一次匹配的變量的名字 |
| MODSEC_BUILD modsecurity版本號 |
SESSION_ID sessionID |
| USERID user ID |
| WEBAPPID web app ID |
| WEBSERVER_ERROR_LOG server產(chǎn)生的錯誤信息 |
| 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作為分界線,當(dāng)允許使用混合符號時設(shè)置為1 |
| MULTIPART_DATA_BEFORE multipart 解析錯誤:第一個boudnary前有數(shù)據(jù) |
| MULTIPART_DATA_AFTER multipart 解析錯誤:最后一個boudnary后有數(shù)據(jù) |
| MULTIPART_HEADER_FOLDING multipart解析錯誤:boudnary中 |
| MULTIPART_LF_LINE multipart解析錯誤:使用\n作為分界線 |
| MULTIKPART_SEMICOLON_MISSIONG multipart解析錯誤:缺少分號 |
MULTIPART_STRICT_ERROR 當(dāng)以下值為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解析錯誤:不合規(guī)范的boudnary,容易漏報 |
| REQBODY_PROCESSOR 處理request解析,內(nèi)置的解析功能包括URLENCODED,MULTIPART,XML |
| REQBODY_PROCESSOR_ERROR request解析錯誤標(biāo)記,1表示錯誤,0表示ok |
| REQBODY_PROCESSOR_ERROR_MSG request解析錯誤信息 |
| URLENCODED_ERROR 當(dāng)解析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相關(guān) |
| @validateSchema XML相關(guān) |
| @validateUrlEncoding |
| #validateUtf8Encoding |
| @geoLookup |
| #inspectFile 使用外部腳本處理 |
| @rbl 去RBL REAL-TIME BLANKHOLE LISTS反垃圾郵件黑名單里查找ipv4地址,或hostname |
| @verifyCC |
三、事件函數(shù)transform function
| ModSecurity |
| base64Decode |
| base64Encode |
| compressWhitespace |
| cssDecode |
| escapeSeqDecode 解碼ANSI/C escape序列 |
| hexDecode |
| hexEncode |
| htmlEntityDecode |
| jsDecode |
| length |
| lowercase |
| md5 |
| none 移除當(dāng)前rule的所有transformation functions |
| normalizePath 移除掉多個斜杠 |
| normalizePathWin 移除掉多個斜杠,但首先會將\(win正斜杠)轉(zhuǎn)化成/(linux反斜杠) |
| parityEven7bit |
| parityOdd7bit |
| parityZero7bit |
| removeNulls 刪除空字節(jié) |
| removeWhiteSpace 刪除空格字符 |
| replaceComments 將c格式的注釋語句/*...*/轉(zhuǎn)換為空格ASCII 32 |
| replaceNulls 將null字節(jié)轉(zhuǎn)換為空格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只能出現(xiàn)在第一個rule中)
? 藍(lán)色:flow action? ? 紫色:metadata action? ? ?紅色:variable action? ? 黃色:logging action? ? 灰色:special action 黑色:其他
| ModSecurity |
allow 2.5版本之前是只影響當(dāng)前階段 2.5版本之后,遵守以下規(guī)則 (1) 如果單獨使用,除了log階段,其他階段都停止處理 (2) 如果和參數(shù)phase一起使用,allow將停止當(dāng)前階段的處理,其他階段不受影響 |
| block 相當(dāng)于占位符,會被上下文的SecDefaultAction 指令中的動作取代 |
| deny 使用錯誤頁面block當(dāng)前事務(wù) |
| drop 斷開網(wǎng)絡(luò)連接 |
| pass 繼續(xù)執(zhí)行下一個規(guī)則 |
| proxy 代理請求到后端web server |
| redirect 重定向請求到其他web server |
| chain 相當(dāng)于多個規(guī)則的and操作 |
| skip 跳過指定的規(guī)則,值為跳過的規(guī)則個數(shù),不能跳過同一個規(guī)則鏈中的規(guī)則 |
| skipAfter 調(diào)轉(zhuǎn)到指定的規(guī)則 |
| id 設(shè)置規(guī)則ID |
| phase 指明處理階段 |
| msg |
| rev 設(shè)置版本號 |
| severity? 設(shè)置rule的嚴(yán)重級別,最好用文本來指定,v2.5.0版本已經(jīng)棄用 |
| tag |
| capture 將捕獲結(jié)果存入TX變量,可以存儲10個變量,tx變量集合的下標(biāo)為0-9 |
| deprecatevar 設(shè)置指定時間內(nèi)遞減數(shù)字型變量 |
| expirevar 設(shè)置指定時間內(nèi)移除過期的變量 |
| initcol 創(chuàng)建持久性collections,通常在階段1中設(shè)置 |
| setenv 設(shè)置環(huán)境變量 |
| setvar 設(shè)置變量 |
| setuid 設(shè)置當(dāng)前事務(wù)的user ID |
| setsid 設(shè)置當(dāng)前事務(wù)的session ID |
| auditlog 將當(dāng)前事務(wù)記錄到log中 |
log |
| logdata |
| noauditlog |
| nolog |
| sanitiseArg 在日志中將指定的請求參數(shù)替換為* |
| sanitiseMatched 在日志中將指定的請求參數(shù),請求頭,響應(yīng)頭替換為* |
| sanitiseRequestHeader 在日志中將指定的請求頭替換為* |
| sanitiseResponseHeader 在日志中將指定的響應(yīng)頭替換為* |
| ctl 改變當(dāng)前事務(wù)的配置 |
| multiMatch 每次變量發(fā)生變化會進(jìn)行以此匹配計算 |
| t 在對變量做匹配操作前指定調(diào)用的事務(wù)處理函數(shù) |
| append 響應(yīng)體中注入內(nèi)容,該action必須開啟SecContentInjection指令 |
| exec 執(zhí)行外部腳本或二進(jìn)制文件 |
| pause 暫定事務(wù)處理 |
| prepend 響應(yīng)體中注入內(nèi)容,該action必須開啟SecContentInjection指令 |
| status action 為deny與redirect action時指定響應(yīng)碼 |
| xmlns XML專用 |
五、指令directory
| ModSecurity |
| SecRule |
| SecRuleInheritance |
| SecRuleRemoveById |
| SecRuleRemoveById |
| SecRuleUpdateActionById? 更新指定RuleID的rule action |
| SecRuleScript |
| SecMarker |
| SecAction |
| SecDefaultAction? ?設(shè)置默認(rèn)的action |
?:? 數(shù)組取值操作符? eg.ARGS:p
?!? 非操作符? ?eg:ARGS|!ARGS:z
?@ 操作符函數(shù)調(diào)用? ?eg. @rx
?t? 事務(wù)函數(shù)調(diào)用? ?eg.t:lowercase
?&? 取數(shù)組個數(shù)符? ?eg.&ARGS @ge 1
?%{COLNAME.VARNAME} 變量擴(kuò)展符 eg.SecRule REQUEST_URI_RAW "!@beginsWith http://%{REQUEST_HEADERS.Host}" "drop,tag:'WEB_ATTACK/ILLEGALHTTPPROTOCOL',msg:'host header illegal',id:00001,phase:2"
總結(jié)
以上是生活随笔為你收集整理的读“ModSecurity配置关键字说明”之摘抄的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 记录安装php与apache不兼容的过程
- 下一篇: 参考资料学习APR库