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.