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.phpConfigure o Squirrel Logger:
vi config.phpSe 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.logLimpe a instalação:
cd ..
rm squirrel_logger-2.3-1.2.7.tar.gzConfigure 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/fail2banAbra 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 restart5. Testando a instalação
cd /var/log
tail -f squirrelmail.logFaç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-cVerifique se o fail2ban-regex pode capturar esses erros:
fail2ban-regex /var/log/squirrelmail.log /etc/fail2ban/filter.d/squirrelmail.confExecutando 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 -LAgora 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 ;)
Receba novas postagens na sua caixa de entrada
Sem spam. Cancele a assinatura a qualquer momento.