SELinux Policy: Unterschied zwischen den Versionen
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 | + | * 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 };