Ein Linux Server für Hosting-Anwendungen muss nicht nur stabil und performant sein, sondern auch Mandantenfähigkeit (Multi-Tenant) und Sicherheitsisolation gewährleisten. Dies ist besonders wichtig, wenn mehrere Kunden oder Dienste auf einem physischen Server betrieben werden. In diesem Tutorial werden die zentralen Konzepte, Tools und Best Practices vorgestellt, um ein sicheres und skalierbares Multi-Tenant-Setup unter Linux aufzubauen.
Multi-Tenant-Architektur verstehen
Multi-Tenant bedeutet, dass mehrere unabhängige Benutzer oder Dienste die gleiche Serverinfrastruktur nutzen, ohne dass sie sich gegenseitig beeinträchtigen. Dies kann auf verschiedenen Ebenen umgesetzt werden:
- Systembenutzer und Gruppen
- Containerisierung (Docker, Podman, LXC)
- Virtualisierung (KVM, QEMU, VMware)
Die Wahl der Isolationsebene hängt von Performance-Anforderungen, Sicherheit und Administrationsaufwand ab.
Benutzer- und Gruppenisolation
Die Basis für Multi-Tenant auf Dateisystemebene ist die klare Trennung durch Linux-Benutzer und -Gruppen. Jeder Kunde erhält einen eigenen Benutzer und ggf. eine eigene Gruppe:
sudo adduser kunde1
sudo adduser kunde2
Eigene Gruppe erstellen
sudo groupadd kunde1group
sudo usermod -aG kunde1group kunde1
Dateien und Verzeichnisse werden dann mit entsprechenden Eigentümern und Gruppenrechten versehen, um unautorisierten Zugriff zu verhindern:
mkdir /srv/kunde1
chown kunde1:kunde1group /srv/kunde1
chmod 750 /srv/kunde1
Containerisierung für Isolation
Container bieten eine starke Isolation bei gleichzeitig geringem Overhead. Tools wie Docker oder Podman erlauben es, Dienste unabhängig voneinander zu betreiben.
Docker Setup für Multi-Tenant
- Jeder Kunde erhält einen eigenen Container
- Netzwerk wird mittels Bridge oder Overlay getrennt
- Volumes werden spezifisch pro Container gemountet
# Beispiel: Container für Kunde1 starten
docker run -d
--name kunde1_web
-v /srv/kunde1:/var/www/html
--network kunde1_net
nginx:latest
Rootless Container
Mit rootless Podman können Container ohne Root-Rechte laufen, was die Sicherheit weiter erhöht:
podman run -d
--name kunde2_app
-v /srv/kunde2:/app
--userns=keep-id
python:3.11-slim
Virtuelle Maschinen (VMs) für maximale Isolation
Für Kunden, die vollständige Systemisolation benötigen, sind VMs die sicherste Variante. KVM/QEMU oder Proxmox können eingesetzt werden:
# VM erstellen mit virt-install
virt-install
--name kunde1_vm
--memory 2048
--vcpus 2
--disk size=20
--os-variant ubuntu22.04
--network bridge=br0
--cdrom /path/ubuntu.iso
Jede VM läuft vollständig isoliert mit eigenem Kernel und eigenen Services.
Ressourcen-Limits setzen
Um fairen Ressourceneinsatz zu gewährleisten und DoS durch einzelne Mandanten zu vermeiden, sollten Limits definiert werden:
- CPU- und RAM-Limits mit cgroups
- Disk Quotas für Speicherbereiche
- Netzwerkbandbreite mittels tc oder nftables
Cgroups für CPU und RAM
# Beispiel: cgroup für Kunde1
sudo cgcreate -g memory,cpu:/kunde1
sudo cgset -r memory.limit_in_bytes=1G /kunde1
sudo cgset -r cpu.shares=512 /kunde1
Prozess einem cgroup zuweisen
sudo cgexec -g memory,cpu:/kunde1 /usr/bin/python3 /srv/kunde1/app.py
Disk Quotas
Quota für Benutzer setzen
sudo edquota kunde1
Netzwerk-Isolation
Die Netzwerktrennung verhindert, dass Kunden ungewollt miteinander kommunizieren. Möglichkeiten:
- Bridge-Netzwerke für Container
- VLANs oder separate Subnetze
- Firewall-Regeln mit nftables oder iptables
# Beispiel: nftables-Regel für getrenntes Subnetz
sudo nft add table inet multi_tenant
sudo nft add chain inet multi_tenant input { type filter hook input priority 0; }
sudo nft add rule inet multi_tenant input iifname "eth0" ip saddr 192.168.10.0/24 accept
sudo nft add rule inet multi_tenant input iifname "eth0" ip saddr 192.168.20.0/24 accept
Logging und Auditing
Für Multi-Tenant-Setups ist Nachvollziehbarkeit entscheidend. auditd kann Zugriffe auf kritische Verzeichnisse oder Prozesse protokollieren:
sudo auditctl -w /srv/kunde1 -p rwa -k kunde1_files
sudo auditctl -w /srv/kunde2 -p rwa -k kunde2_files
Logs prüfen
sudo ausearch -k kunde1_files
sudo ausearch -k kunde2_files
Backup-Strategien
Backups sollten mandantenorientiert erfolgen, sodass jeder Kunde seine eigenen Daten wiederherstellen kann:
- Snapshot-basierte Backups (LVM, Btrfs, ZFS)
- rsync oder Borg/Restic für inkrementelle Backups
- Separate Backup-Speicherorte je Mandant
Best Practices für Multi-Tenant Hosting
- Klar definierte Benutzer- und Gruppenstruktur
- Isolation auf Container- oder VM-Ebene bevorzugen
- Ressourcen-Limits und Quotas setzen
- Netzwerktrennung und Firewall-Regeln implementieren
- Auditing und Logging aktiv nutzen
- Regelmäßige Backups pro Mandant
- Security Updates und Monitoring automatisieren
Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3
Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.
Meine Leistungen umfassen:
-
Professionelle Konfiguration von Routern und Switches
-
Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen
-
Erstellung von Topologien und Simulationen in Cisco Packet Tracer
-
Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG
-
Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible
-
Erstellung von Skripten für wiederkehrende Netzwerkaufgaben
-
Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege
-
Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting
Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

