fail2ban 監獄無法正常工作

fail2ban 監獄無法正常工作

我正在嘗試使用fail2ban 阻止對nginx 的不可用腳本請求。

# Noscript filter /etc/fail2ban/filter.d/nginx-noscript.conf:
#
# Block IPs trying to execute scripts such as .php, .pl, .exe and other funny scripts.
#
# Matches e.g.
# 192.168.1.1 - - "GET /something.cgi
#
[Definition]
failregex = ^<HOST> -.*GET.*(\.asp|\.exe|\.pl|\.cgi|\scgi)
ignoreregex =

但如果訪問日誌中的引薦來源網址包含腳本標記,這也會產生點擊。例如這一行:(我混淆了 IP 和引用,並且截斷了多行,在真實日誌中這 4 行在一行上。)

1.2.3.4 - - [16/Dec/2013:18:01:10 +0100] "GET / HTTP/1.1" 
301 178 "http://referrer.com/default.aspx" 
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.41 Safari/537.36"

如何更改正規表示式以僅查找.asp該部分中的等GET /xxxxx HTTP

答案1

嗯,在正規表示式中有一個非常有趣的事情,那就是正規表示式是貪婪的。

即使他們在句子開頭找到了匹配項,他們也會繼續尋找並尋找句子中最後一個可用的匹配項。在您的情況下,它與“referrer.com/default.aspx”匹配,因為您有正規表示式來匹配 .asp,並且它還會與 .asp* 匹配任何內容。

因此,在使用正規表示式時,您需要非常具體。

為此,您應該嘗試以下操作:

failregex = ^<HOST> -.*GET.*(\.asp|\.exe|\.pl|\.cgi|\scgi)\"\s\d*

像這樣的東西應該​​會效果很好。如果無論如何它不起作用,現在您知道問題是什麼,並且我相信您可以通過在正則表達式中進行一些挖掘來修復它。

希望有幫助。

相關內容