diff options
author | Silvio Rhatto <rhatto@riseup.net> | 2015-11-18 20:44:42 -0200 |
---|---|---|
committer | Silvio Rhatto <rhatto@riseup.net> | 2015-11-18 20:44:42 -0200 |
commit | 1cee6da91e04e0d8c27451c05dc8f45ca662f34f (patch) | |
tree | f10c807bf2c08775c5f1bfcb6b115241f8fdb1c0 /aulas/seguranca.rst | |
parent | aea0fbd922dc66569febb3bf7ec665315ae8c9b7 (diff) | |
download | boaspraticas-1cee6da91e04e0d8c27451c05dc8f45ca662f34f.tar.gz boaspraticas-1cee6da91e04e0d8c27451c05dc8f45ca662f34f.tar.bz2 |
Completa o roteiro
Diffstat (limited to 'aulas/seguranca.rst')
-rw-r--r-- | aulas/seguranca.rst | 85 |
1 files changed, 62 insertions, 23 deletions
diff --git a/aulas/seguranca.rst b/aulas/seguranca.rst index aae2b36..2915480 100644 --- a/aulas/seguranca.rst +++ b/aulas/seguranca.rst @@ -1,27 +1,35 @@ 6. Segurança e privacidade ========================== -6.1 - Segurança começa no desenvolvimento +6.1 - Segurança da informação +----------------------------- + +* Confidencialidade. +* Integridade. +* Disponibilidade. +* Autenticidade. + +6.2 - Segurança começa no desenvolvimento ----------------------------------------- +* Segurança: para fins do nosso curso, é a proteção da aplicação. +* Privacidade: proteção dos dados em poder da aplicação. * Criptografia é só uma parte das práticas seguras. -* Modelagem de ameaças e testes de penetração: inverta os papéis: e se você fosse o/a atacante? -* A dificuldade de se encontrar vulnerabilidades. -* Segurança por isolamento ajuda, mas botar a aplicação dentro de um cordão sanitário protege mais o ambiente de hospedagem do que a aplicação. +* Obscuridade não é segurança: disclosures são saudáveis no desenvolvimento. -6.2 - Use bibliotecas criptográficas consolidadas! --------------------------------------------------- +6.3 - Modelagem de ameaças e auditoria +-------------------------------------- -* Erros de implementação são grandes fontes de brechas de segurança. -* Caso você precise implementar primitivas criptográficas no seu código, use bibliotecas existentes! -* Encapsule as conexões das suas aplicações em canais criptografados. -* TLS é o protocolo mais consolidado e adequado, apesar de não ser perfeito. +* É fácil (e barato) produzir e difícil (e caro) encontrar vulnerabilidades. +* Modelagem de ameaças (teoria) e testes de penetração (prática): inverta os papéis: e se você fosse o/a atacante? +* Segurança por isolamento ajuda, mas botar a aplicação dentro de um cordão sanitário protege mais o ambiente de hospedagem do que a aplicação. -6.3 - Princípio das permissões mínimas --------------------------------------- +6.4 - Exemplo e ameaça e o princípio das permissões mínimas +----------------------------------------------------------- -* Comece o desenvolvimento com o mínimo de permissões necessárias para a sua aplicação e libere o acesso conforme necessário. -* Permissões de arquivos são propriedades no sistema de arquivo! +* Exemplo de ameaça: o(a) atacante tem permissão de escrita no código da aplicação. +* Mitigação: forneça o mínimo de permissões necessárias para a sua aplicação e libere o acesso conforme necessário. +* Atenção! Permissões de arquivos são propriedades no sistema de arquivo! * Elas não são necessariamente preservadas com a cópia de arquivos entre sistemas! Roteiro do screencast: @@ -39,20 +47,51 @@ Roteiro do screencast: # Mudando a posse de arquivos e pastas chown -6.4 - Criptografia básica +6.5 - Criptografia básica ------------------------- -* Assinaturas digitais. -* Comunicação cifrada. -* Checagem de integridade de código no git e em geral. +* Criptografia não é tudo em segurança, porém é o requisito básico e essencial. +* Ameaça: machine-in-the-middle. +* Mitigação: + * Comunicação cifrada: HTTPS. + * Checagem de integridade de código no git e em geral (assinaturas e checksums). -6.5 - Certificados x509 para SSL/TLS/HTTPS ------------------------------------------- +6.6 - Use bibliotecas criptográficas consolidadas! +-------------------------------------------------- -* `Let's Encrypt <https://letsencrypt.org>`_. +* Erros de implementação são grandes fontes de brechas de segurança. +* Caso você precise implementar primitivas criptográficas no seu código, use bibliotecas existentes! +* Encapsule as conexões das suas aplicações em canais criptografados. +* TLS é o protocolo mais consolidado e adequado, apesar de não ser perfeito. + +6.7 - HTTPS +----------- + +6.7 - O que é +~~~~~~~~~~~~~ -6.6 - Atividades +* HTTPS: HTTP em cima de uma conexão SSL/TLS. +* Padrão dos anos 90 e melhorado desde então. +* Bem implementado: oferece segurança da informação num nível aceitável, porém não oferece anonimato. +* Mal implementado: só oferece ilusão de segurança. +* Movimento crescente para tornar HTTPS padrão em todos os sites! + +6.7 - Certificados para HTTPS +----------------------------- + +* No HTTPS, a autenticidade é obtida usando uma "cadeia de certificação" provida por autoridades certificadoras. +* Checagem feita no navegador. +* É um esquema altamente vulnerável: a qualquer momento o castelo de cartas pode ruir. +* As alternativas a esse modelo ainda são incipientes. + +6.8 - Atividades ---------------- -6.7 - Referências +#. Faça um pequeno documento de modelagem de ameaças para o seu projeto. Coloque-o na forma de "ameaça/mitigação". Organize cada par ameaça/mitigação segundo probabilidade decrescente de ocorrência e custo crescente de implementação, facilitando a implementação de cada medida de segurança. +#. Desafio: caso seu projeto seja uma aplicação web, obtenha um certificado e configure uma conexão HTTPS. + +6.9 - Referências ----------------- + +* `Let's Encrypt <https://letsencrypt.org>`_. +* `Segurança da informação – Wikipédia, a enciclopédia livre <https://pt.wikipedia.org/wiki/Seguran%C3%A7a_da_informa%C3%A7%C3%A3o>`_. |