SELinux Policy
Version vom 24. November 2022, 15:39 Uhr von Linkai.zhang (Diskussion | Beiträge)
- 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 };