Segurança em Virtualização utilizando o...

21
© 2010 IBM Corporation Segurança em Virtualização utilizando o KVM Klaus Heinrich Kiwi, IBM LTC Klaus Heinrich Kiwi – Engenheiro de Software, IBM Linux Technology Center 11 o Forum Internacional de Software Livre – Julho 2010

Transcript of Segurança em Virtualização utilizando o...

Page 1: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

© 2010 IBM Corporation

Segurança em Virtualizaçãoutilizando o KVM

Klaus Heinrich Kiwi, IBM LTC

Klaus Heinrich Kiwi – Engenheiro de Software, IBM Linux Technology Center11o Forum Internacional de Software Livre – Julho 2010

Page 2: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

2 © 2010 IBM Corporation

Agenda

Introdução

Arquitetura

Gerenciamento

Rede virtual

SELinux + sVirt

Auditoria

Criptografia em imagens

Segurança em Virtualização utilizando o KVM

Page 3: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

3 © 2010 IBM Corporation

Arquitetura

Page 4: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

4 © 2010 IBM Corporation

Arquitetura

Máquina VirtualKVM

=processo

(como qualquer outro)

Separação de processos = Qemu + kernelArquitetura Modular:

De acordo com filosofia Open-source/LinuxMais pontos de “interesse”Re-uso de interfaces conhecidas e testadas

Solução Libvirt: simplificar, estabilizar interfaces ...

Page 5: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

5 © 2010 IBM Corporation

Arquitetura

Na prática = Guests rodando como root● Motivo: uso eficiente de Interfaces de rede virtuais

Gerência através de Libvirt

Page 6: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

6 © 2010 IBM Corporation

Gerenciamento

Local ou túnel SSH – autenticação UNIX

TCP + sasl – DB próprio para credenciais

TLS – Autenticação via certificado digital

Page 7: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

7 © 2010 IBM Corporation

Gerenciamento

TCP simples – sem autenticação ou criptografia

VNC over TLS – certificado digital

Console Gráfico (VNC)

Page 8: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

8 © 2010 IBM Corporation

● TCP simples – sem autenticação ou criptografia●

● VNC over TLS – certificado digital

Console Gráfico (VNC)Pontos importantes:

● Rede de gerência isolada, firewall

● Console gráfico VNC● Range de portas dinâmico● Conexão local, autenticação fraca● Opção: VNC-over-TLS

● Uso de credenciais root com libvirtd● Exemplo: gerenciamento via ssh● Opções: credenciais SASL, certificados TLS

● ou AMBOS!

Gerenciamento

Page 9: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

9 © 2010 IBM Corporation

Rede Virtual

Link-layer (OSI layer 2) – encaminhamento de framesUso genéricoRiscos:

● ARP spoofing● MAC flooding

Bridge Simples

Page 10: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

10 © 2010 IBM Corporation

Rede Virtual

# ebtables -P FORWARD DROP# ebtables -s 54:52:00:11:22:33 -i vif1 -j ACCEPT# ebtables -o vif+ -j ACCEPT

Bridge Simples

+ebtables

Page 11: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

11 © 2010 IBM Corporation

Rede Virtual

Network-layer (OSI layer 3) – encaminhamento de pacotes+Endereços IP+bridge

NATou

Routing

Page 12: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

12 © 2010 IBM Corporation

Rede Virtual

sub-interfaces + bridge

vconfig

Recomendação: 1 bridge por VLAN ID

VLAN802.1q

Page 13: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

13 © 2010 IBM Corporation

Rede Virtual

Contexto global em certos módulos como conntrack/etc/sysctl.conf:

net.bridge.bridge-nf-call-ip6tables = 0net.bridge.bridge-nf-call-iptables = 0net.bridge.bridge-nf-call-arptables = 0

Atenção:iptables em

Bridges

Page 14: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

14 © 2010 IBM Corporation

● Contexto global em certos módulos como conntrack● /etc/sysctl.conf:

●net.bridge.bridge-nf-call-ip6tables = 0●net.bridge.bridge-nf-call-iptables = 0●net.bridge.bridge-nf-call-arptables = 0

Cuidado:iptables em

Bridges

Pontos importantes:

Configuração estática da rede de guests● MAC fixo

ebtables● Proteção contra flood, spoof

Desabilitar iptables em interfaces bridge

VLANs 802.1q = simplificação

Filtragem avançada – configuração no host● ou use libvirt > 0.8.2 (suporte a filtros de rede)

Rede Virtual

Page 15: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

15 © 2010 IBM Corporation

SELinux

DAC = Discretionary Access ControlPermissões padrões UNIX (user/group/other, read/write/execute)

Usuário controla o acesso aos seus objetosO mesmo vale para código malicioso ou hackers

Antes doSELinux

Page 16: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

16 © 2010 IBM Corporation

SELinux

MAC = Mandatory Access Control● Permissões definidas por políticas do sistema● Separação em domínios

● todas as interações explicitamente definidas● Processos com domínios próprios

Virtualizaçãocom

SELinux

Page 17: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

17 © 2010 IBM Corporation

SELinux

SELinux: cada domínio pode ser quebrado em categorias (MCS)

● Cada guest roda numa categoria diferente● Política proíbe qualquer interação entre categorias● sVirt = política SELinux + driver libvirt

VirtualizaçãocomsVirt

Page 18: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

18 © 2010 IBM Corporation

Auditoria

● Motivação:➔Virtualização = atividade relativamente contida➔Administração requer root

● Linux Audit :Bootloader:

root (hd0,1)kernel /vmlinuz-el5.x86_64 ro root=/dev/sda1 rhgb audit=1initrd /initramfs-el5.x86_64.img

# chkconfig auditd on

/etc/audit/audit.rules:● Auditar mudanças na configuração● Auditar interações não usuais

Page 19: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

19 © 2010 IBM Corporation

Auditoria

Mais exemplos, cenários mais detalhados:Blueprint: “Securing KVM guests and the host system”

http://publib.boulder.ibm.com/infocenter/lnxinfo/v3r0m0/topic/liaai/kvmsec/kvmsecstart.htm

ouhttp://blog.klauskiwi.com/

audit.rules:exemplos

# Acesso chave privada TLS -a exit,always \ -F path=/etc/pki/libvirt/private/serverkey.pem \ -F subj_type!=virtd_t

# Mudanças em imagens-a exit,always -F obj_type=virt_image_t \ -F perm=wa -F subj_type!=qemu_t

# Interações do Qemu com outros domínios-a exit,always -F arch=b64 -S all -F perm=wax \ -F subj_type=qemu_t -F obj_type!=qemu_t

Page 20: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

20 © 2010 IBM Corporation

Cryptografia em imagens

● Garantir proteção de dados em repouso (data-at-rest)● dm-crypt = cifragem em dispositivo de bloco (kernel)

● Transparente para o KVM (imagem raw)# cryptsetup

● qcow2 = formato suporta crypto, sparse files, libvirt ...

dm-crypte

qcow2

Page 21: Segurança em Virtualização utilizando o KVMblog.klauskiwi.com/wp-content/uploads/2010/07/SegurancaKVM-Oo.org_.pdf© 2010 IBM Corporation Segurança em Virtualização utilizando

21 © 2010 IBM Corporation

Dúvidas?

Klaus Heinrich [email protected]

Apresentação disponível em:http://blog.klauskiwi.com