regex fail2ban com formato de log nginx personalizado

regex fail2ban com formato de log nginx personalizado

Com base nissorepositórioQuero usar filtros fail2ban para analisar meus logs nginx e banir solicitações e IPs suspeitos.

No meu servidor, estou usando um formato de log personalizado para nginx. Devido ao fato de hospedar vários sites, os arquivos de log têm a seguinte estrutura.

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

O que irá gerar uma entrada de log como esta:

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" "-"

Devido ao fato de que estou adicionando o server_name na frente de remote_addr o <HOST>regex-group (fail2ban resolve isso para (?:::f{4,6}:)?(?P<host>\S+))não corresponder. Não tenho certeza de como devo modificar o regex para corresponder ao meu formato de log.

Alguma ideia?

Responder1

Honestamente, não desperdice sua CPU com isso, os "WebExploits" são apenas ruído de fundo. Usar o fail2ban para reduzir weblogs não oferece realmente um benefício de segurança.

Se você realmente precisar, coloque $server_nameapós o $remote_addr -formato de log nginx que corresponde à (não) noção de expressões regulares do WebExploits.

Alternativamente, substitua ^<HOST>em seu regex por ^[^ ]* <HOST>. Isso significa combinar caracteres que não sejam espaços, seguidos por um espaço, seguido por<HOST>

informação relacionada