2017-08-17 68 views
0

我目前正在優化我的fail2ban過濾器。Fail2ban未能匹配日期格式

我正則表達式之前是這樣的:

<HOST> \- \- \[.*\] \"(GET|POST) .+ HTTP\/\d\.\d\" 40\d \d{2,5} \"(.*)\" \"(.*)\"$ 

,它是在爲一個包含404錯誤這樣的每一行:

<HOST> - - [16/Aug/2017:14:02:33 +0200] "GET /favicon.ico HTTP/1.1" 404 6494 "-" "Mozilla/5.0 (Windows NT 6.1; Win64; x64; Trident/7.0; rv:11.0) like Gecko" 

之後,我改變了:

\[.*\] 

通過

\[[0-9]{2}\/.{3}\/[0-9]{4}\:([0-9]{2}\:){2}[0-9]{2} \+[0-9]{4}\] 

但現在它與fail2ban不再匹配,而像regex101這樣的網站仍然認可正確的模板! (不要介意\ HOST,如果我沒有把這個詞出現的話)。

我試圖通過[0-9]/通過\/改變\ d\: 的fail2ban總是錯過了線,我不知道爲什麼。 。

是否有人遇到同樣的問題?謝謝 ! :)

+0

你是故意逃避兩個'*'在第一正則表達式的結束?這似乎阻止了它的工作。 我可以通過以下方法使其與您的更改一起運行:http://regexr.com/3giqc – Bananaapple

+0

@Bananaapple不會在代碼塊語法之前忘記刪除它。我的第二個正則表達式可以和你的在線工具一起工作,但不會與fail2ban:/ – Levrifon

+0

嗯,根據http://fail2ban.readthedocs.io/en/latest/filters。html#regular-expressions fail2ban使用Python的正則表達式,即使我測試它與特定的風格相比,你的正則表達式也能正常工作:https://www.debuggex.com/r/xC-YEMB4P-DM-Td2 - 這留下了兩個選項然後。 1 - fail2ban中的錯誤,2 - 您的錯誤或其他疏忽。你測試過他們的命令行工具的正則表達式嗎? ./fail2ban-regex --help – Bananaapple

回答

0

你需要躲避最後+和後]

\[[0-9]{2}/.{3}/[0-9]{4}:([0-9]{2}:){2}[0-9]{2} \+[0-9]{4}\]

而且,可能的話,正斜槓/ - 取決於特定的正則表達式的解釋。

+0

感謝您的回答,這些符號已經逃脫,但Stackoverflow刪除他們我糾正我的問題,謝謝;) – Levrifon

+0

@Levrifon你應該使用代碼格式,而不是blockquotes。 –

+0

@SebastianProske謝謝:)我改變了對不起 – Levrifon

0

可能唯一需要的模式是:<HOST> .* 404這應該根據實際日誌進行測試。 fail2ban-regex命令行實用程序對測試非常有用。

請注意,可能存在誤報,因此在主機之後移動響應代碼並在此之後獲得日期/時間會更容易,在這種情況下^<HOST> 404會更加精確。

關於性能,看起來這將不太容易出錯,並且如果不比更長的速度更快,速度會更快。請參閱下面有關過濾器性能提示的第二個鏈接

+0

感謝您的回答,這是工作是的,但它是最佳的執行時間? – Levrifon

+0

我已經回覆了最佳執行時間問題。 – jeffmcneill