linux-system-roles.selinux
SELinux
Erwartete Funktionalität
Bereitstellung von Mechanismen zur Verwaltung lokaler Anpassungen:
- Setzen von "enforcing" oder "permissive"
- Wiederherstellen von Teilen des Dateisystems
- Setzen/Abfragen von Booleans
- Setzen/Abfragen von Dateikontexten
- Verwalten von Logins
- Verwalten von Ports
Hinweis: Wenn Sie SELinux-Anpassungen im disabled
Modus verwalten möchten, muss die SELinux targeted
-Richtlinie installiert sein.
Anforderungen
Siehe unten
Sammlungsanforderungen
Die Rolle benötigt externe Sammlungen. Verwenden Sie den folgenden Befehl zur Installation:
ansible-galaxy collection install -vv -r meta/collection-requirements.yml
Module, die von diesem Repository bereitgestellt werden
selinux_modules_facts
Erfasst den Zustand der SELinux-Module
Rollenvariablen
örtliche Modifikationen löschen
Standardmäßig werden die in selinux_booleans
, selinux_fcontexts
, selinux_ports
und selinux_logins
angegebenen Modifikationen über bestehende Modifikationen gelegt. Um örtliche Modifikationen vor dem Setzen neuer zu löschen, stellen Sie die folgenden Variablen auf true
:
selinux_booleans_purge
- SELinux Booleansselinux_fcontexts_purge
- SELinux Dateikontexteselinux_ports_purge
- SELinux Portsselinux_logins_purge
- SELinux Benutzerzuordnungen
Sie können alle Modifikationen löschen, indem Sie selinux_all_purge: true
verwenden:
selinux_all_purge: true
selinux_policy, selinux_state
Verwalten Sie den SELinux-Richtlinientyp und den Modus.
selinux_policy: targeted
selinux_state: enforcing
Erlaubte Werte für selinux_state
sind disabled
, enforcing
und permissive
.
Wenn selinux_state
nicht gesetzt ist, wird der SELinux-Zustand nicht geändert.
Wenn selinux_policy
nicht gesetzt ist und SELinux aktiviert werden soll, erfolgt der Standard auf targeted
. Wenn SELinux bereits aktiviert ist, wird die Richtlinie nicht geändert.
Dies verwendet das selinux Modul zur Verwaltung des SELinux-Modus und der Richtlinie.
selinux_booleans
Verwalten Sie den Zustand der SELinux Booleans. Dies ist eine Liste
von dict
, wobei jedes dict
im gleichen Format wie das
seboolean
Modul verwendet wird.
selinux_booleans:
- name: samba_enable_home_dirs
state: true
- name: ssh_sysadm_login
state: true
persistent: true
selinux_fcontexts
Verwalten Sie den Zustand der SELinux-Dateikontextzuweisungen. Dies ist eine Liste
von dict
, wobei jedes dict
im gleichen Format wie das
sefcontext
Modul verwendet wird.
selinux_fcontexts:
- target: '/tmp/test_dir(/.*)?'
setype: 'user_home_dir_t'
ftype: d
state: present
Benutzer können auch die folgenden optionalen Parameter übergeben:
seuser
: um den SELinux-Benutzer festzulegenselevel
: um den MLS/MCS-Sicherheitsbereich einzustellen (nur MLS/MCS-Systeme). Der SELinux-Bereich für die SELinux-Benutzerzuordnung hat standardmäßig den Bereich des SELinux-Benutzerkontos.
Einzelne Modifikationen können gelöscht werden, indem state
auf absent
gesetzt wird.
selinux_ports
Verwalten Sie den Zustand der SELinux-Portrichtlinie. Dies ist eine Liste
von dict
, wobei jedes dict
im gleichen Format wie das
seport
Modul verwendet wird.
selinux_ports:
- ports: 22100
proto: tcp
setype: ssh_port_t
state: present
local: true
selinux_restore_dirs
Dies ist eine Liste
von Strings, wobei jeder String ein Verzeichnis im Dateisystem ist, in dem Sie restorecon
ausführen möchten:
selinux_restore_dirs:
- /tmp/test_dir
selinux_logins
Verwalten Sie die Zuordnung von Linux-Benutzern zu SELinux-Benutzern. Dies ist eine Liste
von dict
, wobei jedes dict
im gleichen Format wie das
selogin
Modul verwendet wird.
selinux_logins:
- login: plautrba
seuser: staff_u
state: absent
- login: default
seuser: staff_u
serange: s0-s0:c0.c1023
state: present
selinux_modules
Es ist möglich, SELinux-Module mit der Variable selinux_modules
zu verwalten, die eine Liste
von dict
enthält, z. B.:
selinux_modules:
- path: localmodule.pp
state: enabled
- path: localmodule.cil
priority: 350
state: enabled
- name: unconfineduser
state: disabled
- name: localmodule
priority: 350
state: absent
path
: eine lokale Moduldatei (entweder .cil oder .pp), die auf einem Knoten installiert werden soll und zur Installation neuer Module verwendet wird.name
: Modulname, der zum Aktivieren deaktivierter Module, Deaktivieren aktivierter Module oder Entfernen von Modulen verwendet wird.priority
: Priorität des SELinux-Moduls, Standard ist "400". "100" wird für Module verwendet, die aus selinux-policy Paketen installiert werden, "200" für andere Module, die aus 3rd-Party-RPMs installiert werden, "300" wird von SETroubleshoot verwendet.state
: einer der folgenden Werteenabled
: Modul installieren oder aktivierendisabled
: Modul deaktivierenabsent
: Modul entfernen
Hinweis: Das Erstellen von Modulen aus dem Quellcode auf Knoten wird nicht unterstützt. In vielen Fällen könnte ein binäres pp oder cil Modul auf verschiedenen Systemen verwendet werden, wenn alle Systeme die verwendeten Typen, Klassen und Berechtigungen unterstützen. Im Fall eines pp Moduls muss es auch mit der niedrigsten unterstützten policydb Modulversion auf Zielsystemen erstellt werden, d. h. auf dem ältesten System.
Hinweis: Modulprioritäten werden in Red Hat Enterprise Linux 6 ignoriert.
Hinweis: Die Verwaltung von Modulen ist idempotent nur auf Fedora und EL 8.6 und später. Sie können Module in älteren Versionen verwalten, jedoch ist es nicht idempotent.
selinux_transactional_update_reboot_ok
Diese Variable wird verwendet, um Neustarts zu verwalten, die von transaktionalen Updates erforderlich sind. Wenn ein transaktionales Update einen Neustart erfordert, wird die Rolle mit dem Neustart fortfahren, wenn selinux_transactional_update_reboot_ok
auf true gesetzt ist. Wenn es auf false gesetzt ist, wird die Rolle den Benutzer darauf hinweisen, dass ein Neustart erforderlich ist, was eine benutzerdefinierte Handhabung der Neustartanforderung ermöglicht. Wenn diese Variable nicht gesetzt ist, wird die Rolle fehlschlagen, um sicherzustellen, dass die Neustartanforderung nicht übersehen wird.
selinux_transactional_update_reboot_ok: true
Ansible Fakten
selinux_reboot_required
Dieses benutzerdefinierte Faktum wird auf true
gesetzt, wenn ein Neustart des Systems erforderlich ist, wenn SELinux von disabled
auf enabled
oder umgekehrt gesetzt wird. Andernfalls wird das Faktum auf false
gesetzt. Falls ein Systemneustart erforderlich ist, wird dies durch einen Fehlerrückgabewert der Rolle angezeigt, der mit einer block:
...rescue:
-Konstruktion behandelt werden muss. Der Neustart muss im Playbook durchgeführt werden, die Rolle selbst startet den verwalteten Host nie neu. Nach dem Neustart muss die Rolle erneut angewendet werden, um die Änderungen abzuschließen.
selinux_installed_modules
Dieses benutzerdefinierte Faktum stellt die Struktur des SELinux-Modul-Store dar.
"selinux_installed_modules": {
<Modulname>: {
<Modulpriorität>: ("enabled"|"disabled"),
...
},
...
}
z. B.
"ansible_facts": {
"selinux_installed_modules": {
"abrt": {
"100": "enabled",
"400": "disabled"
},
"accountsd": {
"100": "enabled"
},
"acct": {
"100": "enabled"
}
}
}
HINWEIS: Die Modulpriorität wird auf "0" gesetzt, wenn Prioritäten nicht unterstützt werden, z. B. in Red Hat Enterprise Linux 6.
Beispiele
Die allgemeine Verwendung wird im selinux-playbook.yml Playbook demonstriert.
rpm-ostree
Siehe README-ostree.md