我有一个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 arematched
与ignoreregex
all 4 are ignored
。
上面的正则表达式应该匹配条目images/imagecache
并允许出现在这种情况下的单词白名单,(db|project)
但如果存在任何黑名单单词则不允许(?!(wp|wp-admin|wp-content|xampp|xplorer))
。