Este documento descreve o projeto Heimdall Guard, um filtro de spam open source desenvolvido em Python. Ele apresenta a arquitetura do sistema, que inclui integração com Postfix, Amavis, PostgreSQL, SpamAssassin e um painel desenvolvido com Flask. Resultados mostram que o Heimdall Guard tem eficiência similar aos filtros comerciais na detecção e bloqueio de spam e vírus.
2. 2
Conhecendo o Palestrante
➢ Alisson Machado;
➢ Analista de Sistemas DevOps;
➢ 5 anos de experiência em projetos FOSS
(Free and Open Source Software) e
Python;
➢ Certificações LPI 1 , LPI2, SUSE CLA
➢ Responsável pelo Desenvolvimento do
BeavOps e Heimdall Guardian
Alisson Machado
3. 3
Conhecendo a 4Linux
➢ Metodologia IT Experience - Cenários reais
➢ Cursos práticos, rápidos e baratos de
autores feras: www.4shot.com.br
➢ Projetos complexos de missão crítica,
com infra e desenvolvimento PHP
4. 4
Ao final dessa palestra
➢ 1 sorteio de cursos online via filipeta
➢ Curso de Python
9. 9
➢ Heimdall Guard Spam Filter;
➢ OpenSource;
➢ Python e Flask;
Projeto Heimdall Guard
10. 10
Porque Python?
➢Linguagem que navega muito bem no mundo
DevOps (Infraestrutura / Desenvolvimento);
➢Módulos prontos para a maioria das Tecnologias;
➢Desenvolvimento Web e Scripts na mesma
linguagem;
➢Know How Interno;
12. 12
Postfix
1.Receber todos os e-mails e aplicar os filtros
/opt/postfix/main.cf
content_filter = smtp-amavis:
[127.0.0.1]:10024
13. 13
Postfix
1.Receber todos os e-mails e aplicar os filtros
/opt/postfix/ACL/client_access.cf
Hosts = 127.0.0.1 # dados banco amavis
user = user_banco
password = passwd_banco
dbname = db_name
query = SELECT (case when type = 'W'
then 'OK' else 'REJECT' end) as action
FROM postfix_wb_list WHERE address =
'%s' and rules = 'C'
14. 14
Amavis
1.Integra Postfix com o ClamAV
/etc/amavis/conf.d/50-user
@storage_sql_dsn = (
['DBI:Pg:database=amavisdb;host=127.0.0
.1;port=5432', 'user_amavis',
'passwd_amavis'],
);
15. 15
PostgreSQL
1.Banco de Dados Amavis e Heimdall
➢Banco de Dados Relacional
➢Alta Performance
➢Escalabilidade Vertical
➢Auto Vacuum
16. 16
SQLAlchemy
➢ORM escrito em Python
➢Facilidade em Conexão com o Banco de Dados
➢Abstração do banco de dados em orientação a objetos
➢Cria banco de dados automaticamente
17. 17
Gerando Model
➢Banco de dados já existente
➢Gerar Model a partir deste banco
➢pip install sqlacodegen
➢sqlacodegen postgresql://user:password@localhost/dbname
18. 18
SpamAssassin
1.Aprendizado de Detecção de Spam
➢Banco de dados noSQL
➢Aprendizagem bayesiana
➢Escalabilidade Vertical
➢sa-learn --{0} --no-sync -u {1}
➢ subprocess.call([cmd],shell=True)
19. 19
Dashboard
Porque Flask?
➢ Microframework, Modular;
➢ Separação de Responsabilidades (Blueprint)
➢ Ótimo para construir API
➢ Módulos para SQLAlchemy
➢ Módulos Autenticação e Permissão
22. 22
Resultados Pós Implantação
Desc/Ambiente IronPort
(Nov15)
Heimdall
(Abr16)
Bloqueio de Spam 2.212.074 1.889.828
Bloqueio por Reputação 13.859.002 1.859.077
Bloqueio de DNS inválido 515.696 15.324.782
Bloquei de Vírus 2.309 2
Mensagens Limpas 5.184.028 5.185.788
Falso Positivo/Negativo - 856.558
➢ Comparativo IronPort X HeimdallGuard
Conclusão:
Nível de eficiência entre as soluções são similares
23. 23
Próximos Passos
Para 2017
➢Evolução da Interface;
➢Trocar Banco Relacional por noSQL(MongoDB);
➢Clusterização Nativa;
➢Geração de Relatórios;
➢Exportação de Relatórios.