segurança e automação na amazon: lições das trincheiras

41
Segurança e Automação Amazon Web Services Lições das trincheiras. Bruno Pereira Bruno Almeida

Upload: blpsilva

Post on 18-Dec-2014

526 views

Category:

Software


1 download

DESCRIPTION

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

TRANSCRIPT

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

Segurança e Automação Amazon Web Services Lições das trincheiras.

Bruno Pereira Bruno Almeida

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

Quem Somos

CEO da RivendelCTO do Hotel UrbanoDesenvolvedor/Arquiteto com 12 anos de experiência5 anos com Amazon Web ServicesMais de 70 clientes Amazon atendidos

Bruno Pereira

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

Quem Somos

Sócio da Rivendel e Arquiteto AWS8 anos de experiência como DevOps4 anos com Amazon Web ServicesMais de 50 clientes Amazon atendidos

Bruno Almeida

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

Quem Somos

Completando 1 ano em Maio40+ clientes atendidos, cerca de 20 recorrentesParceira AWS e MulesoftTime atualmente com 10 pessoas

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

Motivação

Será mesmo que um Datacenter físico é mais seguro que um ambiente automatizado em Cloud??

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

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)

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

Modelo de responsabilidade compartilhada

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

Modelo de responsabilidade compartilhada

Se enxerguei mais longe foi porque me apoiei nos ombros de gigantes.

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

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ã??

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

Grupos de segurança

Exemplobásico

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

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

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

Grupos de segurança – Exemplo ruim

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

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.

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

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)

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

Servidores HTTP diretamente

Gestão dos certificados

Ataques DDoS

Como se proteger?

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

Servidores HTTP com balanceamento

ELB + Autoscaling

Health-check de todas as instâncias

Dá pra melhorar?

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

Servidores HTTP com balanceamento e WAF

Camada WAF adicional ao ELBProteção contra OWASPDetectar a passagem de conteúdo não autorizado como número de cartão de crédito;Gerar alerta forenseProteção contra força brutaPode ser feito por software ou por hardware especifico. Pode ser instalado e configurado manualmente ou contratado um serviço especifico de WAF em SaaS.

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

Heartbleed

Ocorreu uma falha possibilitando descriptograr o conteúdo da requisição HTTPS.Solução: atualizar o OpenSSL de sua instânciaNa AWS, houve uma atualização automática no ELBNo seu Datacenter quanto tempo levou a correção?

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

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?

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

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

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

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

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

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

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

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.

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

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.

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

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?

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

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 senhaEntão como?

Usuários devem possuir uma chave privada, pois o protocolo SSH v2 já tem um bom nível de criptografiaPorém, é melhor ainda que cada integrante tenha sua chave inserida no arquivo ssh de autorização de chaves

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

Hardening no SO

Quais acessos cada integrante da equipe realmente precisa ter? Permissão no SO limitada ao estritamente necessárioQuais pacotes manter instalados no SO?Manter o mínimo de portas e serviços abertosProtegendo ao máximo as chaves de acessoSe é crítico ao extremo, contrate um Penetration Test!

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

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?

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

Automação

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

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]

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

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”

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

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"

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

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 ...

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

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.

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

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.

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

Como começo a criar receitas?

Instale o chef em seu computador.Crie um repositório git e ligue ele ao seu computadordentro 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 :installendservice "nginx" do action [ :enable, :start ]endPronto, salve o arquivo. Com este conteúdo em sua receita, você irá instalar e habilitar em auto-inicialização o nginx.

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

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 ALGOend when "Homologacao"#FAÇA ALGOend

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

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? :)

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

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.

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

Perguntas??

[email protected]://rivendel.com.brhttp://blog.rivendel.com.brhttp://suporteamazon.com.br

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

Obrigado!!!