Beim Hosting mehrerer Websites auf einem einzigen Server steht die Sicherheit und Isolation der einzelnen Websites im Vordergrund. Multi-Tenant Hosting ermöglicht es, dass verschiedene Kunden oder Projekte auf demselben Server betrieben werden, ohne dass ein kompromittiertes System Zugriff auf die Daten oder Ressourcen anderer Websites erhält. Dieser Leitfaden zeigt Einsteigern, IT-Studierenden und Junior Network Engineers praxisnahe Methoden, um Websites effektiv voneinander zu isolieren und gleichzeitig Performance und Verwaltung zu optimieren.
Grundprinzipien der Isolation
Isolation kann auf verschiedenen Ebenen erreicht werden: Benutzerrechte, Dateisysteme, Prozesse, Netzwerk und Datenbanken. Die Kombination dieser Maßnahmen stellt sicher, dass ein Sicherheitsvorfall in einem Tenant keinen Einfluss auf andere Tenants hat.
- Systembenutzer: Jeder Tenant erhält einen eigenen Benutzer und Gruppe.
- Dateisystemrechte: Zugriffe auf Webverzeichnisse werden strikt getrennt.
- Separate Prozesse: Webserver oder App-Worker laufen mit dedizierten Rechten.
- Datenbanken: Zugriff wird auf bestimmte Datenbanken und Benutzer beschränkt.
- Netzwerkisolierung: Container oder virtuelle Netzwerke für zusätzliche Sicherheit.
Benutzer- und Gruppenmanagement
Eigene Systembenutzer pro Website
Jede Website sollte unter einem eigenen Linux-Benutzer laufen:
sudo adduser web1
sudo adduser web2
Die Webserver-Prozesse können diesen Benutzer beim Start zugeordnet bekommen, sodass die Prozesse nur auf die eigenen Ressourcen zugreifen können.
Dateirechte konfigurieren
Das Home-Verzeichnis jeder Website wird dem jeweiligen Benutzer zugewiesen:
sudo chown -R web1:web1 /var/www/web1
sudo chmod -R 750 /var/www/web1
So wird sichergestellt, dass andere Benutzer keinen direkten Zugriff auf fremde Webverzeichnisse haben.
Webserver-Isolation
Nginx/Apache Virtual Hosts
Separate Server- oder Virtual Hosts für jede Website:
# Nginx
server {
listen 80;
server_name web1.example.com;
root /var/www/web1;
...
}
Dies verhindert, dass Konfigurationen oder Zugriff auf eine Website unkontrolliert andere Sites beeinflussen.
PHP-FPM Pools
Für PHP-Websites empfiehlt sich ein eigener FPM-Pool pro Tenant:
[web1]
user = web1
group = web1
listen = /run/php/php8.1-fpm-web1.sock
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 10
So werden Prozesse getrennt und Ressourcen isoliert.
Datenbank-Isolation
Eigene Benutzer und Datenbanken
Jeder Tenant bekommt separate Datenbanken und Benutzer:
CREATE DATABASE web1_db;
CREATE USER 'web1_user'@'localhost' IDENTIFIED BY 'securepassword';
GRANT ALL PRIVILEGES ON web1_db.* TO 'web1_user'@'localhost';
FLUSH PRIVILEGES;
Damit kann ein kompromittierter Webprozess nicht auf Daten anderer Tenants zugreifen.
Verbindung über Unix-Sockets oder TCP
TCP-Ports können pro Tenant limitiert werden, alternativ sind Unix-Sockets mit restriktiven Rechten empfehlenswert:
sudo chown web1:web1 /var/run/mysqld/web1.sock
sudo chmod 660 /var/run/mysqld/web1.sock
Containerisierung als Isolationsebene
Container wie Docker oder Podman können zusätzliche Isolation bieten:
- Jede Website in einem eigenen Container mit eigenem Webserver, PHP und Datenbank
- Separate Netzwerke verhindern unerwünschte interne Kommunikation
- Volume-Mounts sichern persistente Daten
- Ressourcenlimits schützen vor DoS durch einen Tenant
Firewall und Netzwerkregeln
Netzwerkzugriffe zwischen Tenants und zum externen Internet sollten kontrolliert werden:
# UFW Beispiel
sudo ufw allow from 203.0.113.0/24 to any port 3306 comment 'DB Access für Tenant'
sudo ufw deny from any to any port 3306 comment 'Zugriff sonst blockieren'
So werden Datenbankzugriffe und interne Kommunikation streng geregelt.
Monitoring und Logging
Separate Logs für jeden Tenant erleichtern die Überwachung und das Troubleshooting:
# Nginx
access_log /var/log/nginx/web1.access.log;
error_log /var/log/nginx/web1.error.log;
PHP-FPM
php_admin_value[error_log] = /var/log/php-fpm/web1.log
Dies hilft auch bei Sicherheitsvorfällen, da jeder Tenant isolierte Logdaten besitzt.
Automatisierte Deployments
Um die Sicherheit zu wahren, sollten Deployments isoliert erfolgen:
- Separate Git-Repositories pro Tenant
- Deployment-Skripte mit Benutzerwechsel (
sudo -u web1) - CI/CD-Pipelines mit dedizierten Service Accounts
- Rollback-Möglichkeiten bei Fehlern
Zusammenfassung der Isolationsebenen
- Systembenutzer & Dateisystemrechte
- Separate Webserver-Konfigurationen und PHP-FPM Pools
- Dedizierte Datenbanken und Benutzer
- Containerisierung für zusätzliche Sicherheit
- Firewall und Netzwerkrichtlinien
- Monitoring, Logging und automatisierte Deployments
Durch die Kombination dieser Maßnahmen können Webserver mehrere Tenants sicher betreiben, Risiken minimieren und gleichzeitig die Performance gewährleisten. Ein strukturiertes Multi-Tenant Setup schützt Daten, isoliert Prozesse und sorgt für einen wartbaren Webserverbetrieb.
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.











