Minha pergunta é sobre a segurança de um contêiner LXC.
Se eu estiver executando vários contêineres na minha caixa e conceder aos usuários um acesso ssh separado ao contêiner de propriedade, algum desses contêineres pode invadir os outros contêineres dessa caixa ou até a máquina host?
Onde estão as fronteiras de segurança dos contêineres lxc?
Respostas:
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:
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: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: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 novolxc-CN-profile
, adicione a seguinte linha ao seu arquivo de configuração:lxc-execute
não entra no perfil do Apparmor, mas o contêiner que gera será confinado.fonte
dmesg
pode ser chamado de qualquer contêiner (pelo menos na configuração padrão). Tenho medo de que não é o único risco de segurança ...