LiveConfig Account-Container (LAC)

Bemerkung

Diese Funktion erfordert eine LiveConfig Business-Lizenz.

Im Shared Hosting ist ein entscheidender Sicherheitsaspekt die Isolation von Websites untereinander. Unter keinen Umständen darf es möglich sein, auf Inhalte anderer Benutzer des selben Servers unberechtigt zugreifen zu können. Auch sollen die Ressourcen des Servers (CPU, Arbeitsspeicher, I/O) fair verteilt werden, ohne dass z.B. ein defektes Script den gesamten Server verlangsamt.

LiveConfig erstellt bislang schon alle Dateien und Verzeichnisse so, dass das Betriebssystem anhand der Dateisystem-Berechtigungen einen fremden Zugriff verbietet. Auch sind Konfigurationsdateien normalerweise nicht von Benutzern lesbar, um nicht indirekt Informationen über den Server erhalten zu können. Dennoch lässt sich ein Zugriff nicht auf alle Dateien einschränken, z.B. die bekannte /etc/passwd wird vom Betriebssystem aus benötigt und muss immer lesbar sein.

Mit LiveConfig v3 gibt es einen komplett neuen, zusätzlichen Schutzmechanismus für Shared-Hosting-Server: die LiveConfig Account-Container (LAC). Accounts werden hierzu in einzelne „Container“ organisiert, was u.a. folgende Vorteile bietet:

  • komplette Filterung des Dateisystems (z.B. kein /boot/, /sbin/ und /usr/sbin/-Verzeichnis mehr vorhanden)

  • gefilterte Systemdateien (z.B. /etc/passwd enthält nur noch Informationen zum eigenen Account)

  • eigenes /tmp/-Verzeichnis pro Account

  • grundsätzlich nur eigene Prozesse in der Prozessliste sichtbar

  • eigenes virtuelles Netzwerkinterface pro Account (standardmäßig keine von außen erreichbaren Serverdienste möglich)

  • eigenes Loopback-Interface (127.0.0.1) pro Account (keine Ressourcenkonflikte z.B. bei NodeJS-Anwendungen auf 127.0.0.1:8080)

  • Ressourcen-Begrenzung von CPU, RAM und I/O über CGroups möglich

  • keinerlei Overhead zur Laufzeit (kein separater Service pro Container erforderlich)

LiveConfig nutzt hierbei ausschließlich Techniken, welche seit einigen Jahren im Standard-Kernel von Linux verfügbar sind:

  • keine Kernel-Patches oder proprietäre Treiber erforderlich

  • funktioniert mit jeder von LiveConfig unterstützten Distribution (.rpm- und .deb-basiert, z.B. Rocky Linux, Ubuntu und Debian)

Technisch betrachtet kann man sich die LiveConfig Account Container wie eine Art Docker-Container vorstellen - nur eben viel leichtgewichtiger und für den Einsatzzweck optimiert.

Anforderungen

  • LiveConfig Business-Lizenz auf dem betroffenen Webserver

  • von LiveConfig 3 unterstützte Linux-Distribution

  • systemd & PAM-Dienst mit systemd-Modul (pam-systemd)

Einschränkungen:

  • funktioniert derzeit noch nicht mit PHP-FPM, nur FastCGI wird unterstützt

  • kann anfangs nur pro Account aktiviert werden, nicht in den Vorlagen

  • das Apache-suexec-Tool wird durch eine geringfügig angepasste Version ersetzt

Verwendung

Installieren Sie das Paket lac (ist im LiveConfig-Repository enthalten).

LiveConfig erkennt automatisch, ob LAC auf dem jeweiligen Server verfügbar ist. Wenn ja, dann wird das unter Serververwaltung -> (Server auswählen) -> Web angezeigt:

LiveConfig Account Containers available

Zudem wird der Netzwerkbereich angezeigt, aus dem LiveConfig zufällig die IP-Adressen für die einzelnen Container generiert. Das verwendete IPv4-Netz 100.64.0.0/10 ist das „Carrier Grade NAT“-Netz (RFC 6264) und sollte somit nicht mit den IP-Adressen des Servers selbst kollidieren

Anschließend können Sie beim Erstellen eines neuen Accounts oder beim Bearbeiten eines vorhandenen Accounts LAC aktivieren

Enable LAC for an account

Wichtig ist hier, dass die PHP-Ausführung automatisch auf FastCGI umgestellt wird (PHP-FPM wird technisch derzeit noch nicht unterstützt)

Nach wenigen Sekunden läuft der betroffene Account dann innerhalb eines LAC-Containers. Das Deaktivieren von LAC läuft genauso: Checkbox deaktivieren, speichern, fertig

lacctl

Die LiveConfig Account Container werden mit dem Tool lacctl verwaltet. Sie können die Liste der gefilterten, versteckten oder geleerten Verzeichnisse in /etc/liveconfig/lac.conf konfigurieren.