
Em meus registros, vejo regularmente muitos erros 404, onde os bots obviamente verificam o servidor sistematicamente em busca de instalações de software específicas. Como isso também causa muito tráfego, quero bani-los.
Então, com base em alguns HowTos, tentei encontrar um RegEx para fail2ban que filtra essas solicitações 404 dos logs do Apache e com base nisso bloqueia os IPs relacionados.
Infelizmente, nenhum dos padrões RegEx que encontrei e tentei funcionou. Então, como exemplo:
fail2ban-regex /var/log/apache2/other*access.log '^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$'
(o que me parece bom) não encontra nada:
Date template hits:
|- [# of hits] date format
| [1210] Day(?P<_sep>[-/])MON(?P=_sep)ExYear[ :]?24hour:Minute:Second(?:\.Microseconds)?(?: Zone offset)?
`-
Lines: 1210 lines, 0 ignored, 0 matched, 1210 missed
Definitivamente existem vários erros 404 nesse arquivo de log. Então, o que estou fazendo de errado? Como deve ser uma aparência adequada do RegEx para obter todos os 404s?
Obrigado!
Responder1
other_vhosts_access.log
por padrão tem um diferente LogFormat vhost_combined
que é prefixado por um vhost:port
quando comparado com o padrão common
LogFormat
. Você precisa modificar o regex de acordo.
Responder2
Você já tentou este
failregex = ^<HOST> - .* "(GET|POST|HEAD).*HTTP.*" 404 .*$
ignoreregex =.*(robots.txt|favicon.ico|jpg|png)