Beispiel-Labs: fertige Container-Labs und VM-Labs für den Unterricht

Jedes Lab hier läuft im Browser und gibt jeder lernenden Person eine private Kopie mit einem Terminal daneben. Es muss also nichts installiert werden, und auf dem eigenen Computer der Lernenden kann nichts kaputtgehen. Jedes Lab hat in diesem Handbuch eine eigene Seite mit Anleitung, Vorschlägen, was die Lernenden abgeben sollen, und dem Quellcode auf GitHub, den Sie forken und ändern können.

Manche sind Container-Labs, geschrieben als Compose-Datei, andere sind VM-Labs, bei denen jede lernende Person eine eigene Ubuntu-Maschine erhält. Starten Sie ein beliebiges Lab zum Ausprobieren, oder kopieren Sie es in ein Modul und stellen Sie es als Aufgabe.

Datenbanken und APIs

PostgreSQL und PostgREST: eine Postgres-Datenbank und eine Web-API, die jede Tabelle in REST-Endpunkte verwandelt, mit psql und curl im Terminal. Das Lab vermittelt SQL, REST, Volumes und Backups.

MySQL und phpMyAdmin: MySQL mit einer Beispieldatenbank für einen Onlineshop aus acht Tabellen und einigen Hundert Zeilen sowie phpMyAdmin, bereits angemeldet, mit dreizehn SQL-Übungen vom ersten SELECT bis zu Unterabfragen und Transaktionen.

Versionsverwaltung

Git und Gitea: ein eigener Git-Server für jede lernende Person, mit einem Repository, das sich vom Terminal aus klonen lässt und in das committet und gepusht wird. Anschließend finden die Lernenden ihre Arbeit in einer Weboberfläche wie der von GitHub, ganz ohne GitHub-Konto.

Sicherheit von Webanwendungen

OWASP Juice Shop, DVWA und WebGoat: drei absichtlich verwundbare Webanwendungen, jeweils in der privaten Kopie der lernenden Person. Die Lernenden greifen die Anwendung an, erklären die Schwachstelle und geben Nachweise ab. Die Übersichtsseite „Sicherheits-Labs“ behandelt die Regel zum Geltungsbereich und zeigt, wo welches Lab in einen Kurs passt.

OWASP Mutillidae II ergänzt eine zweite absichtlich verwundbare PHP-Anwendung mit Datenbank und Verzeichnisdienst. OWASP WrongSecrets vermittelt den Umgang mit Geheimnissen, indem es falsche Geheimnisse in Code und Konfiguration versteckt, die die Lernenden finden sollen. „SQL-Injection: finden und beheben“ gibt den Lernenden eine kleine, schwache Anwendung von uns, die sie zuerst ausnutzen und dann reparieren.

DevOps und Webserver

Einen Webserver härten: eine nginx-Website mit schwacher Konfiguration, die die Lernenden im Terminal finden und beheben, mit einer Prüfung, die PASS oder FAIL meldet. Docker-Grundlagen: ein kleiner Stack mit einem defekten Dienst. Die Lernenden lesen Logs, führen einen Befehl in einem Container aus, beheben den Fehler und starten den Dienst neu. Observability: Prometheus und Grafana überwachen einen kleinen Webserver, dazu schreiben die Lernenden eine Alarmregel.

Programmieren mit KI

KI-Coding-Agent: opencode, ein quelloffener Coding-Agent, neben einem kleinen Programm mit einem Fehler. Die Lernenden stellen Fragen, lesen jede Änderung und testen sie. Selbst installieren: dasselbe Lab ohne vorinstallierten Agenten. Die Lernenden installieren den Agenten und geben ihm seine Konfiguration. Das Modell des Agenten gehört zur Plattform und läuft in London.

Linux-Administration und Security Operations

