Laborserver mit vielen Benutzern: Was ist zu beachten?

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Laborserver mit vielen Benutzern: Was ist zu beachten?

Beitrag von paedubucher » 17.10.2022 21:41:23

Für meinen bisherigen cloudless Cloud-Unterricht möchte ich ein Deployment auf einer einfachen VM (IaaS) zur Verfügung stellen. Im Unterricht verwende ich zwar Ubuntu, auf dem Server sollte es aber mit Debian auch gehen. Das ist mein grober Plan für die exakt 100 Schüler:
  • Auf dem Server installiere ich Debianredis und Minio (S3-kompatibler Storage). Alle Schüler erhalten eine eigene Redis-DB und einen eigenen S3-Bucket.
  • Jeder Schüler gibt mir seinen öffentlichen SSH-Schlüssel an (per Pull Request in eine YAML-Datei). Ich erstelle dann die Benutzer und hinterlege den SSH-Schlüssel.
  • Auf dem Server können die Schüler dann ein kleines Monitoringsystem bestehend aus drei Komponenten laufen lassen: Konfiguration mit Redis als Speicherort (welche URLs wie gemonitored werden sollen), Monitoring (periodisches Prüfen der URLs) und Alerting (steuert einen Slack-Webhook an). Diese Services lassen sie dann einfach im Vordergrund laufen, d.h. nur während des Unterrichts. Die Logdaten vom Monitoring sollen dann in den S3-Bucket geschrieben werden (z.B. beim Beenden des Prozesses mit SIGTERM).
Für die Konfiguration möchte ich es einmal mit Ansible versuchen.

Viele Sachen muss ich noch klären, z.B. wie ich das mit dem Release der Software machen will. (Code via Git ziehen und lokal bauen, oder Artefakte vom Git-Server herunterladen.) Das bringe ich schon noch hin.

Bei anderen Sachen habe ich überhaupt keine Erfahrung. Hier wäre ich um einige Vorschläge von erfahrenen Sysadmins froh:
  • Wie kann ich die Speicheressourcen pro User sinnvollerweise einschränken? Nimmt man dafür Debianquota, oder gibt es da noch andere Alternativen?
  • Für CPU- und Memory gibt es cgroups/slices. Hat jemand Erfahrungen damit gesammelt? Oder soll man das einfach mal laufen lassen und auf die Fairness des Schedulers vertrauen?
  • Jeder Benutzer soll eine fixe Port-Range erhalten, z.B. von 17100-17199, die er binden kann. Nimmt man dafür iptables, oder wie konfiguriert man sowas?
  • Was gibt es sonst noch sicherheitstechnisch so zu beachten? Natürlich sollen die Benutzer kein sudo können. Debianfail2ban habe ich auch immer im Einsatz, obwohl das von einer Schule aus problematisch sein könnte. (Ein fehlerhaft authentifizierter Benutzer blockeirt die ganzes Klasse.)
Vielen Dank für eure Hinweise! :THX:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten