linux-system-roles.selinux

SELinux

ansible-lint.yml ansible-test.yml codeql.yml markdownlint.yml python-unit-test.yml tft.yml tft_citest_bad.yml woke.yml

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 Booleans
  • selinux_fcontexts_purge - SELinux Dateikontexte
  • selinux_ports_purge - SELinux Ports
  • selinux_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 festzulegen
  • selevel: 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 Werte
    • enabled: Modul installieren oder aktivieren
    • disabled: Modul deaktivieren
    • absent: 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

Installieren
ansible-galaxy install linux-system-roles.selinux
Lizenz
gpl-3.0
Downloads
153.5k