# 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 eg # 192.168.1.1 - - "GET /something.cgi # [Definition] failregex = ^<HOST> -.*GET.*(\.asp|\.exe|\.pl|\.cgi|\scgi) ignoreregex =
但是如果访问日志中的引用者拥有脚本标签,这也会产生一个命中。 例如:(我已经混淆了IP和引用者,并且我截断了多行,在真正的日志中,这四行是在一行上)。
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"
我怎样才能改变正则expression式在GET /xxxxx HTTP部分find.asp等?
那么在正则expression式中有非常有趣的东西,正则expression式是贪婪的。
即使他们在开始的时候得到了比赛,他们也会继续寻找,并且将会进入最后的比赛。 在你的情况下,它匹配这个“referrer.com/default.aspx”,因为你有正则expression式来匹配.asp,它也会匹配任何与.asp *。
所以,在使用正则expression式时,你需要非常具体。
为此,你应该试试这个:
failregex = ^<HOST> -.*GET.*(\.asp|\.exe|\.pl|\.cgi|\scgi)\"\s\d*
像这样的东西应该工作得很好。 如果无论如何它不起作用,现在你知道什么是问题,我相信你可以用正则expression式挖一点点来修复它。
希望这有助于。