カスタム 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>regex-group (fail2ban はこれを解決して一致(?:::f{4,6}:)?(?P<host>\S+))しません。ログ形式に合わせて正規表現をどのように変更すればよいかわかりません。

何か案は?

答え1

正直に言って、CPU を無駄にしないでください。「WebExploits」は単なるバックグラウンド ノイズです。fail2ban を使用してウェブログを減らすことは、実際にはセキュリティ上の利点をもたらしません。

どうしても必要な場合は、WebExploits の正規表現の概念に一致する (一致しない) nginx ログ形式の の$server_name後に追加します。$remote_addr -

^<HOST>正規表現の を に置き換えてください^[^ ]* <HOST>。これは、スペース以外の文字にスペースが続き、その後に<HOST>

関連情報