Mod-Security
測試 mod_security 是否實際工作
我第一次在我的登台伺服器上執行它,我認為我做的一切都是正確的。當我對它執行 nikto2 時,我可以在 modsec_audit.log 中看到條目,但是對於我的生活,我無法手動使 mod_security 阻止任何內容。我已經將 SQL 放入 URL、表單等中,我只是得到了我們典型的使用者友好的 HTML 404 頁面,而不是來自 mod_security 的塊,它應該是 403 錯誤或完全塊。
我擔心它只是檢測而不是停止。我檢查了我的配置,它肯定會阻止攻擊,而不僅僅是檢測它們。關於如何驗證這個東西實際上是阻止攻擊的任何想法?任何人都有一個測試 URL 或者我可以做的事情會向我證明它確實有效?
預設情況下,引擎只會檢測模式:
SecRuleEngine DetectionOnly
你需要調整
SecRuleEngine On
sed -ie 's/^\s*SecRuleEngine DetectionOnly/SecRuleEngine On/' /etc/modsecurity/modsecurity.conf
並重新啟動 Apache。
在您的瀏覽器中嘗試訪問託管在該伺服器上的網站,如下例所示:
http://www.anywebsitefromthatserver.com/aphpfilethatdonotexist.php?something=../../etc
然後檢查 Modsecurity 日誌,你會有類似的東西(如果你有 WHM / cPanel -> 簽入 WHM -> Modsecurity Tools 以查看日誌):
2017-12-14 10:28:41 www.anywebsitefromthatserver.com YOUR IP: 68.XX.XX.XX CRITICAL 404 930100: Path Traversal Attack (/../)
詳細的日誌將如下所示:
Request: GET /aphpfilethatdonotexist.php?something=../../etc Action Description: Warning. Justification: Pattern match "(?i)(?:\\x5c|(?:%(?:c(?:0%(?:[2aq]f|5c|9v)|1%(?:[19p]c|8s|af))|2(?:5(?:c(?:0%25af|1%259c)|2f|5c)|%46|f)|(?:(?:f(?:8%8)?0%8|e)0%80%a|bg%q)f|%3(?:2(?:%(?:%6|4)6|F)|5%%63)|u(?:221[56]|002f|EFC8|F025)|1u|5c)|0x(?:2f|5c)|\\/))(?:%(?:(?:f(?:(?:c%80|8)%8)?0%8 ..." at REQUEST_URI_RAW.
如果您會看到類似的日誌,那麼您可以確定您的 Modsecurity 已啟動並正常工作。