Por que usar lxc em vez de chroot?

10

Um servidor ubuntu hospeda 3 aplicativos, todos em domínios separados.
Cada aplicativo tem seus próprios desenvolvedores.
Os desenvolvedores de aplicativos pertencem ao grupo "sftp" do linux.
chrootpermite acesso por sftp de senha a cada desenvolvedor de aplicativos.

/home/app1/prod
/home/app2/prod
/home/app3/prod

No sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

Nossa preocupação é uma vulnerabilidade de programação em um aplicativo, causando problemas nos outros 2 aplicativos.

Devemos usar o contêiner lxc em vez do chroot? Por quê? A alteração nos contêineres lxc será transparente para os desenvolvedores de aplicativos?

csi
fonte
2
A única coisa que chrootfaz é alterar o diretório raiz de um processo. Não oferece isolamento ou qualquer outra coisa.
Zoredache

Respostas:

14

O Linux Containers (LXC) é um método de virtualização no nível do sistema operacional para executar várias instalações isoladas do servidor (contêineres) em um único host de controle. O LXC não fornece uma máquina virtual, mas sim um ambiente virtual que possui seu próprio processo e espaço de rede. É semelhante a um chroot, mas oferece muito mais isolamento.

Os contêineres Linux têm vários recursos / vantagens:

Vantagens:

Melhor isolamento em comparação com um chroot (prisão de chroot). Baixa sobrecarga. O LXC usa recursos mínimos em termos de RAM e espaço no disco rígido sem a sobrecarga de instalar um sistema operacional convidado em uma máquina virtual (VMWare / VirtualBox / KVM).

Aplicativos e serviços (servidores) executados na velocidade nativa.

Há suporte para contêineres Linux na libvirt.

Os contêineres Linux funcionam bem com btrfs.

Mas há também uma desvantagem:

Contêineres Linux executam processos Linux em um kernel Linux. Isso significa que você pode executar o Linux (contêiner Fedora em um host Ubuntu), mas não outros sistemas operacionais (não BSD / OSX / Windows).

Não há interfaces gráficas (GUI) para configurar ou gerenciar os contêineres.

Há uma escassez de documentação sobre como instalar e configurar um contêiner. A configuração de um contêiner requer um conhecimento e habilidade técnicos modestos (e uma grande dose de paciência).

Abhishek Anand Amralkar
fonte
1
qual kernel é usado dentro do LXC? (o do anfitrião ou o convidado?) #
31 Francesco Francesco
4
Muitas das vantagens e desvantagens comparam o LXC à virtualização completa, o que é irrelevante para a pergunta, e talvez até enganosa.
Roger Dueck
@Francesco, com LXC (e contêineres Linux em geral), existe apenas um kernel - o kernel host. Algumas exceções a isso são, por exemplo, o Docker em execução no MacOS ou Windows, pois usam um kernel do Linux em execução em uma máquina virtual; no entanto, todos os contêineres Linux nessas plataformas ainda estão usando o mesmo kernel.
raiva