具有自定义 nginx 日志格式的 fail2ban 正则表达式

具有自定义 nginx 日志格式的 fail2ban 正则表达式

基于此存储库我想使用 fail2ban 过滤器来分析我的 nginx 日志并禁止可疑的请求和 IP。

在我的服务器上,我使用 nginx 的自定义日志格式。由于我托管多个站点,因此日志文件具有以下结构。

log_format custom_format '$server_name $remote_addr - $remote_user [$time_local] ' '"$request" $status $body_bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'

什么会生成如下日志条目:

www.example.com 62.210.129.246 - - [24/Aug/2018:11:07:46 +0200] "POST /wp-login.php HTTP/1.1" 301 185 "http://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36" "-"

由于我在 remote_addr 前面添加了 server_name,因此<HOST>正则表达式组 (fail2ban 解析此问题以致于(?:::f{4,6}:)?(?P<host>\S+))不匹配。不确定应如何修改正则表达式以匹配我的日志格式。

有任何想法吗?

答案1

说实话,不要浪费你的 CPU 在这上面,“WebExploits”实际上只是背景噪音。使用 fail2ban 来减少网络日志实际上并没有提供安全优势。

如果确实必须,请将其放在与(非)WebExploits 正则表达式概念匹配的 nginx 日志格式$server_name之后。$remote_addr -

^<HOST>或者在正则表达式中用替换^[^ ]* <HOST>。这意味着匹配非空格字符,后跟一个空格,后跟<HOST>

相关内容