Waldemar Schneider

IT-Systemintegrator, der sowohl die Produktionshalle als auch den Serverraum versteht.

© 2026 Waldemar Schneider

Portfolio
Pentest Lab: Isolierte Trainingsumgebung auf Proxmox

Pentest Lab: Isolierte Trainingsumgebung auf Proxmox

2026-06-08Cyber SecurityAbgeschlossen & verifiziert
ProxmoxUbuntuMetasploitableNetzwerksegmentierungOPNsensePenetration Testing

Projektübersicht

Im Rahmen des TCM Security "Practical Security Fundamentals" Kurses wurde eine vollständige Pentest-Trainingsumgebung auf Proxmox VE aufgebaut. Das Lab besteht aus einem Angreifer-System (Ubuntu Server, minimized) und einer absichtlich verwundbaren Ziel-VM (Metasploitable 3), die in einem eigenen, vom produktiven Heimnetz vollständig isolierten Netzwerksegment betrieben wird — eine klassische Netzwerksegmentierung auf Firewall-Ebene.

1. Situation (Ausgangslage)

Für den Penetration-Testing-Kurs wurde eine realistische Übungsumgebung benötigt. Der Kursanbieter stellte eine vorkonfigurierte Ziel-Applikation zur Verfügung, die jedoch eine kostenpflichtige Subscription voraussetzte. Gleichzeitig sollte das Üben von Angriffstechniken (Port-Scanning, Brute-Force, Exploitation) nicht auf dem produktiven Heimnetz stattfinden, da dort echte Systeme und Dienste laufen. Eine isolierte, kontrollierte Umgebung war notwendig, in der Fehler ohne Konsequenzen passieren dürfen.

2. Task (Zielsetzung)

  • Angreifer-System: Eine dedizierte Linux-VM als Arbeitsumgebung einrichten, auf der Pentest-Tools gezielt installiert werden können.
  • Ziel-System: Eine absichtlich verwundbare VM mit realistischen Diensten (SSH, HTTP, FTP, SMB, Datenbanken, Webanwendungen) bereitstellen.
  • Isolation: Das Lab-Netzwerk vollständig vom produktiven Heimnetz trennen, sodass die Ziel-VM weder das LAN noch das Internet erreichen kann.
  • Trainingsgrundlage: Eine stabile Umgebung für Penetration Testing schaffen, auf der alle Phasen eines Penetration Tests (Reconnaissance, Scanning, Exploitation) langfristig trainiert werden können.

3. Action (Umsetzung)

A. Angreifer-System (PSEC) aufsetzen

Als Angreifer-System wurde eine KVM-VM mit Ubuntu 26.04 LTS Server in der minimierten Variante eingerichtet. Die gesamte Einrichtung erfolgte ausschliesslich per SSH und CLI auf dem Proxmox-Host, ohne Nutzung der Web-GUI. Bewusst wurde die minimierte Ubuntu-Variante gewählt, bei der viele Standard-Tools fehlen und manuell installiert werden müssen. Das zwingt dazu, jedes Tool vor der Nutzung zu verstehen und gezielt zu installieren, statt auf eine fertige Kali-Linux-Umgebung zurückzugreifen.

Die VM wurde mit 2 vCores und 2 GB RAM auf dem LAN-Segment konfiguriert, eine statische IP vergeben und SSH für den Autostart aktiviert. Als Fallback-Mechanismus wurde ein ZFS-Snapshot nach der Erstinstallation angelegt.

B. Isoliertes Lab-Netzwerksegment einrichten

Auf dem Proxmox-Host existierte bereits eine virtuelle Netzwerkbrücke ohne physische NIC. Diese wurde als Lab-Segment genutzt: kein Traffic kann das Segment physisch verlassen oder betreten ohne eine explizite OPNsense-Firewall-Regel.

OPNsense wurde um eine vierte Netzwerkkarte erweitert (per qm set) und nach einem Neustart das neue Interface als HACKLAB mit statischer IP konfiguriert. Bewusst wurde auf einen DHCP-Server im Lab-Segment verzichtet. Das hat zwei Vorteile: die Ziel-VM ist immer unter derselben Adresse erreichbar, und es entspricht realistischeren Pentest-Bedingungen, wo Ziel-IPs vorab bekannt sind oder durch Scanning ermittelt werden.

