In meinem Labor läuft ein Proxmox-Cluster mit diversen laufenden LXC-Container. Diese haben den Vorteil, dass sie relativ wenig Ressourcen benötigen und trotzdem sehr flüssig laufen. Dies war mit ein Grund, die Installation von Kali Linux in einem LXC-Container zu realisieren, trotz den möglichen Nachteilen, welche durch die Installation in einem unprivilegierten Container auftreten können. Diese Instanz soll dazu dienen, weitere Testmöglichkeiten im OT/IoT-Labor zur Verfügung zu stellen.
Für die Installation wird eine Image benötigt, welches hier heruntergeladen werden kann – Index of /images/kali/current/amd64/default/



Anschliessend kann der Container auf dem Proxmox Node erstellt werden:

Unter der allgemeinen Konfiguration die ID des Container, den Hostnamen und das „root“-Passwort eingeben. Nesting sollte aktiviert sein, falls geplant ist, bespielsweise Docker einzusetzen, um weitere Container innerhalb von Kali Linux zu betreiben.

Danach kann das heruntergeladene Kali Template zur Installation des Container ausgewählt werden:

Danach kann die Disk-Grösse gewählt werden. Empfohlen sind minimal 20GB und konfiguriert werden 40GB, falls noch weitere Tools nachinstalliert werden sollen:

Danach kann die Anzahl der vCPU bestimmt werden. Im Minimum werden 2 vCPUs vorgeschlagen, welche für den Labor-Einsatz genügen sein sollten:

Anschliessend können die Memory-Einstellungen konfiguriert werden. Hier werden Minimal 2GB für den Hauptspeicher und 1GB für den SWAP-Bereich empfohlen. Für den Labor-Einsatz werden 4GB Memory und 2GB SWAP konfiguriert:

Die Netzwerk- und DNS-Einstellungen, gemäss der eigenen lokalen Umgebung entsprechend anpassen und konfigurieren:


Danach können die Einstellungen nochmals geprüft und bestätigt werden. Wenn der Punkt 2 mit „Startup der VM“ konfiguriert ist, wird der Container, nach der erfolgreichen Erstellung, gleich gestartet:

Danach kann die Konsole des Containers geöffnet und mit dem „root“-Benutzer angemeldet werden. Das Passwort wurde während der Installation gesetzt:

Nun kann das Update des Templates durchgeführt und die Installation von der Kali Linux Installation angestossen werden:
apt clean && apt update && apt full-upgrade -y
apt install -y kali-linux-default
Während der Installation werden noch diverse Einstellungen für die Kali Tools abgefragt, welche folgendermassen beantwortet werden können:






Fehlermeldungen während der Installation, können grundsätzlich ignoriert werden, da die Installation in einem unprivilegierten Container vorgenommen wird und teilweise die notwendigen Berechtigungen fehlen.
Die Darstellung der Shell wird noch auf das Kali Linux Erscheinungsbild angepasst:
chsh -s $(which zsh)
Abschliessend wird ein Neustart des Containers durchgeführt.
Danach wird eine grafische Benutzeroberfläche installiert. Hierzu ist der XFCE Desktop vorgesehen, da dieser sehr einfach gehalten und sparsam mit CPU und Memory umgeht.
apt install -y kali-desktop-xfce
Da mit dem Desktop auch der Network Manager installiert wird, werden wir diesen deaktivieren und die Netzwerk-Konfiguration dem systemd-networkd überlassen:
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
systemctl mask NetworkManager.service
Damit systemd-networkd die Netzwerk-Konfiguration übernehmen kann, wird noch eine Konfigurations-Datei benötigt, welche die Einstellungen der Netzwerk-Schnittstelle beinhaltet:
nano /etc/systemd/network/10-eth0.network
Der Inhalt der Datei kann folgendermassen aussehen und muss Anhand der eigenen Umgebung angepasst werden:
[Match]
Name=eth0
[Network]
Address=192.168.0.20/24
Gateway=192.168.0.1
DNS=192.168.0.1
Domains=example.lan
Danach kann der Service neugestartet werden:
systemctl restart systemd-networkd.service
Mit folgendem Befehl kann überprüft werden, ob die Netzwerk-Schnittstelle korrekt verwaltet wird:
networkctl status eth0
Wenn die Netzwerk-Kommunikation wieder hergestellt ist, kann mit der weiteren Installation des Remote Desktop Servers (XRDP) fortgefahren werden:
apt install -y xorg xrdp
Danach den xrdp Service aktivieren:
systemctl enable --now xrdp
Anschliessend kann mit einem RDP Client die Verbindung getestet werden:

