Solução Anti-Spam Set/2006
Motivação do Projeto PROBLEMA : A taxa de recebimento de spams muito alta, gerando insatisfação dos usuários E-mails: Picos de 640 mil/dia Usuários: Média de 30 spams/dia
Objetivo do Projeto Melhorar/atualizar os serviços anti-spam dos servidores de mail corporativos da UNICAMP Equipe: Aguinaldo Cristina (DBA) Denise Rachel (Equipe de Redes) Sandra Tereza (Tete)
Premissas Básicas Manter o serviço de email útil e funcionando. Evitar perda de emails válidos por erro (falso positivo). Utilizar o recurso racionalmente evitando gastos desnecessários de upgrade de hardware. Gastar menos tempo na manutenção do Ambiente, sobrando mais tempo para outras atividades.
Critérios da Avaliação das Ferramentas Grau de dificuldade de Instalação e Configuração Freqüência de manutenção dos dados e software - Maturidade do software Impacto de performance no Ambiente Análise Pré-Data ou Pós-Data (sem ou com enfileiramento, antes ou depois da fase de dados) Consumo de CPU, Memória e I/O Taxa de erro - Falso Positivo/Falso Negativo Eficiência Impacto de Implantação
Ferramentas Estudadas Postfix (*) Greylisting (*) SPF (Sender Policy Framework) (*) Amavisd-new (*) SpamAssassin (*) Bogofilter DSPAM (*) Razor (*) Pyzor DCC (Distributed Checksum Clearinghouse) RBL (Realtime Backlist) (*) TMDA ( Tagged Message Delivery Agent ) DomainKeys Indentified Mail (DKIM)
Pré-requisitos Na escolha das ferramentas foi levado em consideração a compatibilidade com nosso ambiente Postfix IMAP/POP: Cyrus-imap Sem usuários unix reais Sem home Autenticação: cyrus-sasl+pam_mysql -> cyrus-sasl+ldap (CCUEC)
Ferramentas Adotadas Postfix (RBL - cbl.abuseat.org) Policyd Escrito em C Vários recursos (Greylisting, Auto- Blacklist, etc.) Banco de Dados (MySQL) Amavisd-new Anti-virus (McAfee) SpamAssassin (Razor, RBL, SPF, etc.) DSPAM
Postfix Servidor de Mail (MTA) Proposta: Mais rápido, fácil de administrar e seguro que o sendmail Parâmentros anti-spam : smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_authenticated_sender_login_mismatch, reject_unauth_destination, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_invalid_helo_hostname, reject_non_fqdn_helo_hostname,
Postfix-Parâmentros (cont.) check_client_access proxy:mysql:/usr/local/etc/postfix/mysql-policyd-whitelist.cf, check_client_access proxy:mysql:/usr/local/etc/postfix/mysql-policyd-blacklist.cf, check_client_access pcre:/usr/local/etc/postfix/pcre-client-access, check_recipient_access pcre:/usr/local/etc/postfix/pcre-recipient-access, reject_unlisted_recipient, check_policy_service inet:127.0.0.1:10031 smtpd_data_restrictions = reject_unauth_pipelining
RBL (Real Time Blacklist) Listas de Bloqueio (DNS blacklist) Contém endereços IP/e-mails de Spammers conhecidos Falso Positivos Cópia local de RBL RBLDNS
Policyd Greylisting Sender-(envelope, SASL or host / ip)-based throttling Recipient rate limiting Spamtrap monitoring HELO auto blacklisting HELO randomization preventation
Policyd Greylisting Greylisting O nome surgiu da idéia que este método fica entre o conceito de whitelist e blacklist Este método se propõe : Impacto mínimo com o máximo de eficiência; Bloquear a habilidade dos spammers se desviarem do bloqueio de spams e inventarem um novo método de envio de mensagens não solicitadas; Requer pouca manutenção do administrador e usuário; Transparente para o usuário, pois atua no nível de MTA (Mail Tranfer Agent) - delay
Funcionamento Greylisting Referência : http://www.antispam.br/admin/greylisting/
Amavisd-new É uma interface de alta-performance entre o servidor de mail (MTA) e o analisador de conteúdo: virus scanners(virus Scan McAfee) SpamAssassin DSPAM Escrito em Perl
SpamAssassin filtro anti-spam open-source testes locais ou com acesso a rede mecanismos para tentar identificar spam: análise de textos filtros bayesianos (treinamento?!?!) DNS backlists (cabeçalho e corpo da mensagem) Razor - base de dados colaborativas SPF autenticidade do remetente outros
Razor Vipul's Razor é uma rede distribuída e colaborativa de catálogos de spams. A detecção de spams é feita através de assinaturas digitais estatísticas e randômicas Ele vem como plugin na instalação do SpamAssassin
SPF (Sender Policy Framework) Tenta identificar remetentes forjados comparando o servidor de origem da mensagem com mapas DNS onde estão listados os outgoing-mail-servers autorizados a encaminhar mensagens por um determinado domínio. SRS (Sender Rewriting Scheme)
Dspam DSPAM é um filtro de Spam, escalável e opensource, feito para sistemas de multi-usuário, capaz de aprender e se adaptar a cada usuário. Algoritmos: Concept Identification, Neural Networking, Message Inoculation, advanced de-obfuscation techniques, Bayesian Noise Reduction, Bayes, Chi-Square, Geometric, and Markovian Discrimination. Estratégia de Implantação: Tendo em vista, sua grande complexidade, falta de documentação e para facilitar sua administração optamos por utilizá-lo através do amavisd-new sem base personalizada por usuário. Status: Experimental. Para aliviar a carga do MySQL, estamos avaliando sua desativação.
Arquitetura Camada de Entrada : Primeira linha de defesa Protege demais camadas Analisa envelope, IP cliente, Helo, etc. Blacklists Filtros rápidos Camanda de Delivery e Análise de Conteúdo : Protegida pela primeira camada Analisa conteúdo de emails Protege usuários de vírus e spams Encaminha para mailboxes
Fluxo de Mensagens Camada Entrada Postfix (MTA) INTERNET Postfix (MTA) Camada de Analise Cont. e Delivery Storage
Fluxo de Mensagens Camada de Entrada INTERNET Camada Analise de Conteúdo e serv1 X X Delivery ac1 serv2 ac2 Storage
Fluxo de Mensagens (1.a Parte) INTERNET RBLDNS Policyd Postfix (MTA) Mysql Contas/Aliases Policyd
Fluxo de Mensagens (2.a Parte) INTERNET Spam Assassin Postfix (MTA) Amavisdnew McAfee (anti virus) Storage Mysql DSPAM Contas/Aliases DSPAM
Procedimentos de blacklist local Rotate de logs de hora em hora, via newsyslog.conf Rodar shells na crontab alguns minutos depois Inserir IPs na blacklist do mysql ou ipfw Shells: excessive_body_reject.sh (mysql) excessive_header_reject.sh (mysql) excessive_user_unknown.sh (mysql) persistent.sh (email para suporte ipfw) excessive_spam_virus.sh (mysql)- experimental policyd_fail.sh (email para suporte) Referência: http://www.acme.com/mail_filtering
Resultados Satisfação do cliente De 30 para 2 spams/dia Reduzimos o número de erros (falso positivos) Melhor uso dos recursos Computadores (disco, CPU/memória) Menos tempo gasto na manutenção dos servidores Lições Aprendidas Conscientização dos usuários Educação Políticas Falso Positivos
www.postfix.org www.acme.com www.sans.org www.antispam.br Referências Gerais
Dúvidas?