
基於此儲存庫我想使用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" "-"
事實上,我在<HOST>
正規表示式群組的remote_addr前面新增了server_name(fail2ban將其解析為(?:::f{4,6}:)?(?P<host>\S+))
不匹配。不知道應該如何修改正規表示式以匹配我的日誌格式。
有任何想法嗎?
答案1
老實說,不要在上面浪費你的 CPU,「WebExploits」其實只是背景噪音。使用fail2ban 來減少部落格實際上並沒有提供安全優勢。
如果您確實必須這樣做,請將 放在nginx 日誌格式$server_name
之後$remote_addr -
,該格式與(而不是)正規表示式的 WebExploits 概念相符。
^<HOST>
或將正規表示式替換為^[^ ]* <HOST>
.這意味著匹配非空格字符,後跟空格,然後<HOST>