Onde estão os limites de segurança dos contêineres lxc?

8

Minha pergunta é sobre a segurança de um contêiner LXC.

Se eu estiver executando vários contêineres em minha caixa e conceder aos usuários um acesso ssh separado a seu contêiner de propriedade, algum deles pode invadir os outros contêineres nessa caixa ou até mesmo a máquina host?

Onde estão os limites de segurança dos contêineres lxc?

    
por iCode 07.09.2013 / 02:35

1 resposta

8

Como eu tenho visto sobre LXC Ele armazena informações de contêiner e (com a loja de armazenamento padrão) root sistemas de arquivos em / var / lib / lxc. Os modelos de criação de contêiner também tendem a armazenar informações de distribuição em cache em / var / cache / lxc.

Então, em geral, o acesso ao sistema de arquivos raiz só é permitido para o administrador, a menos que haja um uso incorreto ou perfis incorretos de usuários ao criá-los.

Mas os desenvolvedores do Ubuntu já podem ter chegado a este ponto e forneceram uma solução segura com a ajuda do AppArmor.

O LXC é fornecido com um perfil Apparmor destinado a proteger o host de uso incorreto de privilégios dentro do contêiner. Por exemplo, o contêiner não poderá gravar em /proc/sysrq-trigger ou na maioria dos arquivos /sys .

O perfil usr.bin.lxc-start é inserido executando lxc-start. Esse perfil impede principalmente que o lxc-start monte novos sistemas de arquivos fora do sistema de arquivos raiz do contêiner. Antes de executar o init do contêiner, o LXC solicita uma mudança para o perfil do contêiner. Por padrão, esse perfil é a política lxc-container-default que é definida em /etc/apparmor.d/lxc/lxc-default . Esse perfil impede que o contêiner acesse muitos caminhos perigosos e monte a maioria dos sistemas de arquivos.

Se você achar que o lxc-start está falhando devido a um acesso legítimo que está sendo negado pela política do Apparmor, é possível desativar o perfil lxc-start:

sudo apparmor_parser -R /etc/apparmor.d/usr.bin.lxc-start
sudo ln -s /etc/apparmor.d/usr.bin.lxc-start /etc/apparmor.d/disabled/

Isso fará com que o lxc-start seja executado sem confinamento, mas continuará confinando o próprio container. Se você também deseja desabilitar o confinamento do contêiner, além de desabilitar o perfil usr.bin.lxc-start , você deve adicionar:

lxc.aa_profile = unconfined

ao arquivo de configuração do contêiner. Se você deseja executar um contêiner em um perfil personalizado, poderá criar um novo perfil em /etc/apparmor.d/lxc/ . Seu nome deve começar com lxc- para que lxc-start tenha permissão para fazer a transição para esse perfil. Depois de criar a política, carregue-a usando:

sudo apparmor_parser -r /etc/apparmor.d/lxc-containers

O perfil será carregado automaticamente após a reinicialização, porque é originado pelo arquivo /etc/apparmor.d/lxc-containers . Finalmente, para fazer o contêiner CN usar esse novo lxc-CN-profile , inclua a seguinte linha em seu arquivo de configuração:

lxc.aa_profile = lxc-CN-profile

lxc-execute não entra em um perfil do Apparmor, mas o container que ele gera ficará confinado.

    
por Ten-Coin 07.09.2013 / 03:00

Tags