Zum Inhalt springen

Linux/SELinux/08 Virtualisierung: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
(16 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{navigation|Linux/SELinux/07 Sandbox|Linux/SELinux/09 Container}}
'''Linux/SELinux/08 Virtualisierung''' - SELinux und Virtualisierung


[[Kategorie:SELinux/DOC]]
=== 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


=== Chapter 8. sVirt ===
; Hauptgründe für die Integration dieser Technologien
sVirt is a technology included in Red Hat Enterprise Linux that integrates SELinux and virtualization. sVirt applies Mandatory Access Control (MAC) to improve security when using virtual machines. The main reasons for integrating these technologies are to improve security and harden the system against bugs in the hypervisor that might be used as an attack vector aimed toward the host or to another virtual machine.
* 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


This chapter describes how sVirt integrates with virtualization technologies in Red Hat Enterprise Linux.
==== 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:


==== Non-Virtualized Environment ====
==== Virtualisierte Umgebung ====
In a non-virtualized environment, hosts are separated from each other physically and each host has a self-contained environment, consisting of services such as a Web server, or a DNS server. These services communicate directly to their own user space, host kernel and physical host, offering their services directly to the network. The following image represents a non-virtualized environment:
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:


==== Virtualized Environment ====
=== Sicherheit und Virtualisierung ===
In a virtualized environment, several operating systems can be housed (as "guests") within a single host kernel and physical host. The following image represents a virtualized environment:
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


=== 8.1. Security and Virtualization ===
sVirt ist ein Ansatz, um Gäste zu isolieren und ihre Fähigkeit einzuschränken, weitere Angriffe zu starten, falls sie ausgenutzt werden
When services are not virtualized, machines are physically separated. Any exploit is usually contained to the affected machine, with the obvious exception of network attacks. When services are grouped together in a virtualized environment, extra vulnerabilities emerge in the system. If there is a security flaw in the hypervisor that can be exploited by a guest instance, this guest may be able to not only attack the host, but also other guests running on that host. This is not theoretical; attacks already exist on hypervisors. These attacks can extend beyond the guest instance and could expose other guests to attack.


sVirt is an effort to isolate guests and limit their ability to launch further attacks if exploited. This is demonstrated in the following image, where an attack cannot break out of the virtual machine and extend to another host instance:
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 introduces a pluggable security framework for virtualized instances in its implementation of Mandatory Access Control (MAC). The sVirt framework allows guests and their resources to be uniquely labeled. Once labeled, rules can be applied which can reject access between different guests.
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


=== 8.2. sVirt Labeling ===
=== sVirt-Kennzeichnung ===
Like other services under the protection of SELinux, sVirt uses process-based mechanisms and restrictions to provide an extra layer of security over guest instances. Under typical use, you should not even notice that sVirt is working in the background. This section describes the labeling features of sVirt.
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


As shown in the following output, when using sVirt, each Virtual Machine (VM) process is labeled and runs with a dynamically generated level. Each process is isolated from other VMs with different levels:
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
  <code>~]# ps -eZ | grep qemu
 
Jeder Prozess ist durch unterschiedliche Stufen von anderen VMs isoliert:
  system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
  sudo ps -eZ | grep qemu
  system_u:system_r:svirt_t:s0:c639,c757 27989 ? 00:00:06 qemu-system-x86</code>
  system_u:system_r:svirt_t:s0:c87,c520 27950 ? 00:00:17 qemu-kvm
The actual disk images are automatically labeled to match the processes, as shown in the following output:
  system_u:system_r:svirt_t:s0:c639,c757 27989 ? 00:00:06 qemu-system-x86
  <code>~]# ls -lZ /var/lib/libvirtimages/*
 