Linux-Administration, Incident Response und Ansible sind VM-Labs: Die lernende Person erhält eine eigene Ubuntu-Maschine und eine README. Die Linux-Administration umfasst vier kleine Aufgaben: Benutzer, einen gemeinsamen Ordner, einen cron-Eintrag und eine Service-Datei. Incident Response stellt Logs einer kompromittierten Maschine zur Untersuchung bereit, und bei Ansible vervollständigt die lernende Person ein Playbook, das die Maschine konfiguriert. Jedes Lab hat eine Prüfung, die die gespeicherte Maschine bewertet.

Computernetzwerke

Statisches Routing, OSPF und BGP: drei VM-Labs, in denen jeder Router und jeder Host eines kleinen Netzwerks innerhalb der einen VM der lernenden Person aufgebaut wird. Die Router laufen mit FRRouting, und eine Prüfung bewertet das Lab für Sie.

NAT-Gateway, DHCP und DNS, VLANs und WireGuard gehen auf die gleiche Weise weiter in die Tiefe: ein NAT-Gateway mit Masquerading und einer Portweiterleitung, ein DHCP- und DNS-Server mit dnsmasq, ein Switch und ein „Router on a Stick“ für VLANs sowie ein WireGuard-Tunnel zwischen zwei Standorten.

Eine Grundlagenlektion für jedes Lab

In jedes Lab ist eine kleine Lektion eingearbeitet. Die ersten sechs Container-Labs haben zwei: Git Basics und Git Basics 2, SQL Basics und SQL Basics 2, API Basics und API Basics 2, Juice Shop Basics und Juice Shop Basics 2, DVWA Basics und DVWA Basics 2, WebGoat Basics und WebGoat Basics 2. Die übrigen haben je eine: Static Routing Basics, OSPF Basics, BGP Basics, Mutillidae Basics, WrongSecrets Basics, SQL Injection Fix Basics, Web Server Hardening Basics, Docker Basics, Observability Basics, Linux Administration Basics, Everyday Linux 1: Move and make, Everyday Linux 2: Permissions and removing, Everyday Linux 3: Logs and processes, Everyday Linux 4: Archives, disk and the web, Everyday Linux 5: Users and other machines, Compilers Basics, Computer Architecture Basics, Privilege Escalation Basics, Incident Response Basics, Ansible Basics, Hadoop Basics, Spark Basics, Kafka Basics, Valkey Basics, JupyterLab Basics, NAT Basics, DHCP and DNS Basics, VLAN Basics, WireGuard Basics, AI Coding Agent Basics und AI Coding Agent Basics 2. Eine in ein Lab eingearbeitete Lektion hat Schritte in Worten und eine Schaltfläche „Ausführen“, die den Befehl in das eigene Terminal der lernenden Person tippt, in einem Container oder in einer Ubuntu-VM. So sehen Lehrkräfte, was eine Lektion ist und was ein Lab kann. Die Lektionen sind bewusst kurz.

Sie sind überall verfügbar: Ein kostenloses persönliches Konto erhält alle im Modul „Basics“, das auf der Startseite liegt. Jede Einrichtung kann sie aus dem Ordner „Basics“ der Bibliothek in ein eigenes Modul kopieren, und eine neue Einrichtung startet mit ihnen in ihren Beispielmodulen: Basics (Sample), Database (Sample), Lab Basics (Sample), Networking Basics (Sample), Security Labs (Sample), DevOps Labs (Sample) und Linux Labs (Sample).

Die Lab-Leiste am Anfang einer in ein Lab eingearbeiteten Lektion, unter dem Titel der Lektion, mit der Schaltfläche „Das Lab starten“ und den ersten Schritten der Lektion darunter
Eine in ein Lab eingearbeitete Lektion hat die Lab-Leiste über ihren Schritten: Starten Sie das Lab einmal, dann tippt jede Schaltfläche „Ausführen“ in dessen Terminal.

Alle im Browser ausführen

