Joomla! 的 mod_security 規則集行政

Joomla! 的 mod_security 規則集行政

我運行多個託管伺服器,最近我經歷了很多針對基於 joomla 的網站的暴力攻擊。攻擊者似乎嘗試對administrator/index.php頁面進行暴力破解。

當他們嘗試使用以下規則集暴力破解 Wordpress 登入時,我通常會鎖定 IP:

SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000134
<Locationmatch "/wp-login.php">
SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000135,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
SecRule RESPONSE_STATUS "^302" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000136"
SecRule RESPONSE_STATUS "^200" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000137"
SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</Locationmatch>

但我找不到 Joomla! 的類似規則,因為回應狀態為“303 see other”,密碼有效和密碼無效。

有什麼幫助嗎?先致謝!

答案1

所以,這是我的答案。

通過檢查返回標頭,我注意到 Joomla!當登入正確時,後端會傳回一些HTTP標頭,當登入無效時,不傳回它們。

例如,點對點成功登入後返回標頭,因此我只需查找其長度> 0

SecAction phase:1,nolog,pass,initcol:ip=%{REMOTE_ADDR},id:5000144
<Locationmatch "/administrator/index.php">
    SecRule ip:bf_block "@gt 0" "deny,status:401,log,id:5000145,msg:'ip address blocked for 5 minutes, more than 10 login attempts in 3 minutes.'"
    SecRule RESPONSE_HEADERS:P3P "streq 0" "phase:5,t:none,nolog,pass,setvar:ip.bf_counter=0,id:5000146"
    SecRule RESPONSE_HEADERS:P3P "!streq 0" "phase:5,chain,t:none,nolog,pass,setvar:ip.bf_counter=+1,deprecatevar:ip.bf_counter=1/180,id:5000147"
    SecRule ip:bf_counter "@gt 10" "t:none,setvar:ip.bf_block=1,expirevar:ip.bf_block=300,setvar:ip.bf_counter=0"
</locationmatch>

答案2

已接受答案的問題在於,它沒有考慮刷新登入頁面的時間。因此,當使用者刷新登入頁面時,它將:1)重置計數器(這很糟糕)或2)將刷新計為失敗的登入(這也很糟糕)。

我們剛剛設計了一個處理 Joomla 暴力攻擊的規則,該規則基於「com_login」貼文值。如果該值在post值中,則表示登入失敗,如果不在則登入成功。可以找到規律這裡

相關內容