Atualmente, estou iniciando um projeto avaliando programas não confiáveis (tarefas dos alunos) em um ambiente seguro de área restrita. A idéia principal é criar um aplicativo Web para o wrapper GlassFish e 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 (pool) de contêineres LXC, atribuindo a cada programa um contêiner (não utilizado).
Cada contêiner deve ser protegido com o SELinux para proteger o sistema host.
Minha pergunta é: É uma boa idéia criar esse mecanismo para um ambiente sandbox ou há alguma solução melhor para esse problema? Deve ser leve e seguro contra a criatividade dos alunos.
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, no entanto, o LXC foi construído como uma sandbox mais genérica para a execução de imagens de distribuição completas do Linux. Dois outros sandboxes de namespaces do Linux vêm à mente:
fonte