SELinux-Policy mit udica anpassen

Einstellbare Sicherheit

Mit der steigenden Anzahl von produktiven Anwendungen, die in Containern ausgeführt werden, rückt das Thema Sicherheit weiter in den Fokus. Mithilfe von SELinux erhält ein Container nur auf ganz bestimmte Ressourcen Zugriff. Das Tool udica hilft dabei, die SELinux-Policy an die eigenen Bedürfnisse anzupassen. Wie Sie dieses Werkzeug am einfachsten einsetzen, zeigt Ihnen unser Open-Source-Tipp.
Nicht erst durch die Corona-Krise sahen sich viele Firmen damit konfrontiert, dass sich Mitarbeiter von unterschiedlichen Geräten und verschiedensten ... (mehr)

Container isolieren Anwendungen vom Host, auf dem sie laufen. Hierzu greifen Container-Runtimes auf die Namespace-Technologie des Linux-Kernels zurück [1]. Wie bei der Virtualisierung von ganzen Systemen besteht allerdings auch hier die Gefahr, dass durch einen Softwarefehler ein Ausbruch aus dem Container erfolgt und somit der Zugriff auf das Hostsystem möglich ist. Vor einiger Zeit wurde ein solcher Fehler in der Container-Runtime "runC" bekannt. Angreifer waren dadurch in der Lage, auf dem Hostsystem beliebigen Code mit Root-Rechten auszuführen. Die Schwachstelle erhielt die CVE-Bezeichnung "2019-5736" [2].

Der Fehler war besonders problematisch, da runC standardmäßig sowohl von Docker als auch von Podman verwendet wird. Auf Systemen, die SELinux aktiviert hatten, ließ sich die Schwachstelle allerdings nicht ausnutzen. Die SELinux-Policy hatte nämlich den Zugriffsversuch aus dem Container auf das Hostsystem unterbunden [3]. Für viele Anwendungsfälle ist die Standard-SELinux-Policy allerdings nicht ausreichend, weshalb eine individuelle Modifikation des Regelwerks notwendig ist. Um diese durchzuführen, ist jedoch ein wenig Grundlagenwissen notwendig.

Erste Schritte mit SELinux

Auf einem SELinux-System laufen Prozesse immer innerhalb von sogenannten Domänen ab. Diese besitzen eine eindeutige Bezeichnung, die auch als SELinux-Label bezeichnet wird. Eine Policy regelt den Zugriff der Prozesse aus einer Domäne auf Objekte aller Art. Nehmen wir als typisches Beispiel einen Apache-Webserver. Der Prozess "httpd" läuft standardmäßig innerhalb einer Domäne namens "httpd_t". Die Eingabe von »ps -efZ« bestätigt dies:

ps -efZ|grep httpd
 
system_u:system_r:httpd_t:s0 apache 23305 32557 0 Jun28 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND

Das vom

...

Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2020