SELinux Policy: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 11: Zeile 11:
  
 
<!----->
 
<!----->
 +
policy_module(custom, 1.0.0)
 +
 
  require {
 
  require {
 
  type mnt_t;
 
  type mnt_t;
Zeile 22: Zeile 24:
 
* Neuen Porttyp deklarieren
 
* Neuen Porttyp deklarieren
 
* Neuen Porttyp mit den Attributen assozieren
 
* Neuen Porttyp mit den Attributen assozieren
* Beispiel
+
* Syntax Beispiel
  
 
<!----->
 
<!----->
Zeile 40: Zeile 42:
 
= Type transition =
 
= Type transition =
  
* Damit ein Programm ein [https://xinux.net/index.php/SELinux_Handling#add_port gelabelten Port]
+
* Damit ein Programm einen [https://xinux.net/index.php/SELinux_Handling#add_port 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 };

Version vom 24. November 2022, 11:20 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 };