SELinux Policy: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 15: Zeile 15:
 
  require {
 
  require {
 
     type mnt_t;
 
     type mnt_t;
class file;
+
    class file;
attribute port_type;
+
    attribute port_type;
 
  }
 
  }
 
<span id="neuen-porttyp-definieren"></span>
 
<span id="neuen-porttyp-definieren"></span>

Version vom 24. November 2022, 15:40 Uhr

  • SELinux Policies werden hauptsächlich in einer .te Datei definiert
  • Ein Grundgerüst kann mit sepolicy generate erstellt werden

Vorhandene Definitionen verwenden

  • Mit require können bereits bekannte Variablen wie Typen, Attribute, etc. geladen werden
  • Eine vollständige Liste kann mit seinfo eingesehen werden
  • Syntax Beispiel:
policy_module(custom, 1.0.0)

require {
    type mnt_t;
    class file;
    attribute port_type;
}

Neuen Porttyp definieren

  • Erforderliche Attribute importieren
  • Neuen Porttyp deklarieren
  • Neuen Porttyp mit den Attributen assozieren
  • Syntax Beispiel
policy_module(custom, 1.0.0)

require {
    attribute port_type;
    attribute defined_port_type;
    attribute reserved_port_type;
}

type custom_port_t;
typeattribute custom_port_t port_type;
typeattribute custom_port_t defined_port_type;
typeattribute custom_port_t reserved_port_type;

Type transition

  • Damit ein Programm einen gelabelten Port benutzen darf, muss es eine Transistion zu den Porttyp machen
  • Das wird mit den allow Befehlen in den Konfigurationsdatei erreicht
  • Syntax Beispiel:
policy_module(custom, 1.0.0)

require {
    attribute port_type;
    attribute defined_port_type;
    attribute reserved_port_type;
}

type custom_t;
type custom_port_t;
typeattribute custom_port_t port_type;

# Zwei verschiedene Typentransitionen müssen erfolgen, damit ein Programm auf einen Port lauschen darf.
allow custom_t custom_port_t:tcp_socket { name_bind };
allow custom_t node_t:tcp_socket { node_bind };
allow custom_t self:tcp_socket { listen accept };