web-dev-qa-db-fra.com

Chroot est-il le bon choix pour mon cas d'utilisation?

Backstory:

Je travaille sur la configuration d'un serveur MineCraft et je veux permettre aux administrateurs d'avoir un accès ssh à la console du serveur MineCraft et aux fichiers de serveur mc appropriés, mais pas à l'ensemble du système. La console fournie par le serveur minecraft n'est disponible que pour l'utilisateur qui a lancé le processus. De plus, les administrateurs auront besoin d'un accès terminal à certains outils cli de base tels que wget, cp, mv, rm et un éditeur de texte.

Plan:

  • J'ai déjà configuré l'aspect ssh des choses, nécessitant des clés pré-partagées et ainsi de suite.
  • Configurez un environnement emprisonné dans lequel toutes les activités des utilisateurs seront contenues.
  • Configurez les comptes d'utilisateurs.
    - Le premier compte utilisateur sera l'utilisateur minecraft. L'utilisateur minecraft démarrera le serveur MC dans une session d'écran multi-utilisateur et permettra aux autres administrateurs de s'y attacher.
    - Les utilisateurs suivants devraient avoir leur propre répertoire/home pour une utilisation normale.
  • Configurez acl pour les fichiers appropriés pour permettre à chaque utilisateur de modifier les fichiers du serveur mc.

Personne ne fera de mises à jour du système, et personne n'installera de programme, donc je serai le seul utilisateur de Sudo.

Les problèmes:

Je ne veux pas que les utilisateurs de ssh aient accès à l'ensemble du système. Les utilisateurs devront toujours utiliser wget ou curl pour mettre à jour les fichiers du serveur mc. Je n'ai aucune expérience dans la mise en place d'un environnement chroot et j'ai trouvé plusieurs outils pour aider dans ce processus. Jailkit semble être le plus robuste, mais ce n'est pas dans les dépôts standard.

Les questions:

  1. Chroot est-il le bon outil pour ce cas d'utilisation, ou existe-t-il quelque chose de plus approprié pour le travail?
  2. Doit-il y avoir un environnement chroot pour chaque utilisateur ou un environnement chroot pour tous les utilisateurs?
  3. Le chroot doit-il être configuré à la main, ou dois-je utiliser l'un des outils disponibles?
  4. Comment les mises à jour système affecteront-elles un environnement chroot?
  5. Quel outil chroot est le plus convivial? Quel outil chroot est le plus robuste?
  6. Une VM serait-elle une meilleure solution dans l'ensemble?
3
Anthony

Je ne répondrai pas point par point car je ne connais pas toutes les réponses, mais je vais vous donner ces conseils:

  • Un chroot n'est pas terriblement difficile à sortir. A VM est un peu plus difficile.
  • A VM est beaucoup plus facile à configurer et à gérer car il s'agit d'un système d'exploitation complet.
  • Un chroot peut avoir une empreinte plus petite car ce n'est pas nécessairement un système d'exploitation complet.
  • Dans les deux cas, l'environnement invité ne sera pas mis à jour lorsque vous exécutez des mises à jour sur l'hôte. Vous devrez entrer le chroot ou VM et le mettre à jour manuellement.
  • A VM a une fonctionnalité qui peut être bonne ou mauvaise pour vous: vous devez généralement fournir une quantité fixe de mémoire pour cela. Minecraft peut être très gourmand en mémoire, donc vous pourriez manquer de VM. D'autre part, un VM serait un moyen facile de mettre une limite stricte sur les ressources qu'il peut utiliser.
  • Ni un VM ni un chroot ne placera de limites intrinsèques à ce que les utilisateurs peuvent faire sur le réseau. Seul un pare-feu peut le faire.
1
Alistair Buxton

L'utilisation d'une prison chroot est un faux sentiment de sécurité pour la plupart. Il garde les utilisateurs honnêtes honnêtes. Si vous ne faites pas confiance aux utilisateurs pour se connecter à la machine, vous devez leur donner une autre machine, une VM.

Pour la sécurité du réseau, attachez la machine Minecraft à une zone différente de votre pare-feu avec des règles très restrictives. Si Minecraft s'exécute sur la machine pare-feu, la seule solution sûre consiste à utiliser des machines virtuelles exécutées sur cette machine.

1
trognanders