Contêineres LXC como ambiente de área de segurança

9

Atualmente, estou iniciando um projeto avaliando programas não confiáveis (atribuições de alunos) em um ambiente de sandbox seguro. A ideia principal é criar um aplicativo da Web para o GlassFish e o wrapper Java em torno do lxc-utils para gerenciar contêineres LXC. Ele terá uma fila de programas em espera e um wrapper Java manterá um número fixo (conjunto) de contêineres LXC, atribuindo a cada um deles um contêiner (não usado).

Cada contêiner deve ser protegido com o SELinux para proteger o sistema host.

A minha pergunta é: é uma boa ideia criar um mecanismo desse tipo para um ambiente de sandbox ou existe alguma solução de melhor ajuste para este problema? Deve ser leve e seguro contra a criatividade dos alunos.

    
por eXPi 02.10.2013 / 20:08

2 respostas

6

Você não escreveu porque escolheu o LXC, já que não é a solução de virtualização mais segura. Sou um grande usuário do KVM / XEN e também do LXC, e posso dizer uma coisa que quando se trata de segurança eu nunca uso contêineres Linux (não importa se LXC / OpenVZ / VServer). É apenas mais fácil (e mais confiável) com o KVM / XEN.

Se for sobre desempenho ou requisitos de hardware, então ok - você pode tentar com o LXC, mas existem algumas regras que você deve seguir:

  • O libvirt garante o confinamento estrito de contêineres ao usar o SELinux (graças ao LXC_driver) - não tenho certeza se é apenas o caso RHEL / Centos / Fedora (eu não uso muito o Ubuntu / Debian) link - então ir com o SELinux é uma boa idéia (na minha opinião é" preciso ter "em tais circunstâncias)
  • Defina regras restritas de cgroups para que seus convidados não façam seu host congelar ou afetar outros contêineres
  • Eu preferiria usar contêineres baseados em LVM - é sempre mais uma camada de "segurança"
  • Pense na solução e arquitetura de rede. Esses contêineres precisam se comunicar uns com os outros?

Comece lendo este - é bem antigo, mas ainda assim - há muito conhecimento lá. E também - conheça os namespaces de usuário

E depois de tudo isso, pense novamente - você realmente tem muito tempo para brincar com a segurança do LXC? O KVM é muito mais simples ...

    
por 06.10.2013 / 13:45
1

Para executar programas não confiáveis Os namespaces do Linux ainda são a melhor solução. É mais fácil configurar do que o KVM e requer menos recursos. Você pode experimentar o LXC, mas o LXC foi criado como uma sandbox mais genérica para executar imagens completas de distribuição do Linux. Duas outras caixas de proteção de espaços de nomes do Linux vêm à mente:

  • Caixa de proteção Google Chrome , distribuída atualmente com o Google Chrome / Chromium
  • Firejail , uma caixa de proteção de segurança criada para executar o Mozilla Firerfox e qualquer outro programa GUI.
por 21.06.2014 / 12:35