Logging
mod_security:行動審計日誌的意義何在?
我正在擺弄 mod_security 來記錄特定 URI 的 POST 請求有效負載。
如此響應https://serverfault.com/a/729079/292993中所述,對類似問題 mod_security 的 AuditEngine 的工作方式如下:
它還將根據您的 SecAuditEngine 值設置為記錄到 AuditEngine:
- 如果您將 SecAuditEngine 設置為 On,則所有內容都會記錄到審核日誌中,並且不需要上述規則。這會很快填滿日誌文件,因此不推薦。
- 如果您將 SecAuditEngine 設置為 RelevantOnly,那麼它只會記錄到審核引擎的某些返回程式碼(由您的 SecAuditLogRelevantStatus 定義)。這通常僅針對錯誤 (5xx) 或訪問被拒絕(4xx - 儘管通常沒有 404s)進行。由於您沒有拒絕訪問(並且可能不想拒絕!),因此不會將其記錄到審核日誌中。
- 如果 SecAuditEngine 設置為 Off,則永遠不會將其記錄到審核日誌中。
通常最好將 SecAuditEngine 設置為 RelevantOnly (我懷疑這是你已經擁有的)。正確的方法是使用您使用 ctl 操作提供的其他規則:
SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,log,pass"
這會強制 AuditEngine 為發布請求打開 - 即使請求成功,通常不會記錄。
牢記這一點,
auditlog
如果我必須ctl
在請求級別上打開 AuditEngine 以將某些內容記錄到審核日誌中,那麼該操作的意義何在?
我寫了您引用的答案,在閱讀您的問題後進行了一些測試後,我意識到它不准確。會更新它。
經過一些實驗,我發現了以下內容:
- 如果 SecAuditEngine 設置為On,那麼 auditlog 將沒有實際效果,因為無論如何都會記錄請求。
- 如果 SecAuditEngine 設置為Off,則 auditlog 將不起作用,因為無論如何都不會記錄請求。
- 如果 SecAuditEngine 設置為RelevantOnly,則 auditlog 將導致記錄規則的觸發。即使您不拒絕訪問(這是您引用的上述答案中的錯誤)。
auditlog
那麼和 和有什麼區別ctl:auditEngine=On
呢?好吧,不多,但我可以看到兩個主要區別:
Auditlog
當 SecAuditEngine 設置為關閉時將不起作用。而ctl:auditEngine=On
會工作。ctl:auditEngine=On
可用於在不顯示實際規則的情況下打開審核。例如,如果您有以下情況:SecRule REQUEST_METHOD "POST" "id:22222224,phase:2,ctl:auditEngine=On,nolog,pass"
然後該請求將記錄在審核日誌中,但不會提及規則 22222224(因為它設置為
nolog
)。這可能有用與否:規則 22222224 的存在可能會增加混淆,因為此規則沒有實際的安全問題(它只是用於打開 AuditEngine),也許您只希望在審計和錯誤日誌中記錄真正的安全規則. 另一方面,它可能會讓人們感到困惑,為什麼在審計日誌中沒有明顯的規則觸發導致它被放在那裡。最終沒有太大的區別,更多的是你想要使用的品味問題。