wordpress - 在 nginx 下为 Wordpress 创建 fail2ban 过滤器
问题描述
我正在尝试在 nginx 下为 wordpress 创建一个 fail2ban 过滤器,但它不起作用,需要一些帮助。
日志:
111.111.111.111 - - [27/Oct/2019:02:54:48 +0200] "POST /wp-login.php HTTP/1.1" 200 1697 "http://my-wordpress.com/wp-login.php" "Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1"
筛选:
[INCLUDES]
before = common.conf
[Definition]
failregexe = <HOST> - - .* "POST /wp-login.php .* 200
ignoreregex =
监狱:
[wordpress]
enabled = true
port = http,https
filter = wordpress
logpath = /var/log/nginx/access.log
maxretry = 3
bantime = 3600
测试正则表达式
#fail2ban-regex /var/log/nginx/access.log /etc/fail2ban/filter.d/wordpress.conf
Running tests
=============
Use failregex filter file : wordpress, basedir: /etc/fail2ban
Use datepattern : Default Detectors
Use log file : /var/log/nginx/access.log
Use encoding : UTF-8
Results
=======
Failregex: 0 total
Ignoreregex: 0 total
Date template hits:
Lines: 72 lines, 0 ignored, 0 matched, 72 missed
[processed in 0.01 sec]
Missed line(s): too many to print. Use --print-all-missed to print all 72 lines
这个正则表达式有什么问题?
我也试过
^<HOST>.*"POST./wp-login.php.*200.*$
^<HOST> - - .* "POST /wp-login.php .* 200
还有很多....
解决方案
有一个错字(删除最后一个e
):
- failregexe = ...
+ failregex =
顺便说一句:你真的想禁止第 200 条回复吗?(200 表示正常)。此外,您的正则表达式太“脆弱”,最好使用锚定且更精确的东西,如下所示:
^<HOST> - \S+ \[\] "[A-Z]+ /wp-login.php [^"]+" 200
如果您想捕获其他代码并且仅用于具有真实用户名的用户,甚至可以使用(?!- )\S+ ... [54]0\d+
代替(因此会忽略用户登录为的握手请求)。\S+ ... 200
-
推荐阅读
- java - 如何打印出 BFS 采用的路径?
- python - 计算几个 xarray 变量的平均值
- mysql - Docker 为 MySQL 创建卷
- c# - 如何使用 Response.Redirect 将 htm 页面重定向到另一个页面?
- github - AppVeyor授权操作Github账号变更
- kubernetes - 在 openshift 路由中获取 502 bad gateway
- amazon-web-services - 用于列出 AWS S3 存储桶中的子文件夹的 Windows CLI 命令
- elasticsearch - 如何在弹性搜索中查询单词的替代拼写和表示?
- c# - 如何通过 ASP 查询会话名称和 ID 号>
- javascript - 下面的代码使用 lastIndexOf 方法。为什么到达position = 0后的代码,它开始无限打印f?