用于过滤 nginx 日志以自动运行 nftables 的脚本

用于过滤 nginx 日志以自动运行 nftables 的脚本

我有一个由 nginx 提供服务的域。nginx 日志具有以下格式:

178.128.120.151 - - [19/Jul/2023:20:27:25 +0200] "GET /favicon.ico HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
178.128.120.151 - - [19/Jul/2023:20:27:25 +0200] "GET /1.php HTTP/1.1" 301 162 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
95.214.27.160 - - [19/Jul/2023:20:28:24 +0200] "POST /boaform/admin/formLogin HTTP/1.1" 301 162 "http://84.120.157.219:80/admin/login.asp" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:71.0) Gecko/20100101 Firefox/71.0"

我想要编写脚本(bash、python 等等)查看访问我的服务器的 IP,并按以下方式进行过滤:

  • 如果请求的路径是/或,/robots.txt/favicon.ico什么也不会发生
  • 但如果请求的路径是其他路径,则调用nft add element inet my_table badips { <IP> }

倾向于实时分析 nginx 日志,以便在流量发生时进行检测。

相关内容