O documento descreve a história do Unix e do OpenBSD, incluindo: (1) O projeto OpenBSD foi criado em 1995 por Theo de Raadt com foco em segurança, portabilidade e correção de bugs; (2) O OpenBSD usa mecanismos como criptografia forte e números aleatórios para proteger sistemas de forma segura por padrão; (3) A cultura do projeto enfatiza código claro, simples e livre de erros.
1. OpenBSD
Segurança por padrão
Walter Neto
Começou a programar com 12 anos como hobby, conheceu
sistemas Unix-like através do Linux Conectiva 4.6 em 2001, como
última distribuição Linux usou o Gentoo
Hoje utiliza OpenBSD como projetos de Firewall e outros serviços
de Rede
Trabalha atualmente para SIM≫Consultas
3. História do Unix
• 1965 - AT&T, GE e o projeto
“Multics” (Multiplexed Information and
Computing Services) no Bell Labs
• 1969 - Os cientistas começam a procurar
uma alternativa ao Multics (Ken Thompson,
Dennis Ritchie e cia.)
• “Space Travel” rodando no PDP-7
4. História do Unix
• Thompson reescreve o sistema inicial
• Thompson batiza o sistema com o nome
de UNIX, um trocadilho com o projeto
Multics que fracassou
6. História do Unix
• 1971 - Thompson tenta escrever o UNIX
em uma linguagem de alto nível (Fortran),
cria uma linguagem simples chamada “B”,
que também lhe causa dores de cabeça
• Ritchie começa a escrever uma linguagem
parecida com B, que ele chamou na época
de NB (new B), ficou boa
7. História do Unix
• 1973 - Dennis Ritchie termina a primeira
versão da linguagem C que compila uma
versão do UNIX
• 1976..1977 - Compartilhando o UNIX com
o mundo e ponta pé inicial do BSD
• 1984 - AT&T se desfaz das empresas de
telefonia Bell local e cria a AT&T Computer
Systems
10. Projeto OpenBSD
• Sistem operacional multi-plataforma baseado no
4.4BSD
• Ênfase em:
• Portabilidade
• Padronização
• Correção de Bugs
• Segurança Proativa
• Criptografia Integrada
11. Projeto OpenBSD
• É desenvolvido inteiramente por
voluntários
• O projeto paga pelo ambiente de
desenvolvimento e pelos eventos
(Hackathons) com a venda de CDs e
doações de empresas e pessoas
16. Mecanismos de Segurança
• Cultura de Desenvolvimento “Shut up and
hack!”
• Feito para desenvolvedores e usuários
experientes
• A documentção é ótima, então RTFM
• Se mantém o mais fiel possível aos padrões
do Unix (POSIX,ANSI, etc)
• É um SO completo, desenvolvido de forma
integral
- Diferente dos pacotes GNU/Linux
- Fontes do sistema completo em /usr/src
17. Mecanismos de Segurança
• Suportar várias arquiteturas de Hardware ajuda a
encontrar bugs
• A instalação padrão tem tudo o que se espera em
um Unix, pacotes como Gnome e etc são
mantidos separadamente
• Foco em código correto, claro e simple.
- One of my most productive days was throwing away 1000 lines of code.”
-- Ken Thompson
• Código simples e ao mesmo tempo poderoso
• Código não utilizado tem que ser excluído. O
repositório é versionado, o código não é perdido
18. Mecanismos de Segurança
• Padronizar estilos e design patterns do
código
• Ao achar um bug, procure-o em todo o
código, se possível através de expressões
regulares
• Tratar erros retornados pela API,“é sério”!
19. Mecanismos de Segurança
• O compilador é seu amigo, use
-Wall -Wextra -Wpedantic
• Resista à tentação dos POGs, os revisores
de código não vão gostar e o código não
vai entrar. Mancha a reputação
• Perfumarias só depois que estiver correto
e rodando
20. Mecanismos de Segurança
• Secure by default (tema desde 1996)
• O design é furado? Corrija o design
• O código é furado? Corrija o código
• A documentação está errada? Corrija e
melhore a documentação
21. Mecanismos de Segurança
• Use tipos de dados corretos e evite {over,
under}flows
• Detectou um erro? Na dúvida, termine o
processo
23. Hands On
• Uso de criptografia forte e números
aleatórios, ambiente hostil para exploits
- Openbsd usa números aleatórios sempre que
possível
• OpenBSD como firewall ja protege por
padrão sistemas menos seguros
24. Hands On
• Proteção de {buffer, stack}-overflow
• ASLE - Address Space Layout
Randomization “extreme”
25. Reflexão Final
Nenhuma destas técnicas garante segurança
por si só, mas todas juntas tornam as coisas
muito difíceis para os atacantes