fail2ban регулярное выражение с пользовательским форматом журнала nginx

Основываясь на этом репозитории, я хочу использовать фильтры 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> regex-group (fail2ban разрешает это в (?:::f{4,6}:)?(?P<host>\S+)) не будет совпадать. Не уверен, как я должен изменить регулярное выражение, чтобы соответствовать моему формату журнала.

Есть идеи?

1 ответ

Честно говоря, не тратьте на это свой процессор, "WebExploits" на самом деле просто фоновый шум. Использование fail2ban для сокращения блогов на самом деле не обеспечивает преимущества безопасности.

Если вы действительно должны, положите $server_name после $remote_addr - в формате журнала nginx, который соответствует (не) понятию регулярных выражений WebExploits.

Поочередно заменить ^<HOST> в вашем регулярном выражении с ^[^ ]* <HOST>, Это означает совпадение непробельных символов с последующим пробелом и последующим <HOST>

Другие вопросы по тегам