modSecurity規則學習(二)——配置文件


crs-setup.cnf

#SecDefaultAction指令后的規則都繼承這一設置,除非為某條規則指定了一個特定的動作,或者指定了新的SecDefaultAction。特別注意到,未經處理的disruptive動作是不允許的,但是在SecDefautlAction中一不小心就會繼承了使用disruptive動作。
#SecDefaultAction必須指定一個disruptive動作和處理階段,而且不能包含元數據動作
SecDefaultAction "phase:1,log,auditlog,pass" SecDefaultAction "phase:2,log,auditlog,pass"

SecAction \
"id:900990,\
phase:1,\
nolog,\
pass,\
t:none,\
setvar:tx.crs_setup_version=302"

 

 

ModSecurity 2.x允許把規則置於下述五個階段之一:

請求頭(REQUEST_HEADERS) 階段

這個階段的規則會在apache完成請求頭的讀取后立即被執行(post-read-request階段),這時,還沒有讀取請求體,意味着不是所有的參數都可用。如果你必須讓規則盡早運行,應把規則放在這個階段(在apache使用這個請求做某些事前),在請求體被讀取前做些事情,從而決定是否緩存這個請求體,或者決定你將希望這個請求體如何被處理(如是否以XML格式解析或不解析)。

請求體(REQUEST_BODY) 階段

這是通用輸入分析階段,大部分傳統的應用規則不在這兒,這個階段你肯定能收到參數(只有讀取過請求體后),在請求體階段,ModSecurity支持三種編碼類型。

l  application/x-www-form-urlencoded - used to transfer form data

l  multipart/form-data - used for file transfers

l  text/xml - used for passing XML data

大部分WEB應用還沒有使用其它的編碼方法。

響應頭(RESPONSE_HEADERS) 階段

發生在響應頭被發送到客戶端之前,如果你想觀察響應發生前就在這兒運行,如果你想使用響應頭來決定你是否想緩存響應體也行。注意一些響應狀態碼(如404)在請求環的早期就被apache管理着,我也無法觸發預期。加上apache在后面的勾子上雙增加了一些響應頭(如日期、服務器和連接信息等),這些我們無法觸發和審查。在代理配置模式下或使用phase:5(logging)工作的較好。

響應體(RESPONSE_BODY) 階段

這是通用輸出分析階段,這里你能運行規則截斷響應體(當然提供緩存)。這個階段你想檢查輸出的HTML信息公布、錯誤消息和失敗的驗證文字。

記錄(LOGGING) 階段

在日志發生前運行的一個階段,放在這個階段的規則只能影響日志記錄器如何執行,這個階段可以檢測apache記錄的錯誤消息,在這個階段你不能拒絕或阻斷連接,因為太遲了,這個階段也允許檢測其它的響應頭,如那在phase:3或者phase:4階段中不可用的。注意在這個階段,你應當小心不要繼承破壞性的動作到規則中,這樣的情況在ModSecurity2.5.0及其以后的版本中被當作配置錯誤。

圖-1是標准的apache請求流程,5個ModSecurity處理階段顯示其中。因此,在rule的部分即可指定你要處理的哪一部份進行處理。

圖-1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM