
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_name
apó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>