3 votes

Sécurisation approximative de Linux pour permettre aux étudiants d'apprendre.

À l'école, nous avons un ordinateur qui est réservé aux étudiants pour se connecter et effectuer des activités liées à l'informatique, telles que la compilation de programmes C et C++ pour les cours. Il tournait sous une saveur obscure de Linux installée de nombreuses années avant que je ne le reprenne. J'ai récemment installé Ubuntu Server pour le rendre plus maintenable et sécurisé. Actuellement, nous créons des comptes utilisateur au besoin. Les étudiants se connectent en SSH pour compléter leurs devoirs de classe et chaque utilisateur stocke son travail et ses projets dans son dossier personnel. Les instructeurs demandent aux étudiants de laisser leur travail dans un dossier spécifique pour le soumettre, ou quelque chose du genre.

Mon inquiétude concerne un utilisateur trop curieux qui explore ou quelqu'un qui endommage délibérément quelque chose, empêchant ainsi les autres de travailler et me faisant passer pour un mauvais administrateur système (je suis encore étudiant et à leur merci).

Les étudiants sont actuellement dans leur propre groupe et ne peuvent voir que leur propre dossier personnel / ne peuvent pas parcourir les dossiers des autres étudiants. Le personnel enseignant dispose de comptes plus avancés mais pas d'administrateurs. Je suis réticent à commencer à modifier les autorisations des dossiers système importants de peur de tout casser (comme je l'ai déjà fait).

Quelles mesures de sécurité puis-je prendre pour garantir le bon fonctionnement du système tout en le sécurisant afin que tout le monde puisse en profiter et l'utiliser ?

5voto

jjnguy Points 62123

J'ai mené un projet à peu près similaire pendant mes études universitaires (nous avions plus d'un serveur et nous n'étions pas vraiment responsables envers qui que ce soit sauf les services informatiques, mais nous étions des linux boxes pour les étudiants). En termes de sécurité, il s'agit surtout de rester absolument à jour avec les correctifs. Si nécessaire, désactivez la connexion, s'il y a des vulnérabilités locales du système, et qu'aucun correctif n'est encore disponible. Vous voudrez également mettre en place des limites d'utilisation des ressources. La sévérité de celles-ci dépend probablement de la puissance de vos machines, mais notre machine la moins puissante utilisait ces paramètres :

-

t: temps processeur (secondes)         18000
-f: taille de fichier (blocs)         307200
-d: taille du segment de données (kioctets)     51200
-s: taille de la pile (kioctets)        8192
-c: taille du fichier core (blocs)    0
-m: taille de l'ensemble résident (kioctets) 51200
-u: processus                  75
-n: descripteurs de fichiers           300
-l: taille bloquée en mémoire (kb) 175000
-v: espace d'adressage (kb)         400000
-x: verrous de fichiers                 illimité
-i: signaux en attente            61440
-q: octets dans les files de messages POSIX  819200
-e: max nice                   0
-r: max priorité rt            0

En plus de cela, vous voudrez définir des quotas, probablement pour les comptes faculté et étudiant. Leur taille dépend de votre disque, mais nous avons actuellement fixé des quotas de 1 Go par défaut. Je crois que mes successeurs qui s'occupent des machines sont généralement assez heureux d'augmenter ces quotas pour les personnes qui ont une raison valable.

En plus de cela, je mendierais/emprunterais/volerais une deuxième machine si possible pour sauvegarder vos données de configuration/utilisateur. Idéalement, vous devriez sauvegarder tout le contenu de /etc/, une liste de vos packages installés, et l'ensemble de vos données utilisateurs (si vous avez des packages que vous avez réalisés vous-même, vous devriez sauvegarder les fichiers .deb complets). Si vous avez de l'espace, je sauvegarderais également /var (sauf /var/tmp).

