fail2ban.filter:ERROR No' host'在发现

时间:2015-09-18 13:00:57

标签: fail2ban

我正在尝试使用带有我的nginx-logs的fail2ban来阻止正在扫描我的网站以获取管理页面的脚本。但是我在fail2ban-log中遇到了这样的错误(使用不同的请求/ useragents / remote_addresses):

2015-09-18 14:45:42,137 fail2ban.filter : ERROR  No 'host' found in ' +0200 - ***.**.***.*** http://www.example.com - - "GET /admin HTTP/1.1" 404 737 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36"' using '<_sre.SRE_Pattern object at 0xc53590>'

我的fail2ban-regex看起来像这样:

failregex = \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404))

我的nginx-logformat看起来像这样:

log_format vhosts '$time_local - $remote_addr $scheme://$host - $remote_user "$request" $status $body_bytes_sent "$http_referer" "$http_user_agent"';

当我使用该日志行运行fail2ban-regex时,我得到:

fail2ban-regex '18/Sep/2015:14:45:42 +0200 - ***.**.***.*** http://www.example.com - - "GET /admin HTTP/1.1" 404 737 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Ubuntu Chromium/44.0.2403.89 Chrome/44.0.2403.89 Safari/537.36"' '\+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404))'

Running tests
=============

Use   failregex line : \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404))
Use      single line : 18/Sep/2015:14:45:42 +0200 - ***.**.***.*** http:/...


Results
=======

Failregex: 1 total
|-  #) [# of hits] regular expression
|   1) [1] \+0200 - <HOST> https?://.*[Aa]dmin.* ((301)|(404))
`-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [1] Day/MONTH/Year:Hour:Minute:Second
`-

Lines: 1 lines, 0 ignored, 1 matched, 0 missed

IP替换为 。* 。 www.example.com上的主持人地址。在fail2ban-regex中,我使用了真正的ip和主机。

1 个答案:

答案 0 :(得分:0)

我不完全记得我是如何解决这个问题的,但我目前正在使用的failregex看起来像这样:

failregex = ^.*?<HOST> https?://.*?[Aa]dmin.*? ((301)|(404)).*$

我猜这个修补程序更加敏捷.*?而不是\+0200 -或开头的^以及最后的$