SELinux Policy: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 50: Zeile 50:
 
   
 
   
 
  require {
 
  require {
+
    attribute port_type;
attribute port_type;
 
 
     attribute defined_port_type;
 
     attribute defined_port_type;
 
     attribute reserved_port_type;
 
     attribute reserved_port_type;

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 };