我在 nginx 上设置了一些特定的规则,阻止了一些 url 和一些扩展(aspx、sh、jsp 等)。我还为 403|429|410 错误启用了自定义访问日志文件,因此我只能在一个地方获得所有拒绝访问的日志。
我的目标是让 fail2ban 读取此日志,并且对于每个以 403 错误结尾的 GET/POST,IP 都应该被禁止。
1) nginx.conf 将记录自定义错误日志文件,如下所示:
log_format 限制 '$time_local - $remote_addr "$request" $status';
这是一个日志条目:
03/Jan/2017:15:53:01 +0100 - 1.2.3.4 "GET /aaa.jsp HTTP/1.1" 403
2)我有一个像这样的fail2ban过滤器(取自这里)
^<HOST> .* "(GET|POST) [^"]+" 403
3)我试过fail2ban-regex
fail2ban-正则表达式 /var/log/nginx/access-live-limitbot-website.log /etc/fail2ban/filter.d/nginx-403.conf
这是输出
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
|- [# of hits] date format
| [1] Day/MONTH/Year:Hour:Minute:Second
`-
Lines: 2 lines, 0 ignored, 0 matched, 2 missed
|- Missed line(s):
| 217.19.158.242 "POST /wp-login.php HTTP/1.1" 403
| 03/Jan/2017:15:53:01 +0100 - 217.19.158.242 "GET /aaa.jsp HTTP/1.1" 403
`-
而且我永远不会得到与错误代码匹配的条目。
有人会根据我的自定义日志帮助我使用正则表达式吗?
谢谢你