Segurança · 5 min read · Dec 29, 2025

Configurando fail2ban Com SquirrelMail No Debian Lenny 5.0/ISPConfig 3

Configurando fail2ban Com SquirrelMail No Debian Lenny 5.0/ISPConfig 3

Neste artigo, vou mostrar como prevenir ataques de força bruta com Fail2ban contra seu login Web do SquirrelMail usando o plugin Squirrel Logger.

1. Requisitos

Certifique-se de que fail2ban e SquirrelMail estão instalados em uma máquina Debian Lenny/ISPConfig 3.
Para instalar ISPConfig 3 + SquirrelMail, siga este guia.
Para instalar fail2ban, siga este guia.

2. Squirrel Logger

Baixe e instale o Squirrel Logger:

cd /usr/share/squirrelmail/plugins  
wget http://squirrelmail.org/countdl.php?fileurl=http%3A%2F%2Fwww.squirrelmail.org%2Fplugins%2Fsquirrel_logger-2.3-1.2.7.tar.gz  
tar zxvf squirrel_logger-2.3-1.2.7.tar.gz  
cd squirrel_logger  
cp config_example.php config.php

Configure o Squirrel Logger:

vi config.php

Se seu servidor não usar o horário local GMT, altere $sl_use_GMT = 1 para $sl_use_GMT = 0:

...  
// Registrar datas em GMT?  Se você não fizer isso, as datas serão  
// registradas no fuso horário em que cada usuário está (ou  
// definiu em suas preferências pessoais)  
//  
//    1 = sim  
//    0 = não  
//  
$sl_use_GMT = 0;  
...

Altere a localização do seu arquivo de log de $sl_logfile = $data_dir . ‘squirrelmail_access_log’; para $sl_logfile = ‘/var/log/squirrelmail.log’;:

...  
// A localização do seu arquivo de log ao registrar em arquivo.  
// Certifique-se de que o usuário que seu servidor web roda pode escrever  
// neste arquivo.  Use a variável $data_dir se você  
// quiser colocar o arquivo de log no diretório de dados do SquirrelMail.  
//  
// Apenas aplicável quando $sl_logs inclui "file".  
//  
// $sl_logfile = $data_dir . 'squirrelmail_access_log';  
$sl_logfile = '/var/log/squirrelmail.log';  
...

Altere o formato da data para corresponder à regex do fail2ban de $sl_dateformat = ‘m/d/Y H:i:s’; para $sl_dateformat = ‘M j H:i:s’;:

...  
// Especifique qual formato de data você deseja  
//  
// Veja o manual do PHP para a função de data para ajuda  
// em http://www.php.net/manual/function.date.php  
//  
// exemplos:  
//  
//    'm/d/y H:i:s'     ==  03/10/2001 05:16:08  
//    'F j, Y, g:i a'   ==  Março 10, 2001, 5:16 am  
//    'D M j Y H:i:s T' ==  Sáb Mar 10 2001 15:16:08 CDT  
//  
// $sl_dateformat = 'm/d/Y H:i:s';  
$sl_dateformat = 'M j H:i:s';  
... 

Crie um novo arquivo squirrelmail.log em /var/log/:

touch /var/log/squirrelmail.log  
chown www-data:www-data /var/log/squirrelmail.log  
chmod 640 /var/log/squirrelmail.log

Limpe a instalação:

cd ..  
rm squirrel_logger-2.3-1.2.7.tar.gz

Configure o SquirrelMail para usar o plugin Squirrel Logger:

squirrelmail-configure
...  
7. Mensagem do Dia (MOTD)  
8. Plugins  
9. Banco de Dados  
... 

Selecione “Plugins”, no meu caso, número 8.

...  
18. spamcop  
19. squirrel_logger  
20. squirrelspell  
21. teste  
... 

Selecione squirrel_logger, no meu caso, número 19.

...  
Plugins Instalados  
1. delete_move_next  
2. squirrelspell  
3. newmail  
4. squirrel_logger  
... 

Agora squirrel_logger é parte dos Plugins Instalados.
Salve os dados “S” e Saia “Q”.

3. Configuração do Fail2ban

Configure o fail2ban para usar o Log do SquirrelMail:

cd /etc/fail2ban

Abra e adicione as seguintes linhas ao arquivo jail.local. Se você não tiver este arquivo, use o jail.conf padrão.

vi jail.local
[squirrelmail]  
  
enabled = true  
port = http,https  
filter = squirrelmail  
logpath = /var/log/squirrelmail.log  
bantime = 300  
maxretry = 4 

Certifique-se de que bantime (em segundos) e maxretry estão configurados de acordo com suas necessidades.

No diretório filter.d, crie um arquivo squirrelmail.conf com o seguinte conteúdo:

cd filter.d  
vi squirrelmail.conf
# Arquivo de configuração do Fail2Ban  
#  
# Autor: Bill Landry ((email_protected))  
#  
# $Revision: 510 $  
  
[Definition]  
  
# Opção: failregex  
# Notas.: regex para corresponder às mensagens de falha de senha no logfile. O  
#         host deve ser correspondido por um grupo chamado "host". A tag "" pode  
#         ser usada para correspondência padrão de IP/nome do host e é apenas um alias para  
#         (?:::f{4,6}:)?(?P\S+)  
# Valores: TEXTO  
  
failregex = \[LOGIN_ERROR\].*from : Usuário desconhecido ou senha incorreta  
  
# Opção: ignoreregex  
# Notas.: regex para ignorar. Se essa regex corresponder, a linha é ignorada.  
# Valores: TEXTO  
  
ignoreregex = 

IMPORTANTE: se você estiver usando outro idioma que não seja o inglês, altere a linha “failregex” com o texto que squirrelmail.log mostra para você no ponto 5.

Exemplo: com o idioma espanhol, eu obtenho isso no arquivo de log.

Aug 20 15:26:06 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuario o contraseña incorrecto. 

Então, faço essa alteração:

failregex = \[LOGIN_ERROR\].*from : Usuario o contraseña incorrecto

…e reinicie o fail2ban.

/etc/init.d/fail2ban restart

5. Testando a instalação

cd /var/log  
tail -f squirrelmail.log

Faça login “3” vezes na interface Web do SquirrelMail usando “senhas incorretas”.
Este procedimento mostra as tentativas de login falhadas nas janelas do terminal:

Aug 19 13:57:20 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuário desconhecido ou senha incorreta.  
Aug 19 13:57:34 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuário desconhecido ou senha incorreta.  
Aug 19 13:57:46 [LOGIN_ERROR] [email protected] (server.domain.com) from XXX.XXX.XX.XX: Usuário desconhecido ou senha incorreta.

Feche o arquivo squirrelmail.log:

Ctrl-c

Verifique se o fail2ban-regex pode capturar esses erros:

fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.conf
Executando testes  
=============  
  
Use arquivo regex : /etc/fail2ban/filter.d/squirrelmail.conf  
Use arquivo de log   : /var/log/squirrelmail.log  
  
  
Resultados  
=======  
  
Failregex  
|- Expressões regulares:  
|  [1] \[LOGIN_ERROR\].*from : Usuário desconhecido ou senha incorreta  
|  
`- Número de correspondências:  
   [1] 3 correspondência(s)  
  
Ignoreregex  
|- Expressões regulares:  
|  
`- Número de correspondências:  
  
Resumo  
=======  
  
Endereços encontrados:  
[1]  
    200.113.105.235 (Qua Ago 19 13:57:20 2009)  
    200.113.105.235 (Qua Ago 19 13:57:34 2009)  
    200.113.105.235 (Qua Ago 19 13:57:46 2009)  
  
Data template hits:  
3 hit(s): Mês Dia Hora:Minuto:Segundo  
0 hit(s): Dia da Semana Mês Dia Hora:Minuto:Segundo Ano  
0 hit(s): Dia da Semana Mês Dia Hora:Minuto:Segundo  
0 hit(s): Ano/Mês/Dia Hora:Minuto:Segundo  
0 hit(s): Dia/Mês/Ano Hora:Minuto:Segundo  
0 hit(s): Dia/Mês/Ano:Hora:Minuto:Segundo  
0 hit(s): Ano-Mês-Dia Hora:Minuto:Segundo  
0 hit(s): Dia-Mês-Ano Hora:Minuto:Segundo[.Milissegundo]  
0 hit(s): TAI64N  
0 hit(s): Época  
0 hit(s): ISO 8601  
  
Sucesso, o número total de correspondências é 3  
  
No entanto, observe a seção acima 'Executando testes' que pode conter informações importantes.

Se você ver esta linha, tudo está ok: Sucesso, o número total de correspondências é 3

6. Vamos testar nosso Fail2ban

Faça login “4” vezes (ou mais, dependendo da sua configuração de maxretry) na interface Web do SquirrelMail usando “senhas incorretas”.

Quando você for bloqueado, isso significa que você não pode ver a página de login, por favor, execute:

iptables -L

Agora você pode ver seu IP bloqueado xxx-xxx-xxx-xxx na saída do iptables.

Chain fail2ban-squirrelmail (1 referências)  
target     prot opt source               destination  
DROP       all  --  xxx-xxx-xxx-xxx.your.isp.info  anywhere  
RETURN     all  --  anywhere             anywhere  

Boa sorte ;)

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.