Post on 11-Jan-2015
description
OpenBSDSeguranç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 GentooHoje utiliza OpenBSD como projetos de Firewall e outros serviços
de Rede
Trabalha atualmente para SIM≫Consultas
Assuntos Abordados
• História do Unix
• Projeto OpenBSD e sub-projetos
• Mecanismos de Segurança
• Hands On
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
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
História do Unix
• Portando o UNIX do PDP-7 para um PDP-11
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
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
Projeto
Projeto OpenBSD
• Out 1995 - Theo de Raadt cria o OpenBSD
Projeto OpenBSD
• Sistem operacional multi-plataforma baseado no 4.4BSD
• Ênfase em:
• Portabilidade
• Padronização
• Correção de Bugs
• Segurança Proativa
• Criptografia Integrada
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
Projeto OpenBSD
• Sub-Projetos
• OpenSSH
• OpenBGPD
• OpenNTPD
• OpenCVS
• OpenSMTPD
• OpenIKED
Projeto OpenBSD• Pacotes da versão 5.3 (instalação)◦ Xenocara (based on X.Org 7.7 with xserver 1.12.3 + patches, freetype 2.4.11, fontconfig
2.8.0, Mesa 7.11.2, xterm 287, xkeyboard-config 2.7 and more)◦ Gcc 4.2.1 (+patches), 3.3.6 (+ patches) and 2.95.3 (+ patches)◦ Perl 5.12.2 (+ patches)◦ Our improved and secured version of Apache 1.3, with SSL/TLS and DSO support◦ Nginx 1.2.6 (+ patches)◦ OpenSSL 1.0.1c (+ patches)◦ SQLite 3.7.14.1 (+ patches)◦ Sendmail 8.14.6, with libmilter◦ Bind 9.4.2-P2 (+ patches)◦ NSD 3.2.15◦ Lynx 2.8.7rel.2 with HTTPS and IPv6 support (+ patches)◦ Sudo 1.7.2p8◦ Ncurses 5.7◦ Heimdal 0.7.2 (+ patches)◦ Binutils 2.15 (+ patches)◦ Gdb 6.3 (+ patches)◦ Less 444 (+ patches)◦ Awk Aug 10, 2011 version
Segurança Por Padrão
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
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
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”!
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
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
Mecanismos de Segurança
• Use tipos de dados corretos e evite {over, under}flows
• Detectou um erro? Na dúvida, termine o processo
Hands On
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
Hands On
• Proteção de {buffer, stack}-overflow
• ASLE - Address Space Layout Randomization “extreme”
Reflexão FinalNenhuma destas técnicas garante segurança por si só, mas todas juntas tornam as coisas
muito difíceis para os atacantes
Perguntas ?
Obrigado por assistir
Fontes
• http://www.openbsd.org/papers/
• http://oesc-livre.org/media/slides/2012/outubro_tecland/
• http://www.bell-labs.com/history/unix/
"Seja a mudança que você deseja para o mundo".Mahatma Gandhi