Como criar um filtro fail2ban para ataques phpmyadmin

1

Estou tentando descobrir como criar um filtro failregex para o fail2ban para proteger contra os ataques abaixo. Eu tentei as seguintes expressões failregex, mas elas não estão combinando nada do / var / log / https / error_log

failregex = ^\[[^\]]+\] \[error\] \[client <HOST>\].*File does not exist: .*pma* *\s*$

OR

failregex = ^[[^\]]+\] \[error\] \[client <HOST>\] File does not exist: *phpyadmin* *\s*$

Aqui estão as detecções que estou tentando criar regras para

[Sat Aug 05 15:42:46 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2015
[Sat Aug 05 15:42:46 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2016
[Sat Aug 05 15:42:47 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/phpmyadmin2017
[Sat Aug 05 15:42:48 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2014
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2015
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2016
[Sat Aug 05 15:42:49 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2017
[Sat Aug 05 15:42:50 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/PMA2018
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2015
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2016
[Sat Aug 05 15:42:52 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2017
[Sat Aug 05 15:42:53 2017] [error] [client 109.188.133.141] File does not exist: /var/www/vhosts/default/htdocs/pma2018

As expressões regex não estão reconhecendo corretamente o formato no qual os logs estão sendo criados. Qualquer ajuda seria muito apreciada. Eu só preciso de uma regra de curinga que procura por a) Arquivo não existe eb) qualquer uma das seguintes seqüências de caracteres nessa linha de erro pma *, php *

    
por Ryan A 05.08.2017 / 23:50

2 respostas

1

Obrigado pelas sugestões acima, mas depois de inúmeras tentativas, aqui estão as expressões que funcionaram.

[Definition]
ignoreregex = 
failregex = \[client <HOST>\] File does not exist:.*(?i)MyAdmin.*
\[client <HOST>\] File does not exist:.*(?i)mysqlmanager.*
\[client <HOST>\] File does not exist:.*(?i)PMA.*
\[client <HOST>\] File does not exist:.*(?i)pma.*   
\[client <HOST>\] File does not exist:.*(?i)php-my-admin.*  
\[client <HOST>\] File does not exist:.*(?i)myadmin.*   
\[client <HOST>\] File does not exist:.*(?i)administrator.*     
\[client <HOST>\] File does not exist:.*(?i)xmlrpc.*            
\[client <HOST>\] File does not exist:.*(?i)testproxy.* 
\[client <HOST>\] File does not exist:.*(?i)phpMyAdmin.*
\[client <HOST>\] File does not exist:.*(?i)db.*    
\[client <HOST>\] File does not exist:.*(?i)sql.*       

Se alguém tiver plesk on centos, ele poderá usar essas regras para impedir ataques. Meu servidor continuava tendo o processo do apache sendo executado com 100% de uso da CPU.

    
por 06.08.2017 / 00:39
0

O erro mais óbvio que posso ver está aqui -

pma* *\s*$

Corresponde a pm , seguido de a zero ou mais vezes. Então, depois disso, corresponde um espaço zero ou mais vezes, seguido por \s (espaço ou tabulação) zero ou mais vezes.

Então, basicamente, ele precisa terminar com pma seguido por zero ou mais espaços. O mesmo com o outro regex.

Você deve tentar algo como pma.*\s* (supondo que você precisa considerar possíveis espaços no final da linha.

Editar - a expressão completa deve ser algo como o seguinte, embora obviamente eu não possa realmente testá-la.

\[client <HOST>\] File does not exist: .+pma
    
por 05.08.2017 / 23:59