© Natalia Merzlyakova - Fotolia.com

Trusted Path Execution des Grsecurity Kernel Patches

Bevor wir uns im nächsten Beitrag mit der Installation, sicheren Konfiguration und Härtung eines Nginx-Servers befassen, möchte ich im Folgenden noch etwas Grundlagenarbeit erörtern: Die Funktionsweise der Trusted Path Execution unter Linux.

Die Trusted Path Execution sind als Teil des Grsecurity Patches während der Konfiguration optional aktivierbar.

Linux Menuconfig Security > Grsecurity > Executable Protections / Trusted Path Execution ausgewählt
Security Options -> Grsecurity -> Executable Protections

Funktionsweise der Trusted Path Execution

Die Ausführung von schädlichem Code auf einem Linux System, entweder durch einen externen Angreifer oder (un)gewollt durch einen lokalen Nutzer, ist eine der größten IT-Sicherheitsbedrohungen der heutigen Tage. Um diese Gefahr zu vermindern, ist Trusted Path Execution (TPE) ein weiterer Sicherheits-Layer, der die Ausführbarkeit von Dateien unter bestimmten Umständen einschränkt.

Die Nutzung von TPE erschwert beispielsweise den Versuch einer Privilege Escalation deutlich - wenn der Account mithilfe von TPE geschützt wird, ist es einem Angreifer nicht möglich, benutzerdefinierte Dateien auszuführen, die nicht in einem vertrauenswürdigem Pfad liegen. Im Rahmen vieler Angriffe versuchen Angreifer oftmals, nach dem Einbruch in das System Code nachzuladen und auszuführen, beispielsweise um eine lokale Sicherheitslücke auszunutzen.

Die Konfigurationsarten der Trusted Path Execution

Während der Konfiguration können verschiedene Optionen aktiviert und konfiguriert werden. Generell lässt sich die TPE auf fünf verschiedene Arten konfigurieren:

1 - Trusted Path Execution deaktivieren

Um die Trusted Path Execution zu deaktivieren, muss die Konfiguration wie folgt aussehen:

-> Security options
  -> Grsecurity
    -> Grsecurity
      -> Executable Protections
        [ ] Trusted Path Execution (TPE)
        [ ]   Partially restrict all non-root users
        [ ]   Invert GID option
        (106)   GID for untrusted users

In dieser Konfiguration wird die Erweiterung vollständig deaktiviert und Linux zeigt das standardmäßige Verhalten bei der Ausführung von Dateien.

2 - Trusted Path Execution Basiskonfiguration

Um die Basiskonfiguration zu aktivieren, sehen die Optionen wie nachfolgend gezeigt aus:

-> Security options
  -> Grsecurity
    -> Grsecurity
      -> Executable Protections
        [x] Trusted Path Execution (TPE)
        [ ]   Partially restrict all non-root users
        [ ]   Invert GID option
        (106)   GID for untrusted users

Im Rahmen dieser Konfiguration wird den Nutzern, die Mitglied der Gruppe mit der GID 106 sind, verboten, Dateien auszuführen, die nicht in einem Verzeichnis liegen,

  • das Root gehört und
  • dessen Schreibrechtigungen ebenfalls nur root vorenthalten sind.

Die GID der Gruppe lässt sich verändern.

Ein Beispiel, User 1 sei Mitglied der Gruppe 106, User 2 nicht:

# Permissions Owner Group User 1 User 2
1 d rwx r-x r-x root root Executed Executed
2 d rwx r-x rwx root root Denied Executed
3 d rwx r-x r-x User 1 User 1 Denied Executed
4 d rwx r-x rwx User 2 User 2 Denied Executed

3 - Trusted Path Execution mit aktivierter "Partially restrict" Option

Die Aktivierung der Option "Partially restrict all non-root users" betrifft zusätzlich die "non-root" User, die nicht Mitglied der Gruppe mit der GID 106 sind. Für Nutzer der GID 106 gelten die Einschränkungen der Variante 2, zusätzlich dürfen Nutzer, die nicht Teil der Group ID 106 sind, nur Dateien in einem Verzeichnis ausführen,

  • das Root gehört und
  • dessen Schreibrechtigungen ebenfalls nur root vorenthalten sind.

- oder -

  • das dem ausführendem Nutzer gehört und
  • dessen Schreibrechtigungen nur dem ausführendem Nutzer vorenthalten sind.
-> Security options
  -> Grsecurity
    -> Grsecurity
      -> Executable Protections
        [x] Trusted Path Execution (TPE)
        [x]   Partially restrict all non-root users
        [ ]   Invert GID option
        (106)   GID for untrusted users

Ein Beispiel, User 1 ist hierbei wieder Mitglied der Gruppe 106, User 2 nicht:

# Permissions Owner Group User 1 User 2
1 d rwx r-x r-x root root Executed Executed
2 d rwx r-x rwx root root Denied Denied
3 d rwx r-x r-x User 1 User 1 Denied Denied
4 d rwx r-x rwx User 2 User 2 Denied Denied
2 d rwx r-x r-x User 2 User 2 Denied Executed

4 - Trusted Path Execution Basiskonfiguration mit aktivierter "Inverted GID option"

Hierbei handelt es sich um die Variante 2, mit der Änderung, dass die GID invertiert behandelt wird. Traf es also bisher nur die Nutzer mit der GID 106, trifft es mit aktivierter "Invert GID option" nun alle Nutzer außer die Nutzer mit der GID 106.

-> Security options
  -> Grsecurity
    -> Grsecurity
      -> Executable Protections
        [x] Trusted Path Execution (TPE)
        [ ]   Partially restrict all non-root users
        [x]   Invert GID option
        (106)   GID for untrusted users

Im Beispiel ist gut erkenntlich, wie sich die Option auswirkt:

# Permissions Owner Group User 1 User 2
1 d rwx r-x r-x root root Executed Executed
2 d rwx r-x rwx root root Executed Denied
3 d rwx r-x r-x User 1 User 1 Executed Denied
4 d rwx r-x rwx User 2 User 2 Executed Denied

5 - Trusted Path Execution Basiskonfiguration mit aktivierter "Inverted GID option" und aktivierter "Partially restrict" Option

Gleiches wie die Variante 3, dieses mal auch mit der in Varainte 4 erläuterten "Inverted GID option".

-> Security options
  -> Grsecurity
    -> Grsecurity
      -> Executable Protections
        [x] Trusted Path Execution (TPE)
        [x]   Partially restrict all non-root users
        [x]   Invert GID option
        (106)   GID for untrusted users

Auch in diesem Beispiel sind die Auswirkungen im Vergleich zu Variante 3 gut zu erkennen:

# Permissions Owner Group User 1 User 2
1 d rwx r-x r-x root root Executed Executed
2 d rwx r-x rwx root root Denied Denied
3 d rwx r-x r-x User 1 User 1 Executed Denied
4 d rwx r-x rwx User 2 User 2 Denied Denied
2 d rwx r-x r-x User 2 User 2 Denied Denied

Zusammenfassung, Fazit

Auch wenn die Konfiguration auf den ersten Blick etwas unverständlich wirken kann, ist die Trusted Path Execution eine sehr wirksame Möglichkeit, Angreifer daran zu hindern, Fremdcode einzuschleusen und auszuführen. Trusted Path Execution ist kein Allheilmittel, bietet jedoch einen weiteren Layer für ein auf Sicherheit optimiertes Linux-System.

Bildnachweis:

  • Beitragsbild: © Natalia Merzlyakova - Fotolia.com

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert