2

我有一个apache access log filter其中fail2ban使用单词的黑名单,例如(db|project|wp-admin|wp-content),它有效,但由于某些路径和某些陷阱决定添加一个ignoreregex带有负前瞻的选项,以根据路径排除其中的一些,但这并不有效,因为它ignoreregex仍然有效。

示例访问日志

127.0.0.1 - - [10/Oct/2016:13:00:42 +0100] "GET /images/imagecache/cache_232dbf2e1e./wp-content/ HTTP/1.1" 404 16 "http://[referrer]" "[user-agent]"
127.0.0.1 - - [10/Oct/2016:13:10:21 +0100] "GET /images/imagecache/cache_3d87dbea9f./wp-content/ HTTP/1.1" 404 16 "http://[referrer]" "[user-agent]"
127.0.0.1 - - [10/Oct/2016:13:14:41 +0100] "GET /images/imagecache/cache_232dbf2e1e./wp-content/ HTTP/1.1" 404 16 "http://[referrer]" "[user-agent]"
127.0.0.1 - - [10/Oct/2016:13:21:04 +0100] "GET /images/imagecache/cache_232dbf2e1e. HTTP/1.1" 404 16 "http://[referrer]" "[user-agent]"

filter.d文件中的忽略正则表达式条目

.*images\/imagecache.+(db|project).+(?!(wp|wp-admin|wp-content|xampp|xplorer)).+$

在https://regex101.com之类的东西上使用它只正确匹配上面日志中的最后一个条目,但在我的filter.d文件中使用它会忽略所有 4 个条目。没有ignoreregex所有 4 arematchedignoreregexall 4 are ignored

上面的正则表达式应该匹配条目images/imagecache并允许出现在这种情况下的单词白名单,(db|project)但如果存在任何黑名单单词则不允许(?!(wp|wp-admin|wp-content|xampp|xplorer))

4

0 回答 0