Die eigentlichen Disk-Images werden automatisch so beschriftet, dass sie zu den Prozessen passen, wie in der folgenden Ausgabe gezeigt:
  system_u:object_r:svirt_image_t:s0:c87,c520   image1</code>
  sudo ls -lZ /var/lib/libvirtimages/*
The following table outlines the different labels that can be assigned when using sVirt:
  system_u:object_r:svirt_image_t:s0:c87,c520 image1
{| class="wikitable"
 
|+Table 8.1. sVirt Labels
; Labels, die bei der Verwendung von sVirt zugewiesen werden können
!Type
{| class="wikitable big"
!SELinux Context
!Typ
!Description
!SELinux-Kontext
!Beschreibung
|-
|-
|Virtual Machine Processes
|Prozesse der virtuellen Maschine
|system_u:system_r:svirt_t:MCS1
|system_u:system_r:svirt_t:MCS1
|MCS1 is a randomly selected MCS field. Currently approximately 500,000 labels are supported.
|MCS1 ist ein zufällig ausgewähltes MCS-Feld
* Derzeit werden etwa 500.000 Labels unterstützt
|-
|-
|Virtual Machine Image
|Image der virtuellen Maschine
|system_u:object_r:svirt_image_t:MCS1
|system_u:object_r:svirt_image_t:MCS1
|Only processes labeled ''svirt_t'' with the same MCS fields are able to read/write these image files and devices.
|Nur Prozesse mit der Labelung „svirt_t“ und denselben MCS-Feldern können diese Image-Dateien und Geräte lesen/beschreiben
|-
|-
|Virtual Machine Shared Read/Write Content
|Gemeinsam genutzte Lese-/Schreibinhalte der virtuellen Maschine
|system_u:object_r:svirt_image_t:s0
|system_u:object_r:svirt_image_t:s0
|All processes labeled ''svirt_t'' are allowed to write to the svirt_image_t:s0 files and devices.
|Alle Prozesse mit dem Label „svirt_t“ dürfen in die svirt_image_t:s0-Dateien und -Geräte schreiben
|-
|-
|Virtual Machine Image
|Image der virtuellen Maschine
|system_u:object_r:virt_content_t:s0
|system_u:object_r:virt_content_t:s0
|System default label used when an image exits. No ''svirt_t'' virtual processes are allowed to read files/devices with this label.
|Standard-Systemlabel, das beim Beenden eines Images verwendet wird
* Kein virtueller „svirt_t“-Prozess darf Dateien/Geräte mit diesem Label lesen
|}
|}
{| class="wikitable"
 
|+Table 8.1. sVirt Labels
; Statische Kennzeichnung
!Type
Bei der Verwendung von sVirt ist auch eine statische Kennzeichnung möglich
!SELinux Context
* Statische Kennzeichnungen ermöglichen es dem Administrator, eine bestimmte Kennzeichnung, einschließlich des MCS/MLS-Feldes, für eine virtuelle Maschine auszuwählen
!Description
* 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
|Virtual Machine Processes
* Dies ermöglicht den Betrieb der sVirt-Komponente in einer MLS-Umgebung
|system_u:system_r:svirt_t:MCS1
* Je nach Ihren Anforderungen können Sie auf einem System auch mehrere virtuelle Maschinen mit unterschiedlichen Sensitivitätsstufen betreiben
|MCS1 is a randomly selected MCS field. Currently approximately 500,000 labels are supported.
 
|-
----
|Virtual Machine Image
 
|system_u:object_r:svirt_image_t:MCS1
{{navigation|Linux/SELinux/07 Sandbox|Linux/SELinux/09 Container}}
|Only processes labeled ''svirt_t'' with the same MCS fields are able to read/write these image files and devices.
 
|-
[[Kategorie:Linux/SELinux]]
|Virtual Machine Shared Read/Write Content
|system_u:object_r:svirt_image_t:s0
|All processes labeled ''svirt_t'' are allowed to write to the svirt_image_t:s0 files and devices.
|-
|Virtual Machine Image
|system_u:object_r:virt_content_t:s0
|System default label used when an image exits. No ''svirt_t'' virtual processes are allowed to read files/devices with this label.
|}
It is also possible to perform static labeling when using sVirt. Static labels allow the administrator to select a specific label, including the MCS/MLS field, for a virtual machine. Administrators who run statically-labeled virtual machines are responsible for setting the correct label on the image files. The virtual machine will always be started with that label, and the sVirt system will never modify the label of a statically-labeled virtual machine's content. This allows the sVirt component to run in an MLS environment. You can also run multiple virtual machines with different sensitivity levels on a system, depending on your requirements.

Aktuelle Version vom 12. Juni 2026, 12:55 Uhr

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