Container-Labs starten auf der Container-Seite: das Git-Lab und das SQL-Lab ohne Konto, alle anderen mit einem kostenlosen Konto, das jeden Monat genug kostenloses Guthaben mitbringt, um die meisten Lektionen zu bearbeiten. VM-Labs werden einem Modul als Lab-Aufgabe hinzugefügt und starten vom Beispiel auf der Seite des Labs.

  1. Die Container-Seite öffnen. Öffnen Sie in der Leiste „Entwickeln“ und wählen Sie „Einen Container ausführen“. Die Seite steht jedem offen, und das Git-Lab und das SQL-Lab starten ohne Konto. Alle anderen Labs brauchen ein kostenloses Konto: Erstellen Sie eines, melden Sie sich an und klicken Sie dann auf „Starten“.
  2. Bei einem Beispiel auf „Starten“ klicken. Die Karte „Beispiel-Labs“ listet jedes Container-Lab auf. „Starten“ führt eines mit einem Klick aus, und „Zuerst die Datei bearbeiten“ lässt Sie es vor dem Start ändern.
  3. Eines als Aufgabe stellen. Kopieren Sie ein Lab als Container-Lab oder Ubuntu-VM-Lab in Ihr Modul, veröffentlichen Sie es, probieren Sie Ihre eigene Kopie aus und weisen Sie es wie jede Aufgabe zu.
Der Bereich „Praktische Labs“ der Seite mit den kostenlosen Ressourcen: eine Themenüberschrift mit einer Karte für jedes Websicherheits-Lab, jede Karte nennt ihre kostenlosen Lektionen und verlinkt auf ihre Handbuchseite und ihren Code
Jedes Lab ist auf der Seite mit den kostenlosen Ressourcen nach Thema aufgelistet, mit den kostenlosen Lektionen, die darin eingearbeitet sind.

Der Code ist öffentlich

Jedes Lab liegt in einem öffentlichen Repository unter mitsurutech auf GitHub, mit einer README, die die Lektion enthält. Die Compose-Dateien und Lab-Definitionen stehen unter der MIT-Lizenz: Kopieren Sie sie, ändern Sie sie, unterrichten Sie damit. Die enthaltenen Anwendungen, Juice Shop, DVWA, WebGoat und die anderen, behalten ihre eigenen Lizenzen und werden aus den Images ihrer eigenen Projekte bezogen, niemals von uns weiterverbreitet.

Häufige Fragen

Müssen die Lernenden etwas installieren?
Nein. Jedes Lab läuft auf unseren Maschinen und öffnet sich im Browser, mit einem Terminal daneben. Auf dem Computer der Lernenden wird nichts installiert.
Kann ich ein Lab ändern oder ein eigenes schreiben?
Ja. Erstellen Sie einen Fork des Repositorys und richten Sie ein Lab auf Ihren Fork, oder kopieren Sie die Datei in ein Lab, das auf der Seite geschrieben wird. Die Anleitung zu Container-Labs sagt, was eine Compose-Datei enthalten darf.
Gibt es für jedes Lab eine Lektion?
Ja: In jedes Lab ist eine kurze Grundlagenlektion eingearbeitet, und die ersten sechs Container-Labs haben eine zweite, kostenlos für jedes persönliche Konto und jede Einrichtung. In einem VM-Lab tippt die Schaltfläche „Ausführen“ in das Terminal der Ubuntu-VM.
Bewerten sich die Labs selbst?
Die meisten VM-Labs schon: Jedes hat ein Prüfskript, das Sie auf der gespeicherten Maschine einer lernenden Person ausführen. Eine Ausnahme ist das Lab zur Rechteausweitung unter Linux, weil eine lernende Person auf dieser Maschine jeden Nachweis fälschen könnte. Dort lesen Sie eine schriftliche Abgabe. Die Container-Labs bewerten Sie selbst anhand dessen, was die Lernenden abgeben. Einige, etwa das Lab zum Härten eines Webservers, haben eine Prüfung, die die Lernenden selbst ausführen.
Kann ich sie außerhalb der Plattform verwenden?
Die Container-Labs laufen mit docker compose auch auf Ihrem eigenen Rechner, und jede README erklärt, wie. Die VM-Labs sind Definitionen für die VM-Labs der Plattform.