fail2ban bots defeituosos regex de log de acesso do apache

1

Tentando bloquear alguns bots defeituosos usando o fail2ban lendo o log de acesso do Apache e configurando o regex correto. A linha que eu quero combinar no log de acesso é:

5.10.83.65 - - [18/Mar/2014:09:06:38 +0400] "GET /catalog/product_compare/
,,/form_key/QLZ6ZkIwX3FWqme3/ HTTP/1.1" 302 522 "-" "
Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"

E o regex simplificado que estou tentando usar:

failregex = ^<HOST>*(AhrefsBot)

Mas não importa o que eu tente, não está funcionando. Encontrei este post aqui é o que eu estou tentando alcançar badbots

Aqui está o que acabei fazendo para bloquear todos eles sem fazer grandes listas, use por sua conta e risco, pois pode bloquear visitantes legítimos se as palavras coincidirem. Eu usei o ignoreregex para permitir os bons, e bloqueei outros bots, desde que eles se auto-denominem bot:

failregex = ^<HOST> -.*compatible;.*(Bot|bot)
ignoreregex = (Google|Yandex|Mail|bing)

Agora que está longe de ser ideal, no entanto, bloqueia 99% dos bots de varredura indesejados, liberando o servidor, rápido e sujo.

    
por Vlad 20.03.2014 / 08:09

1 resposta

2

Você está quase lá, o * não está fazendo o que você acha que corresponde a 0 ou mais do caractere anterior tente

^<HOST> -.*(AhrefsBot)

por exemplo

fail2ban-regex '5.10.83.65 - - [18/Mar/2014:09:06:38 +0400] "GET /catalog/product_compare/,,/form_key/QLZ6ZkIwX3FWqme3/ HTTP/1.1" 302 522 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"' '^<HOST> -.*(AhrefsBot)'
Running tests
=============

Use   failregex line : ^<HOST> -.*(AhrefsBot)
Use      single line : 5.10.83.65 - - [18/Mar/2014:09:06:38 +0400] "GET /...


Results
=======

Failregex: 1 total
|-  #) [# of hits] regular expression
|   1) [1] ^<HOST> -.*(AhrefsBot)
'-

Ignoreregex: 0 total

Date template hits:
|- [# of hits] date format
|  [1] Day/MONTH/Year:Hour:Minute:Second
'-

Lines: 1 lines, 0 ignored, 1 matched, 0 missed
    
por 20.03.2014 / 08:43