Linux Server Setup für Hosting: Multi-Tenant und Isolation

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.

Related Articles