Conteneurs LXC comme environnement sandbox

9

Je démarre actuellement un projet d'évaluation de programmes non approuvés (affectations d'étudiants) dans un environnement sandbox sécurisé. L'idée principale est de créer une application web pour les emballages GlassFish et Java autour de lxc-utils pour gérer les conteneurs LXC. Il aura une file d'attente de programmes en attente et un wrapper Java maintiendra un nombre fixe (pool) de conteneurs LXC, attribuant à chaque programme un conteneur (inutilisé).

Chaque conteneur doit être sécurisé avec SELinux pour protéger le système hôte.

Ma question est: est-ce une bonne idée de créer un tel mécanisme pour un environnement sandbox, ou existe-t-il une meilleure solution appropriée à ce problème? Il doit être léger et protégé contre la créativité des étudiants.

eXPi
la source

Réponses:

6

Vous n'avez pas écrit pourquoi vous choisissez LXC car ce n'est pas la solution de virtualisation la plus sécurisée. Je suis un grand utilisateur de KVM / XEN et également de LXC et je peux dire une chose: en matière de sécurité, je n'utilise jamais de conteneurs Linux (que ce soit LXC / OpenVZ / VServer). C'est simplement plus facile (et plus fiable) avec KVM / XEN.

S'il s'agit de performances ou d'exigences matérielles, alors ok - vous pouvez essayer avec LXC, mais il y a quelques règles que vous devez suivre:

  • libvirt garantit un confinement strict des conteneurs lors de l'utilisation de SELinux (grâce à LXC_driver) - je ne sais pas si c'est uniquement le cas RHEL / Centos / Fedora (je n'utilise pas beaucoup Ubuntu / Debian) https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html - donc aller avec SELinux est une bonne idée (à mon avis c'est "must have" dans de telles circonstances)
  • Définissez des règles strictes de groupes de contrôle afin que vos invités ne gèlent pas votre hôte ou n'affectent pas les autres conteneurs
  • Je préfère opter pour des conteneurs basés sur LVM - c'est toujours une couche de plus de «sécurité»
  • Pensez à la solution et à l'architecture réseau. Ces conteneurs doivent-ils communiquer entre eux?

Commencez par lire ceci - c'est assez vieux, mais quand même - il y a beaucoup de connaissances là-bas. Et aussi - rencontrer des espaces de noms d'utilisateurs

Et après tout cela, détrompez-vous - avez-vous vraiment autant de temps pour jouer avec la sécurité LXC? KVM est tellement plus simple ...

Maciej Lasyk
la source
Tout d'abord, merci pour la réponse. J'ai choisi LXC parce que j'ai besoin de quelque chose de léger et il fonctionnera à l'intérieur de KVM. Il est possible d'exécuter KVM à l'intérieur de KVM?
eXPi
1

Pour exécuter des programmes non fiables, les espaces de noms Linux restent la meilleure solution. Il est plus facile à configurer que KVM et nécessite moins de ressources. Vous pouvez essayer LXC, mais LXC a été conçu comme un sandbox plus générique pour exécuter des images de distribution Linux complètes. Deux autres sandbox d'espaces de noms Linux viennent à l'esprit:

  • Sandbox Google Chrome , distribué actuellement avec Google Chrome / Chromium
  • Firejail , un sandbox de sécurité conçu pour exécuter Mozilla Firerfox et tout autre programme GUI.
netblue
la source