Linux/SELinux/08 Virtualisierung
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
|
| 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
|
- 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