Zum Inhalt springen

Linux/SELinux/08 Virtualisierung

Aus Foxwiki

Linux/SELinux/08 Virtualisierung - SELinux und Virtualisierung

Beschreibung

sVirt integriert SELinux mit Virtualisierungstechnologien

sVirt ist eine in Linux integrierte Technologie, die SELinux und Virtualisierung miteinander verbindet

  • sVirt wendet Mandatory Access Control (MAC) an, um die Sicherheit bei der Nutzung virtueller Maschinen zu verbessern
Hauptgründe für die Integration dieser Technologien
  • Verbesserung der Sicherheit
  • Absicherung des Systems gegen Fehler im Hypervisor
    • die als Angriffsvektor gegen den Host oder eine andere virtuelle Maschine genutzt werden könnten

Nicht-virtualisierte Umgebung

In einer nicht-virtualisierten Umgebung sind die Hosts physisch voneinander getrennt, und jeder Host verfügt über eine in sich geschlossene Umgebung, bestehend aus Diensten wie einem Webserver oder einem DNS-Server

  • Diese Dienste kommunizieren direkt mit ihrem eigenen Benutzerbereich, dem Host-Kernel und dem physischen Host und stellen ihre Dienste direkt dem Netzwerk zur Verfügung
  • Die folgende Abbildung stellt eine nicht-virtualisierte Umgebung dar:

Virtualisierte Umgebung

In einer virtualisierten Umgebung können mehrere Betriebssysteme (als „Gäste“) innerhalb eines einzigen Host-Kernels und physischen Hosts untergebracht werden

  • Die folgende Abbildung stellt eine virtualisierte Umgebung dar:

Sicherheit und Virtualisierung

Wenn Dienste nicht virtualisiert sind, sind die Maschinen physisch voneinander getrennt

  • Ein Exploit bleibt in der Regel auf den betroffenen Rechner beschränkt, mit der offensichtlichen Ausnahme von Netzwerkangriffen
  • Wenn Dienste in einer virtualisierten Umgebung zusammengefasst werden, entstehen zusätzliche Schwachstellen im System
  • Wenn es im Hypervisor eine Sicherheitslücke gibt, die von einer Gastinstanz ausgenutzt werden kann, ist dieser Gast möglicherweise in der Lage, nicht nur den Host anzugreifen, sondern auch andere Gäste, die auf diesem Host laufen
  • Dies ist keine Theorie; Angriffe auf Hypervisoren gibt es bereits
  • Diese Angriffe können über die Gastinstanz hinausgehen und andere Gäste Angriffen aussetzen

sVirt ist ein Ansatz, um Gäste zu isolieren und ihre Fähigkeit einzuschränken, weitere Angriffe zu starten, falls sie ausgenutzt werden

Dies wird in der folgenden Abbildung veranschaulicht, in der ein Angriff nicht aus der virtuellen Maschine ausbrechen und sich auf eine andere Host-Instanz ausweiten kann:

SELinux führt in seiner Implementierung der Mandatory Access Control (MAC) ein pluggbares Sicherheitsframework für virtualisierte Instanzen ein

  • Das sVirt-Framework ermöglicht es, Gäste und ihre Ressourcen eindeutig zu kennzeichnen
  • Nach der Kennzeichnung können Regeln angewendet werden, die den Zugriff zwischen verschiedenen Gästen verweigern

sVirt-Kennzeichnung

Wie andere Dienste unter dem Schutz von SELinux nutzt sVirt prozessbasierte Mechanismen und Einschränkungen, um eine zusätzliche Sicherheitsebene für Gastinstanzen bereitzustellen

  • Bei typischer Nutzung sollten Sie gar nicht bemerken, dass sVirt im Hintergrund arbeitet
  • Dieser Abschnitt beschreibt die Kennzeichnungsfunktionen von sVirt

Wie in der folgenden Ausgabe gezeigt, wird bei Verwendung von sVirt jeder Prozess einer virtuellen Maschine (VM) gekennzeichnet und läuft mit einer dynamisch generierten Stufe

Jeder Prozess ist durch unterschiedliche Stufen von anderen VMs isoliert:

sudo ps -eZ | grep qemu
system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
system_u:system_r:svirt_t:s0:c639,c757 27989 ? 00:00:06 qemu-system-x86

Die eigentlichen Disk-Images werden automatisch so beschriftet, dass sie zu den Prozessen passen, wie in der folgenden Ausgabe gezeigt:

sudo ls -lZ /var/lib/libvirtimages/*
system_u:object_r:svirt_image_t:s0:c87,c520 image1
Labels, die bei der Verwendung von sVirt zugewiesen werden können
Typ SELinux-Kontext Beschreibung
Prozesse der virtuellen Maschine system_u:system_r:svirt_t:MCS1 MCS1 ist ein zufällig ausgewähltes MCS-Feld
  • Derzeit werden etwa 500.000 Labels unterstützt
Image der virtuellen Maschine system_u:object_r:svirt_image_t:MCS1 Nur Prozesse mit der Labelung „svirt_t“ und denselben MCS-Feldern können diese Image-Dateien und Geräte lesen/beschreiben
Gemeinsam genutzte Lese-/Schreibinhalte der virtuellen Maschine system_u:object_r:svirt_image_t:s0 Alle Prozesse mit dem Label „svirt_t“ dürfen in die svirt_image_t:s0-Dateien und -Geräte schreiben
Image der virtuellen Maschine system_u:object_r:virt_content_t:s0 Standard-Systemlabel, das beim Beenden eines Images verwendet wird
  • Kein virtueller „svirt_t“-Prozess darf Dateien/Geräte mit diesem Label lesen
Statische Kennzeichnung

Bei der Verwendung von sVirt ist auch eine statische Kennzeichnung möglich

  • Statische Kennzeichnungen ermöglichen es dem Administrator, eine bestimmte Kennzeichnung, einschließlich des MCS/MLS-Feldes, für eine virtuelle Maschine auszuwählen
  • Administratoren, die statisch gekennzeichnete virtuelle Maschinen betreiben, sind dafür verantwortlich, die richtigen Labels in den Image-Dateien festzulegen
  • Die virtuelle Maschine wird immer mit diesem Label gestartet, und das sVirt-System ändert niemals das Label des Inhalts einer statisch gekennzeichneten virtuellen Maschine
  • Dies ermöglicht den Betrieb der sVirt-Komponente in einer MLS-Umgebung
  • Je nach Ihren Anforderungen können Sie auf einem System auch mehrere virtuelle Maschinen mit unterschiedlichen Sensitivitätsstufen betreiben