Como já vi no LXC, ele armazena informações de contêiner e (com o armazenamento de backup padrão) sistemas de arquivos raiz 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.
Portanto, geralmente o acesso ao sistema de arquivos raiz só é permitido ao administrador, a menos que haja um uso indevido ou perfis de usuário de configuração incorretos ao criá-los.
Mas os desenvolvedores do Ubuntu já podem ter chegado a esse ponto e forneceram uma solução segura com a ajuda do AppArmor.
O LXC é enviado com um perfil Apparmor destinado a proteger o host contra uso indevido acidental de privilégios dentro do contêiner. Por exemplo, o contêiner não poderá gravar /proc/sysrq-trigger
na maioria dos /sys
arquivos.
O perfil usr.bin.lxc-start é inserido executando lxc-start. Esse perfil evita 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 opção para o perfil do contêiner. Por padrão, esse perfil é a política lxc-container-default 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 por sua política do Apparmor, você pode desativar o perfil do lxc-start fazendo o seguinte:
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 limites, mas continuará confinando o próprio contêiner. Se você também deseja desativar o confinamento do contêiner, além de desativar o usr.bin.lxc-start
perfil, você deve adicionar:
lxc.aa_profile = unconfined
para o arquivo de configuração do contêiner. Se você deseja executar um contêiner em um perfil personalizado, é possível criar um novo perfil em /etc/apparmor.d/lxc/
. Seu nome deve começar com lxc- para que o lxc-start possa fazer a transição para esse perfil. Após criar a política, carregue-a usando:
sudo apparmor_parser -r /etc/apparmor.d/lxc-containers
O perfil será carregado automaticamente após uma reinicialização, porque é originado pelo arquivo /etc/apparmor.d/lxc-containers
. Por fim, para fazer com que o container CN use esse novo lxc-CN-profile
, adicione a seguinte linha ao seu arquivo de configuração:
lxc.aa_profile = lxc-CN-profile
lxc-execute
não entra no perfil do Apparmor, mas o contêiner que gera será confinado.