Segurança em Máquinas Virtuais no OpenStack Comércio Eletrônico (2013/2) Prof. Dr. Charles Christian Miers Alunos: Bruno Bastos Rodrigues, Lucas da Cunha, Ramon Michels Ruppenthal Objetivo Geral/Específicos Objetivo Geral: apresentar preocupações e soluções de segurança inerentes à virtualização de recursos dentro do contexto de nuvem, utilizando como estudo de caso a plataforma OpenStack Grizzly. Objetivos Específicos: Entendimento dos conceitos básicos envolvidos; Elencar as principais questões de segurança relacionadas à virtualização; Testes práticos na plataforma OpenStack em pontos específicos. 2 Introdução a Computação em Nuvem Definição (NIST): “É um modelo que permite um acesso universal e adequado à rede sob-demanda para um conjunto compartilhado de recursos computacionais configuráveis (por exemplo: rede, servidores, armazenamento, aplicações, serviços) que podem ser rapidamente fornecidos e disponibilizados com um mínimo de esforço de gestão ou interação com o fornecedor do serviço” Porque utilizar Computação em Nuvem? • 3 Introdução Computação em Nuvem NIST disponibiliza definições de Nuvem que são aceitas como referência mundial. 4 Adaptado de: (MELL e GRANCE, 2009). Modelos de Implantação 5 Adaptado de: (LINKHEAD, 2010). Modelos de Serviço 6 Arquitetura de Referência NIST 7 Adaptado de: (MELL e GRANCE, 2009) Como aproveitar ao máximo os recursos de hardware? 8 Virtualização de Recursos de Hardware!!! 9 Virtualização de Recursos Conceitos Tipos de Virtualização Soluções de Virtualização 10 Virtualização O conceito surgiu em 1967 pela IBM com a criação do primeiro hypervisor (POPEK; GOLDBERG, 1973). O que é? Abstração de um conjunto de recursos (computacionais e/ou de comunicação) É possível virtualizar diversos componentes... 11 Fonte: (REDES E SERVIDORES, 2011) Aproveitamento de Recursos Ociosos 12 Fonte: vmware.com Tipos de Virtualização 13 Virtualização de Hardware Muito utilizada em mainframes; Partições lógicas (LPAR) dividem os recursos do hardware; 14 Fonte: www.ibm.com Containers Também chamada de virtualização de S.O. O kernel e algumas ferramentas devem ser modificadas; Para cada instância, cria um ambiente virtual isolado (container) executado sobre um único kernel que garante o isolamento; Consome bem menos recursos. 15 Virtualização por Software 16 Hypervisor Hypervisor é uma camada de software que permite ao node executar diversas máquinas virtuais com a possibilidade de configuração e hardware diferentes do node, também é comumente chamado de VMM (Virtual Machine Monitor). Exemplos: VMWare, Xen, KVM, LXC, PowerVM, etc. 17 Tipos de Hypervisors Tipo 1: Bare-Metal (No Metal) Tipo 2: Host (Hospedado em um SO) 18 Virtualização Total Um ou mais sistemas operacionais (SOs) e os aplicativos que eles contêm são executados em cima do hardware virtual; Cada instância de um sistema operacional e seus aplicativos é executada em uma MV separada chamada de sistema operacional hospedado. 19 Fonte: www.datamotion.com (Figura) Paravirtualização Em vez de utilizar diretamente as instruções de hardware, os SOs virtualizados utilizam uma API (Application Programming Interface) exposta pelo Hypervisor para executar as instruções normais do sistema operacional hospedado (KOSLOVSKI, 2011). 20 Fonte: www.datamotion.com (Figura) Emulação Máquina virtual simula um hardware com CPU diferente do hardware físico; Hypervisor precisa converter instruções; SO funciona sem modificações. 21 Fonte: www.datamotion.com (Figura) Virtualização Assistida por Hardware Hardware auxilia no isolamento das máquinas virtuais; Hardware se encarrega de partes ineficientes e/ou complexas da virtualização via software. 22 Plataformas de Virtualização O OpenStack divide as plataformas em 3 grupos: Grupo A: os drivers são totalmente suportados. Hypervisors: libvirt qemu/KVM em x86; Grupo B: os drivers não foram totalmente testados. Hypervisors: XenAPI em x86; Grupo C: os drivers foram minimamente testados ou não foram testados. Hypervisors: VMWare, baremetal, docker, Hyper-V, libvirt (LXC, Xen), PowerVM e ARM. 23 Os 3 Principais Hypervisors para o OpenStack 24 XEN Xen: Originário de um projeto de pesquisa da universidade de Cambridge, na Inglaterra em 2003 (BARHAM et al., 2003). Xen tem seus componentes divididos em dois Domínios: Domínio 0 (Dom0): tem o maior privilégio em uma máquina, ou seja, é a única máquina virtual (por padrão) que possui acesso e controle direto sobre o hardware; Domínio U (DomU): Os domínios hospedados em Xen são gerenciados (criados, destruídos, suspensos, reiniciados, etc.) através de interfaces administrativas disponibilizadas no Dom0. 25 Arquitetura Xen 26 Adaptado de: (MENEZES, 2008) KVM KVM (Kernel-based Virtual Machine) foi criado em 2007 pela empresa Red Hat e sua tecnologia é voltada ao Linux; Os desenvolvedores do KVM criaram um método que transformou o próprio kernel do Linux em um MMV, assim, pôde-se simplificar a gestão e melhorar o desempenho em ambientes virtualizados (HABIB, 2008); 27 Arquitetura KVM 28 Adaptado de: (HABBIB, 2008) VMWare VMware: Criado em 1998 e em 2004 foi comprado pela EMC pelo valor de U$625 milhões (VMWARE, 2012b); Teoricamente, qualquer SO (Sistema Operacional) que pode ser executado em uma arquitetura x86 pode funcionar como um SO hospedado no VMware. 29 Arquitetura VMWare 30 Fonte: www.vmware.com Introdução da plataforma OpenStack 31 Projeto OpenStack Sistema Operacional de Nuvem Criação de nuvem pública / privada IaaS Fundação OpenStack + 1000 membros individuais + 850 organizações + 87 países Início desenvolvimento em 2010 Idealizado pela NASA (EUA) e Rackspace Release atual: Havana Linguagem: Python 32 Fonte: (DIEDER, 2013) Apoio da Comunidade ao OpenStack Número mensal de participantes 33 Fonte: (QYJOHN, 2012) Visão Geral 34 Fonte: (DIEDER, 2013) Necessidade de Segurança no Ambiente de Nuvem “Pelo fato da computação em nuvem ser um projeto emergente, além de trazer consigo vulnerabilidades de tecnologias que lhe deram origem, traz à luz também novas vulnerabilidade” (CASTRO et. al, 2012). Componentes de rede; Máquinas virtuais; API’s; Componentes WEB; Entre outros. 35 Necessidade de Segurança nas VM’s Necessidade de orquestrar instruções aos recursos físicos Cada processador suporta um conjunto de instruções. Algumas executam em modo privilegiado e outras em modo usuário. 36 Guias para Segurança em Virtualização 37 Importância dos Guias de Segurança em Virtualização Fornecem uma visão geral da segurança em virtualização; Identificam as principais questões de segurança relacionadas; Estabelecem normas, prioridades e medidas de prevenção. 38 Principais Guias Relacionados NIST – Guide to Security for Full Virtualization Technologies PCI Security Standards Council – Data Security Standards (DSS) Virtualization Guideline Red Hat – Virtualization Security Guide 39 NIST Subdivide as recomendações em 4 áreas: Segurança do hypervisor; Segurança do Guest; Segurança da infraestrutura virtualizada; e Segurança na virtualização de desktops. Fornece um ciclo de planejamento e utilização para uma virtualização segura: 40 Iniciação; Planejamento e projeto; Implementação; Operações e Manutenção; e Disposição. Recomendações por Áreas do NIST Segurança do Hypervisor: Instalar updates de segurança; Restringir acesso administrativo; Sincronizar a infraestrutura com um timeserver confiável; Desabilitar serviços não utilizados; e Monitoramento, análise de logs. Segurança dos Guests Seguir recomendações práticas para gerenciamento de S.O físico; Instalar updates de segurança; Backup de drivers virtuais regularmente; e Utilizar diferentes soluções de autenticação. 41 Recomendações por Áreas do NIST Segurança da infraestrutura virtual: Isolamento de rede; Isolamento de armazenamento; e Isolamento de instruções. Virtualização de Desktops: Única diferença para virtualização de servidores é a capacidade de gerenciamento de imagens. Servidores -> gerenciamento de imagens restrito Desktop -> responsabilidade é do usuário 42 Fases de Planejamento e Utilização Segura da Virtualização Planejamento e Projeto - Especificar características/ componentes relacionados; -Métodos de autenticação; -Mecanismos de cifragem, etc; Iniciação - Revisão de logs; - Detecção de ataques; - Monitoramento constante Disposição/Remoção Implementação -Tarefas de organização; - Ident. de requisitos; - Ident. de plataformas; -Ident. de Aplicações, etc. 1 Operação e Manutenção -Configuração dos equipamentos e componentes 2 3 4 - Preservação das informações; - Exclusão apropriada de dados; - Descarte apropriado de equipamentos, etc. 5 Fases de Planejamento e Utilização Segura da Virtualização 43 Red Hat Subdivide as recomendações em 3 áreas: Segurança do host/hypervisor; Segurança dos Guests; e Segurança de rede no ambiente virtualizado. Apresenta diversas recomendações específicas para o Red Hat Enterprise Linux. 44 Recomendações por Áreas Segurança do host/hypervisor Executar apenas serviços recomendados; Limitar acesso apenas à usuários com necessidade de gerenciar o sistema; Garantir que seja possível realizar auditorias; e Utilizar canais seguros de comunicação SSL/TLS; Criar rede isolada de gerenciamento. 45 Recomendações por Áreas Segurança dos Guests Utilização de canais seguros de comunicação; Garantir a segurança das aplicações; e Cifragem de dados para que não sejam acessados fora do escopo de segurança dos guests. Segurança de Rede Utilização de protocolos seguros de comunicação; Firewalls; Políticas; e Isolamento da rede de administradores dos guests. 46 PCI Security Standards Subdivide suas seções em 3 áreas: Visão geral de virtualização; Riscos para ambientes virtualizados; e Recomendações. 47 Recomendações por Áreas Visão geral Conceitos de virtualização (tipos/classes); Componentes da virtualização. Riscos para ambientes virtualizados Vulnerabilidades no ambiente físico aplicado em um ambiente virtual; Vulnerabilidades proporcionadas pelo hypervisor; Aumento da complexidade dos sistemas virtualizados e redes; Mais de uma função por sistema físico. 48 Recomendações por Áreas de VM’s de diferentes níveis de confiança; Falta de separação de funções; VM’s em estado de espera; Imagens e Snapshots; Imaturidade das funções de monitoramento; Vazamento de informações entre segmentos virtuais de rede. Mistura 49 Comparativo 50 Pontos Abordados NIST RED HAT PCI 1 – Segurança do hypervisor. (Monitoramento/logs/ Configuração/ restrições de acesso administrativo) Abordado Abordado Abordado 2 – Segurança da infraestrutura virtual Abordado Abordado Abordado 3 - Mistura de VM’s de diferentes níveis de confiança no mesmo host N.A N.A Abordado 4 - Segurança em virtualização de servidores Abordado Abordado Abordado 5 - Segurança em virtualização de desktops Abordado N.A Abordado Comparativo Pontos Abordados NIST RED HAT PCI 6 - Vazamento de informações entre segmentos virtuais de rede. Abordado N.A Abordado 7 - Imaturidade das funções de monitoramento N.A N.A Abordado 8 – Segurança na geração de Imagens e Snapshots N.A N.A Abordado Abordado Abordado Abordado Abordado N.A Abordado Abordado Abordado Abordado N.A N.A N.A 9 – Isolamento de Rede 10 – Proteção da Imagem da VM 11 – Segurança dos dados da VM 12 - Segurança das API’s do hypervisor 51 Análise das Vulnerabilidades dos Hypervisors Fontes de análise: LaunchPad (Bugs) Parâmetros: Status: nova, confirmada, em triagem, em progresso e corrigida, incompleto, correção enviada, correção liberada, não será corrigido. Importance (Relevância ou Importância): lista de espera, indefinida, baixa, média, alta e crítica. CVE (Vulnerabilidades) Parâmetros: Severidade: baixa (0-3), média (4-6), alta e média (4-10), alta (710); Vetor de acesso: rede, rede local, apenas local; Complexidade de acesso: baixa, média e alta; Autenticação: nenhuma, única, múltipla. 52 LaunchPad LaunchPad: estrutura para que a comunidade submeta bugs; Categorização dos bugs listados; Cada tipo de bug possui uma equipe especializada; e OSSG (OpenStack Security Group) --> VMT (Vulnerability Management Team) 53 (LAUNCHPAD, 2013) CVE (Common Vulnerabilities and Exposures) É uma lista de problemas comuns de segurança pertinentes a diversos sistemas Metas: Enumerar todos os problemas de segurança publicamente conhecidos Padronizar os tipos de problemas Ser publico, aberto compartilhável, sem restrições de distribuição 54 (CVE MITRE, 2013) Qemu/KVM - Bugs 55 Fonte: (LAUNCHPAD, 2013). Qemu/KVM - Vulnerabilidades 56 Fonte: (CVE MITRE, 2013). Xen - Bugs 57 Fonte: (LAUNCHPAD, 2013). Xen - Vulnerabilidades 58 Fonte: (CVE MITRE, 2013). VMWare - Bugs 59 Fonte: (LAUNCHPAD, 2013). VMWare - Vulnerabilildades 60 Fonte: (CVE MITRE, 2013). Considerações sobre o Comparativo 61 Fonte: (GONZALEZ et. al., 2012). Estudo de Caso com o OpenStack 62 Objetivo do Estudo de Caso Compreensão geral da plataforma; DevStack, Arquitetura Nova Realizar a criação de uma VM; Monitoramento Verificar a comunicação entre os componentes; Verificar se a imagem requisitada no Glance está cifrada Soluções para possíveis problemas encontrados. Opções de segurança SELinux sVirt 63 Arquitetura 64 Adaptado de (PEPPLE, 2012) Nova Infraestrutura computacional (codinome Nova): Gerenciador da infraestrutura computacional de uma nuvem OpenStack Controla todas as necessidades de recursos computacionais, rede, autorização, e escalabilidade da nuvem. 65 Fonte: (PEPPLE, 2012) Instalação do OpenStack Abordagem para desenvolvedores Instalação por scripts Multi-node, Single-node, em VM Não recomendada para uso em produção! Scripts facilitam a instalação porém limitam a personalização. 66 Configuração do DevStack Hypervisor utilizado pelo DevStack: Qemu Abordagem multi-node Compute Controller 67 Criação de uma VM por CLI 1 – Verificar os grupos de segurança 2 – Habilitar ping/ssh 3 – Adicionar Regras 4 – Gerar Chave 5 – Listar os tipos de imagens 6 – Listar as imagens 7 – Criar a VM 68 Processo de Criação de uma VM 69 Processo de Criação de uma VM 70 Processo de Criação de uma VM 71 Processo de Criação de uma VM 72 Monitoramento Objetivo: Verificação da comunicação interna (autenticação no Keystone) e da requisição da imagem no Glance. Procedimento: filtragem pelas portas IP_HOST:9292 (Glance) IP_HOST:5000 (Keystone) 73 Monitoramento 74 Monitoramento Glance autenticando no Keystone 75 Monitoramento Glance autenticando no Keystone 76 Monitoramento Glance buscando a imagem no MySQL 77 Monitoramento Glance buscando a imagem no MySQL 78 Considerações Parciais Comunicação interna realizada por padrão de forma insegura. Credenciais passadas em texto as claras. Imagem requisitada para criação da VM não é cifrada Solução: PKI + Certification Authority (CA) para validar a PKI de uma entidade (usuario, sistema, componente, entre outros) 79 Correção Configurar Glance.conf para cifrar os metadados da imagem. Etc/Glance/Glance.conf 80 Imagens Cifradas 81 Correção Configurar Keystone.conf para utilizar tokens PKI, comunicando-se com SSL e certificadas com X509. etc/Keystone/Keystone.conf 82 Fonte: http://docs.openstack.org/developer/keystone/configuration.html#generatingssl-certificates Certificados + SSL Somente no release Folsom o recurso foi adicionado 83 Fonte: (OSSG, 2013) OpenStack Security Group Gerando Certificados no Keystone 84 Resultado 85 Resultado 86 sVirt (SELinux) + virsh (Libvirt) Isolamento de VM’s 87 Isolamento com sVirt 88 Fonte: (IBM, 2013) Gerenciamento do Ciclo de Vida das VMs com o virsh 89 Considerações Finais VM-N Vulnerabilidades de virtualização de nuvem possuem alta complexidade Virtualização = abstração de software Virtualização na nuvem = 2x abstração VM-1 VM-2 Hypervisor Nuvem Hardware No CVE => Maioria das vulnerabilidades provenientes de erros de programação Rápida evolução da plataforma, consequentemente da sua segurança. 90 Considerações Finais Muitas vezes a segurança da plataforma depende da sua configuração adequada. As configurações de segurança não são habilitadas por padrão tanto para o DevStack e a para instalação tradicional. Habilitar o protocolo SSL proporciona segurança na comunicação interna na plataforma. 91 Considerações Finais Compreensão da importância da virtualização no contexto de nuvem, dos diversos tipos de virtualização, sua segurança. Visão geral do funcionamento da plataforma/hypervisors e da segurança por meio dos guias. 92 Referências DIEDER, MARCELO. Como Gerenciar uma Nuvem Pública ou Privada Utilizando o OpenStack. Fórum Internacional de Software Livre (FISL) 14ª edição. Porto Alegre, Brasil. 2013. 93 GONZALEZ, M.; MIERS, C.; ROJAS, M.A.; REDÍGOLO, F.; CARVALHO, T.; NÄSLUND, M.; POURZANDI, M. A Quantitative Analysis of Current Security Concerns and Solutions for Cloud Computing. Journal of Cloud Computing (JoCCASA), vol. 1, 2012. LAUNCHPAD (2013). OpenStack. Disponível em: https://launchpad.net/openstack. MELL, P.; GRANCE, T. The NIST Definition of Cloud Computing. National Institute of Standards and Technology (NIST), Information Technology Laboratory. Gaithersburg, Maryland – USA. 2011. PCI Security Standards Council. (2011). Data Security Standard (PCI DSS). Virtualization Special Interest Group. Disponível em: https://www.pcisecuritystandards.org/documents/Virtualization_InfoSupp_v2.pdf Referências PEPPLE, K. (2012). OpenStack Folsom Architecture. Disponível em: 94 http://ken.pepple.info/openstack/2012/09/25/openstack-folsomarchitecture/ Red Hat. (2013). Virtualization Security Guide. Disponível em: https://access.redhat.com/site/documentation/enUS/Red_Hat_Enterprise_Linux/6/html/Virtualization_Security_Guide/ RITA DE C. C. DE CASTRO; LUIZA DOMINGOS; GLAUCIVÂNIA LUZ; CLAUDIO PEREIRA; MARCELO GOMES. Gestão de Vulnerabilidades em Cloud Computing: Um Cenário da Nuvem Pública. Universidade Estadual do Ceará (UECE). 2012. SLIPETSKYY, R. Security Issues In OpenStack. Master thesis in Security and Mobile Computing, Departament of Telematics, Norwegian University of Science and Technology (NUST). Junho de 2011. VMWare. (2013). VMWare Virtualization. Disponível em: http://www.vmware.com/virtualization/ WEN, X.; GU, G.; LI, Q.; GAO, Y.; ZHANG, X. Comparison of OpenSource Cloud Management Platforms: OpenStack and OpenNebula. In 9th International Conference on Fuzzy Systems and Knowledge Discovery, FSKD '12, pages 2457- 2461. 2012.