如何让 Fail2Ban 的 nginx-botsearch 匹配一个字符串,但如果该字符串有额外的尾随字符,那么它也不会匹配相同的字符串?

如何让 Fail2Ban 的 nginx-botsearch 匹配一个字符串,但如果该字符串有额外的尾随字符,那么它也不会匹配相同的字符串?

系统是 Ubuntu 16.04。使用包管理器中的 fail2ban(当前版本为 0.9.3-1)。已在 jail.local 中启用 nginx-botsearch。

这是我的 /etc/fail2ban/filter.d/nginx-botsearch.local(请注意,nginx-botsearch 依赖于 botsearch-common):

[INCLUDES]

before = botsearch-common.conf
after = botsearch-common.local

[Definition]

failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) \/<block> \S+\" 404 .+$
        ^ \[error\] \d+#\d+: \*\d+ (\S+ )?\"\S+\" (failed|is not found) \(2\: No such file or directory\), client\: <HOST>\, server\: \S*\, request: \"(GET|POST|HEAD) \/<block> \S+\"\, .*?$

ignoreregex =

这是我的 /etc/fail2ban/filter.d/botsearch-common.local:

[Init]

block = \/?(<webmail>|<phpmyadmin>|<wordpress>|cgi-bin|mysqladmin)[^,]*

webmail = roundcube|(ext)?mail|horde|(v-?)?webmail

phpmyadmin = (typo3/|xampp/|admin/|)(pma|(php)?[Mm]y[Aa]dmin)

wordpress = wp-(login|signup)\.php

所以这就是问题所在。我希望它匹配“http://example.com/wp-login.php“ 或者 ”http://example.com/folder/wp-login.php

并不是

http://example.com/wp-login.phpasdfasdfasdf“ 或者 ”http://example.com/wp-login.php?asdfasdfasdf“。我尝试在 wordpress 行尾使用 $、\n、\b、\B 和其他任意数量的符号,但都无济于事。请告知如何实现这一点。

答案1

改变

failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) \/<block> \S+\" 404 .+$
failregex = ^<HOST> \- \S+ \[\] \"(GET|POST|HEAD) \/<block>\S+\" 404 .+$

并改变

block = \/?(<webmail>|<phpmyadmin>|<wordpress>|cgi-bin|mysqladmin)[^,]*
block = \/?(<webmail>|<phpmyadmin>|<wordpress> |cgi-bin|mysqladmin)[^,]*

相关内容