[FUG-BR] Expriência Qmail + fail2ban

Jean Everson Martina everson em inf.ufsc.br
Segunda Fevereiro 28 08:16:02 BRT 2011


Ola Pessoal,


	Não sei mais alguém aqui usa este mesmo tipo de solução, mas eu queria compartilhar um pouco do sucesso que eu tive em reduzir a carga de meia duzia de servidores de e-mail que eu cuido usando fail2ban e qmail. A redução nos meus casos foram de na casa de 20% na carga média da maquina durante uns dois meses que eu estou monitorando as maquinas graficamente via munin. A maquinas que eu instalei são maquinas de hosting onde deve ter uns 100 domínios cada e na casa de 5000-8000 emails ativos.
	A solução que a gente encontrou aqui que diminuiu bastante nosso problema de carga com SA e o qmail foi dar um ban via pf de IPs que não estão se comportando como deviam, e também mantendo uma lista de servidores de email marketing (eu não entendo ainda a diferença disso pra SPAM) que não são bem vindos. O que a gente faz é dar ban pelo domínio nos ips dos servidores listado no cdb do qmail como deny (ex.: =.virtualtarger.com.br:deny), dar ban em todo mundo que aparece em RBL, dar ban em todo mundo que da probe no relay da porta 25, e dar ban em todo mundo que da failed_rcptto (eu estou testando agora uns bans em DNSs com os strings "mkt" e " marketing"). O banimento é temporário e varia de caso em caso. Por exemplo failed_rcptto a gente ta colocando 30 mins, enquanto RBL são 6 horas, ja o deny são na casa de 1 dia.
	Isso diminuiu o numero de conexões simultâneas no qmail de forma absurda. De mais de 50 simultâneas pra menos de 10, e o SA também tem trabalhado menos o que diminuiu a carga das maquinas.

	Alguns dos nossos arquivos de configuração (simplificados):

filter.d/qmail.conf

failregex = (?: rblsmtpd: | tcpserver: deny [\d].* | Reject::RCPT::Failed_Rcptto: P:ESMTP S:| Reject::SNDR::Invalid_Relay: P:ESMTP S:)<HOST>
ignoreregex = (?: .*terra.com.* | .*hotmail.com.*  | .*google.com.* )

action.d/pf.onf
actionban = pfctl -t fail2ban -T add  <ip>
actionunban = pfctl -t fail2ban -T delete `pfctl -t fail2ban -T show 2>/dev/null | grep <ip>`

jail.conf
[qmail-pf]
enabled = true
filter = qmail
action = pf
logpath = /var/log/qmail/qmail-smtpd/current
maxretry = 1
bantime = 3600

pf.conf
table <fail2ban> persist
block in quick from <fail2ban> to any 
block out quick from any to <fail2ban>

	Do mais de 600 clientes com uns 20 mil usuários não tivemos muitas reclamações. E as reclamações tem ido no ignoreregex e resolvido (os arquivos ali em cima são simplificações das nossas configurações verdadeiras). 

	O que eu estou procurando agora é sugestões de como afinar ainda mais essa solução.


Abraços,


Jean


	


Mais detalhes sobre a lista de discussão freebsd