C. Metasploitable 3 importieren

Metasploitable 3 ist die offizielle Trainings-VM von Rapid7 und bietet eine grosse Bandbreite an verwundbaren Diensten und Webanwendungen. Die VM liegt als VirtualBox-Image (OVF + VMDK) vor. Da auf dem Proxmox-Host kein VirtualBox installiert ist, wurde Vagrant ausschliesslich als Download-Mechanismus genutzt, um die Box herunterzuladen. Das eigentliche Image wurde danach per qm importdisk direkt in den ZFS-Pool importiert, Vagrant anschliessend vollständig deinstalliert.

Da Ubuntu 14.04 (das Betriebssystem von Metasploitable 3) keine VirtIO-Netzwerktreiber mitbringt, wurde als Netzwerkkarte ein emulierter Intel-NIC (e1000) konfiguriert. Als Controller-Typ wurde SATA gewählt, weil das Original-VirtualBox-Image einen SATA-Controller erwartet. Eine statische IP im Lab-Segment wurde direkt in /etc/network/interfaces konfiguriert.

D. Firewall-Isolation konfigurieren

In OPNsense wurde auf dem HACKLAB-Interface eine einzige Pass-Regel angelegt: ausschliesslich das Angreifer-System darf Verbindungen ins Lab-Segment aufbauen. Alle anderen Quellen sind durch den impliziten Default Deny von OPNsense geblockt. Eine explizite Block-All-Regel ist nicht notwendig, weil OPNsense jedes Interface standardmässig vollständig sperrt, bis Regeln explizit Verkehr erlauben.

4. Result (Ergebnis & Verifikation)

Die Umgebung wurde mit drei Tests verifiziert:

Vom Angreifer-System aus war die Ziel-VM per Ping erreichbar (0% Paketverlust). Der TTL-Wert der Antwortpakete betrug 63 statt 64, was exakt einen Routing-Hop bestätigt. Dieser Hop ist OPNsense als Firewall und Router zwischen den beiden Segmenten. Das belegt, dass das Routing korrekt konfiguriert ist und der Traffic den vorgesehenen Weg nimmt.

Von der Ziel-VM aus waren weder das LAN-Gateway noch das Internet erreichbar (100% Paketverlust in beiden Richtungen). Metasploitable 3 ist vollständig vom produktiven Netz isoliert.

Das Lab ist bereit für den Einsatz folgender Trainings-Szenarien: Port-Scanning mit nmap, Brute-Force-Angriffe mit Hydra, Exploitation mit dem Metasploit Framework sowie Web-Application-Testing mit Burp Suite gegen DVWA.


Lessons Learned

  • Semikolons in Bash-Parametern: Der Boot-Order-Parameter von qm set (order=scsi0;ide2) muss in Anführungszeichen stehen. Ohne Anführungszeichen interpretiert Bash das Semikolon als Befehlstrenner, der zweite Teil wird als eigener Befehl ausgeführt und die Konfiguration ist falsch gesetzt, ohne dass eine Fehlermeldung erscheint.
  • Controller-Typ beim Import: VirtualBox-Images erwarten einen SATA-Controller. Ein Wechsel auf SCSI oder VirtIO-SCSI verhindert den Boot. Der Controller-Typ muss zum Quell-Format passen, nicht zur Proxmox-Konvention.
  • Ubuntu 14.04 und VirtIO: Ältere Linux-Versionen haben keine eingebauten VirtIO-Treiber. Bei solchen Images immer e1000 (emulierten NIC) verwenden statt virtio.
  • Minimized als Lernmethode: Das bewusste Weglassen von Standard-Tools (Ubuntu minimized) ist keine Einschränkung sondern ein Lernprinzip. Wer ping manuell installieren muss, versteht, dass es ein Werkzeug mit einem Zweck ist, kein selbstverständlicher Systembestandteil.
  • TTL als Diagnose-Werkzeug: Der TTL-Wert in Ping-Antworten verrät wie viele Router ein Paket passiert hat. TTL 63 statt 64 bedeutet genau ein Hop. Das bestätigt die korrekte Netzwerkarchitektur ohne zusätzliche Tools.