Les autorisations sur /root sont 755 par défaut. Vous voudrez les changer, car vous laisserez accidentellement des fichiers sensibles là-bas à un moment donné. De plus, wall et su (au moins) devraient avoir leurs autorisations modifiées pour que seuls root/group root puissent les utiliser (n'hésitez pas à changer le groupe root pour un autre groupe où vous êtes seul).

Enfin, je journaliserais tout sur un serveur distant, sans connexions d'utilisateurs (même si ce n'est pas une machine contrôlée par vous). J'installerais snoopy sur votre machine, pour disposer d'un journal d'audit en cas de violation.

Nos documents pour la plupart des fonctionnalités système se trouvent ici. La plupart d'entre eux ne s'appliquent probablement pas si vous n'exploitez qu'une seule machine, mais il peut être utile de parcourir certains éléments quand même.

3voto

ilitirit Points 4636

Il existe essentiellement deux façons de procéder à cela :

  1. Vous vous assurez qu'ils ne peuvent pas le casser.
  2. Vous vous assurez que vous pouvez le réparer beaucoup plus rapidement qu'ils ne peuvent le casser.

Pour la première option, vous pourriez envisager une distribution Linux récente dotée d'un ensemble très strict de règles SELinux. Étant donné que ces étudiants doivent apprendre, je m'attends à ce qu'ils rencontrent des problèmes (par exemple : vous n'êtes pas autorisé à écouter un port réseau) qui les empêchent de terminer leurs devoirs ou simplement de dépasser leur niveau de compétence actuel.

La deuxième option est en fait beaucoup plus robuste à réaliser.

  1. Installez quelque chose comme cobbler pour automatiser la réinstallation du système sur lequel ils travaillent.
  2. Apprenez aux étudiants à commettre leur code dans un référentiel subversion/git régulièrement (une compétence en programmation utile !!). Donnez à l'enseignant accès au référentiel des étudiants. Les étudiants peuvent simplement demander à l'enseignant de passer en revue une balise spécifique dans leur subversion personnel.
  3. Placez toutes les informations de connexion dans un LDAP et configurez votre serveur pour créer automatiquement le répertoire personnel de l'étudiant lorsqu'il se connecte.
  4. Réinstallez le serveur TOUS les soirs. C'est facile car vous avez automatisé tout le processus.

Effets secondaires :

  • Aucun logiciel malveillant ne vit plus de 24 heures.
  • Si le nombre d'étudiants augmente, vous pouvez simplement ajouter un deuxième/troisième système et l'installer de manière identique à 100%.
  • Tous les problèmes de configuration sont résolus une fois pour toutes et restent résolus après la réinstallation.
  • Les étudiants OUBLIERONT de commettre et perdront parfois leur travail.

1voto

psst Points 51

Tout d'abord, assurez-vous de configurer des sauvegardes et d'apprendre à restaurer le système.

Cela dit, tant que vous appliquez les mises à jour de sécurité sans tarder (vous pouvez également jeter un œil à unattended-upgrades), vous devriez être en sécurité. (Cependant, si vous pouvez restreindre les connexions externes, par exemple en autorisant uniquement l'authentification basée sur des clés, vous réduirez encore davantage les risques).

Vous voudrez également des quotas et ulimit comme suggéré, ainsi que du monitoring (il est beaucoup plus probable que vous manquiez soudainement d'espace disque et que les gens soient mécontents à cause de cela plutôt que qu'une personne assez compétente pour obtenir un accès root le détruise).

Vous ne voulez pas commencer à manipuler les autorisations (sans savoir exactement ce que vous faites).

1voto

John Barrett Points 151

Que diriez-vous de mettre en place user mode linux avec un fichier de copie sur écriture dans le répertoire personnel de chaque étudiant? Ce bac à sable donnerait à chacun une totale liberté sur leur propre instance. Si quelque chose se casse, il suffit de supprimer le fichier COW et vous serez de retour au point de départ.

scp/sftp pourrait être utilisé pour télécharger les travaux soumis dans un référentiel central.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X