Segurança e automação na Amazon: Lições das trincheiras

1,348 views

Published on

Palestra sobre Segurança e Automação na Amazon, mostrando vários aprendizados dos últimos 5 anos trabalhando com Amazon Web Services.

Published in: Software
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,348
On SlideShare
0
From Embeds
0
Number of Embeds
394
Actions
Shares
0
Downloads
17
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Segurança e automação na Amazon: Lições das trincheiras

  1. 1. Segurança e Automação Amazon Web Services Lições das trincheiras. Bruno Pereira Bruno Almeida
  2. 2. Quem Somos CEO da Rivendel CTO do Hotel Urbano Desenvolvedor/Arquiteto com 12 anos de experiência 5 anos com Amazon Web Services Mais de 70 clientes Amazon atendidos Bruno Pereira
  3. 3. Quem Somos Sócio da Rivendel e Arquiteto AWS 8 anos de experiência como DevOps 4 anos com Amazon Web Services Mais de 50 clientes Amazon atendidos Bruno Almeida
  4. 4. Quem Somos Completando 1 ano em Maio 40+ clientes atendidos, cerca de 20 recorrentes Parceira AWS e Mulesoft Time atualmente com 10 pessoas
  5. 5. Motivação Será mesmo que um Datacenter físico é mais seguro que um ambiente automatizado em Cloud??
  6. 6. Motivação A sua infraestrutura fica em um data center com qualquer uma das certificações abaixo? - HIPAA - SOC 1/SSAE 16/ISAE 3402 (formerly SAS70) – (Focados em bilhetagem, medição e transparência de custos financeiros) - SOC 2 (Relatórios de segurança feito por auditoria externa) - SOC 3 (Relatórios de segurança feito pela “AICPA”) - PCI DSS Level 1 (Nível de segurança PCI para o meio físico) - ISO 27001 (Certificação de boas práticas de segurança da informação) - FedRAMP(SM) (Certificação compatível com o governo americano) - DIACAP and FISMA - ITAR - FIPS 140-2 - CSA - MPAA - DoD 5220.22-M (Politica de destruição de hardware)
  7. 7. Modelo de responsabilidade compartilhada
  8. 8. Modelo de responsabilidade compartilhada Se enxerguei mais longe foi porque me apoiei nos ombros de gigantes.
  9. 9. Modelo de responsabilidade compartilhada Se enxerguei mais longe foi porque me apoiei nos ombros de gigantes. Vamos nos apoiar na Amazon e construir uma solução campeã??
  10. 10. Grupos de segurança Exemplo básico
  11. 11. Grupos de segurança Mecanismo útil para aplicar regras comuns de firewall em múltiplos servidores de uma só vez, facilitando gestão Importante criar grupos por camada de aplicação Interessante liberar acesso para grupos Tudo bloqueado por padrão, aberto só o que for liberado explicitamente
  12. 12. Grupos de segurança – Exemplo ruim
  13. 13. Grupos de segurança – Melhorando Grupos de segurança padrão definem as regras de ENTRADA aos servidores. Eles não tratam das regras de SAÍDA.
  14. 14. Segurança Web Balanceamento: nginx, Apache, HAProxy ou ELB? Preciso necessariamente de alguma coisa na frente do servidor de aplicação? Web Application Firewall (WAF)
  15. 15. Servidores HTTP diretamente Gestão dos certificados Ataques DDoS Como se proteger?
  16. 16. Servidores HTTP com balanceamento ELB + Autoscaling Health-check de todas as instâncias Dá pra melhorar?
  17. 17. Servidores HTTP com balanceamento e WAF Camada WAF adicional ao ELB Proteção contra OWASP Detectar a passagem de conteúdo não autorizado como número de cartão de crédito; Gerar alerta forense Proteção contra força bruta Pode ser feito por software ou por hardware especifico. Pode ser instalado e configurado manualmente ou contratado um serviço especifico de WAF em SaaS.
  18. 18. Heartbleed Ocorreu uma falha possibilitando descriptograr o conteúdo da requisição HTTPS. Solução: atualizar o OpenSSL de sua instância Na AWS, houve uma atualização automática no ELB No seu Datacenter quanto tempo levou a correção?
  19. 19. Acesso de rede Falamos muito de segurança WEB, mas e o meu acesso à rede / instâncias (servidores) na AWS como fica? Posso liberar o acesso SSH, RDP, FTP e MySQL aos meus servidores publicamente e consigo acessá-los. Mas isso é seguro?
  20. 20. NÃO!!! Caso você deixe alguma dessas portas visivéis a internet, você pode sofrer um ataque força bruta. Com o seu endereço IP em mãos, pode-se executar um comando nmap pra ver quais portas estão abertas e então executar algum software de quebra de senha. Como resolver? VPN/VPC to the rescue
  21. 21. VPN/VPC na Amazon Precisamos de uma rede dentro da Amazon, ou seja uma Virtual Private Cloud (VPC) Passamos a ter regras de saída dos grupos de segurança, em vez de só regras de entrada Podemos configurar ACLs de rede Temos a Amazon como extensão da nossa infraestrutura em vez de tê-la como nuvem pública VPC é totalmente gratuito
  22. 22. Porque ter Regras de Outbound? Sua instância pode sofrer algum ataque que a transforme em um zumbi que faz chamadas a outros servidores. Esse tipo de ataque pode acontecer caso não tenhamos regras de entrada HTTP/HTTPS e SSH adequadas, abrindo a entrada por SSH ou SQL injection
  23. 23. ACLs de VPC Onde se enquadra? Em casos onde preciso aplicar alguma regra para toda uma sub- rede. O conceito não é diferente do que já é aplicável nos firewalls de mercado. O objetivo é que você crie com ACLs toda regra de entrada ou saída válida aquela sub-rede ou grupo de sub-redes.
  24. 24. Como se conectar de forma segura à VPC? Posso ter uma VPN entre a minha rede e a AWS? Sim, você pode usar a própria solução de VPN AWS, basta ficarmos cientes de que a solução padrão se conecta apenas a grandes equipamentos de mercado. Não tenho um equipamento de grande porte, como faço essa configuração? Podemos usar soluções linux como OpenSwan ou OpenVPN. Posso ter uma VPN do meu computador para a AWS? Sim, basta criar um servidor de VPN na AWS usando PPTP ou OpenVPN.
  25. 25. O que fazer na sequência? Você já parou pra pensar como controlar os acessos para caso alguém da equipe saia da empresa ou projeto? Será que é uma boa prática criar uma chave privada na AWS e passar ela a todos os desenvolvedores? Mesmo que você tenha uma chave para Homologação e uma outra para produção, isto é suficiente?
  26. 26. Como controlar da melhor forma? Como organizar e controlar as chaves privadas de acesso? Devo criar usuários linux para cada usuário? Sim, mas não acessíveis por senha Então como? Usuários devem possuir uma chave privada, pois o protocolo SSH v2 já tem um bom nível de criptografia Porém, é melhor ainda que cada integrante tenha sua chave inserida no arquivo ssh de autorização de chaves
  27. 27. Hardening no SO Quais acessos cada integrante da equipe realmente precisa ter? Permissão no SO limitada ao estritamente necessário Quais pacotes manter instalados no SO? Manter o mínimo de portas e serviços abertos Protegendo ao máximo as chaves de acesso Se é crítico ao extremo, contrate um Penetration Test!
  28. 28. Identity and Access Management (IAM) Criando perfis e grupos para delegar autenticação e autorização Controle de acesso por serviço, por servidor, grupo de servidores, chegando a granularidade de 1 único recurso Níveis diferentes de acesso em Dev, QA e PROD Por que controlar os acessos? Devemos ter usuários genéricos ou segregar usuários por aplicação?
  29. 29. Automação
  30. 30. Entendendo até onde posso ir com as APIs Como posso inicializar uma nova instância na AWS sem intervenção manual? ec2-run-instances [ID da AMI] -K [Chave Privada] -n 1 -g [Grupo de Segurança]
  31. 31. Automatizando a subida de uma nova instância Como eu poderia automatizar a ação de inicializar um servidor? Nome: Script-teste.sh Conteúdo: #!/bin/bash AWS_ACCESS_KEY= [ACCESS KEY] AWS_SECRET_KEY= [SECRET ACCESS KEY] ec2-run-instances [ID da AMI] -K [Chave Privada] -n 1 -g [Grupo de Segurança] && echo “OK”
  32. 32. Automatizando a criação de uma AMI Como eu poderia automatizar a ação de montar um servidor modelo? Nome: Script-teste.sh Conteúdo: #!/bin/bash AWS_ACCESS_KEY= [ACCESS KEY] AWS_SECRET_KEY= [SECRET ACCESS KEY] ec2-create-image [ID do Servidor Ligado que será o modelo] -n "Servidor WEB Modelo"
  33. 33. 1o processo de deploy automático com Auto Scaling Nome: Script-teste.sh Conteúdo: #!/bin/bash AWS_ACCESS_KEY= [ACCESS KEY] AWS_SECRET_KEY= [SECRET ACCESS KEY] ec2-create-image [ID do Servidor Ligado que será o modelo] -n "Servidor WEB Modelo" as-create-launch-config …. as-update-auto-scaling-group ...
  34. 34. AWS API + shell script for the win? Não! Podemos fazer melhor que isso! :) O ideal é usar um serviço especializado para configurar servidores. Na AWS o serviço é o OpsWorks, que permite escrever uma receita Chef, subir para um repositório git e ele então configura um servidor para nós.
  35. 35. Vou configurar um serviço que irá configurar os servidores pra mim? Isso mesmo! Usando Chef nós escreveremos uma receita em Ruby (também aceita comandos shell), e vamos nesta receita indicar o que queremos que ele efetivamente faça na configuração.
  36. 36. Como começo a criar receitas? Instale o chef em seu computador. Crie um repositório git e ligue ele ao seu computador dentro da pasta do projeto, execute o comando: knife cookbook create [NOME DA RECEITA QUE DESEJA CRIAR]. Este comando irá criar toda a estrutura de pastas da receita. Vá até a pasta da receita que criou, e então na pasta recipe edite o arquivo default. Insira por exemplo o conteúdo: package "nginx" do action :install end service "nginx" do action [ :enable, :start ] end Pronto, salve o arquivo. Com este conteúdo em sua receita, você irá instalar e habilitar em auto-inicialização o nginx.
  37. 37. Qual benefício de usar o OpsWorks e não um chef- server? Usando a API da AWS no OpsWorks conseguimos por exemplo pegar o nome da Stack onde a receita está sendo executada. Isso fará com que eu determine por exemplo qual arquivo de configuração de banco de dados vou usar na receita. case node[:opsworks][:stack][:name] when "Producao" #FAÇA ALGO end when "Homologacao" #FAÇA ALGO end
  38. 38. E o deploy da minha aplicação? Podemos pelo Opsworks definir a aplicação que faremos o deploy e qual o branch do controle de versão que será aplicado. Pensando em um ambiente com 1 deploy por semana, isso não fará diferença. Pensando em Deploy Contínuo com vários deploys por dia, isso fará muita diferença. Você quer Deploy Contínuo, não é mesmo? :)
  39. 39. Que ferramenta eu uso em cada situação? Na execução repetitiva de uma ação, como por exemplo configurar nginx + php-fpm ou HipHop, o ideal é usarmos o OpsWorks, pois ele irá aplicar aquela mesma receita configurada uma única vez nas novas instâncias. Em cenários pontuais e bem específicos como configuração de um cluster de VPN OpenSwan ou qualquer outra ocasião pontual que não se repete, o shell script ainda será muito útil.
  40. 40. Perguntas?? contato@rivendel.com.br http://rivendel.com.br http://blog.rivendel.com.br http://suporteamazon.com.br
  41. 41. Obrigado!!!

×