SELinux

Fedora CoreOS viene fornito con SELinux abilitato in modalità enforcing.

Modifiche delle politicy

La modifica dei booleani delle politiche e l’aggiunta di moduli SELinux sono supportate in Fedora CoreOS. Tuttavia, non includiamo semanage e non esiste una funzionalità semplificata in Butane o supporto diretto in Ignition per eseguire queste operazioni. Vedi fedora-coreos-tracker#701 per maggiori dettagli.

Ecco un esempio per impostare un booleano SELinux tramite un’unità systemd che viene eseguita ad ogni avvio:

Configurazione Butane di esempio per applicare dinamicamente un booleano SELinux
variant: fcos
version: 1.6.0
systemd:
  units:
    - name: setsebool.service
      enabled: true
      contents: |
        [Service]
        Type=oneshot
        ExecStart=setsebool container_manage_cgroup true
        RemainAfterExit=yes
        [Install]
        WantedBy=multi-user.target

Ripristino della policy SELinux ai valori predefiniti

Se riscontri problemi imprevisti con SELinux, potrebbero essere dovuti a modifiche locali delle politicy.

Esempio di denial SELinux
systemd-resolved[755]: Failed to symlink /run/systemd/resolve/stub-resolv.conf: Permission denied
audit[755]: AVC avc:  denied  { create } for  pid=755 comm="systemd-resolve" name=".#stub-resolv.confc418434d59d7d93a" scontext=system_u:system_r:systemd_resolved_t:s0 tcontext=system_u:object_r:systemd_resolved_var_run_t:s0 tclass=lnk_file permissive=0

Puoi controllare lo stato della policy SELinux con:

$ sudo ostree admin config-diff | grep -E 'selinux/.*/policy'
M    selinux/targeted/active/policy.linked
M    selinux/targeted/active/policy.kern
M    selinux/targeted/policy/policy.31
A    selinux/targeted/policy/policy.30

Se questo comando restituisce un elenco di voci, allora la tua politicy SELinux è stata modificata rispetto a quella predefinita.

Hai due opzioni per ripristinare la politicy SELinux a quella predefinita:

  • Ridistribuisci il sistema dagli ultimi artefatti Fedora CoreOS.

  • Ripristina manualmente la policy predefinita

Per ripristinare la politicy predefinita:

  1. Crea un backup della tua policy corrente:

    sudo cp -al /etc/selinux{,.bak}
  2. Ripristina la policy SELinux predefinita:

    sudo rsync --archive --links --verbose --delete /usr/etc/selinux/ /etc/selinux/

    Dopo questo comando, l’output di sudo ostree admin config-diff | grep -E 'selinux/.*/policy' non dovrebbe più indicare che la policy è stata modificata.

  3. Infine, ricarica la policy SELinux o riavvia il tuo sistema:

    sudo semodule -R

Disabilitazione di SELinux

Non supportiamo la disabilitazione di SELinux in Fedora CoreOS. Vedi rpm-ostree#971. Vedi anche la discussione in fedora-coreos-docs#439.

Impostare SELinux in modalità permissiva

Non consigliamo di impostare l’intero sistema in modalità permissiva (cioè set enforce 0). Invece, puoi impostare SELinux in modalità permissiva per una singola applicazione creando un [modulo di politica CIL] (https://github.com/SELinuxProject/selinux-notebook/blob/main/src/cil_overview.md).

Ad esempio per il dominio wireguard_t:

$ cat permissive-wireguard.cil
(typepermissive wireguard_t)

Puoi quindi caricare questo modulo con:

sudo semodule -i permissive-wireguard.cil

E rimuoverlo una volta che non è più necessario con:

sudo semodule -r permissive-wireguard

Vedi anche la discussione in fedora-coreos-docs#439.