Introduzione

Security Enhanced Linux o SELinux è un meccanismo di sicurezza integrato nel kernel Linux utilizzato dalle distribuzioni basate su RHEL.

SELinux aggiunge un ulteriore livello di sicurezza al sistema consentendo agli amministratori e agli utenti di controllare l'accesso agli oggetti in base alle regole dei criteri.

Le regole della politica di SELinux specificano come i processi e gli utenti interagiscono tra loro e come i processi e gli utenti interagiscono con i file. Quando non esiste alcuna regola che consenta esplicitamente l'accesso a un oggetto, ad esempio per un processo che apre un file, l'accesso viene negato.

SELinux ha tre modalità di funzionamento:

  • Enforcing: SELinux consente l'accesso in base alle regole della politica SELinux.
  • Permissive: SELinux registra solo le azioni che sarebbero state negate se eseguite in modalità esecutiva. Questa modalità è utile per il debug e la creazione di nuove regole dei criteri.
  • Disabled: nessun criterio SELinux viene caricato e nessun messaggio viene registrato.

Per impostazione predefinita, in CentOS 8, SELinux è abilitato e in modalità di applicazione. Si consiglia vivamente di mantenere SELinux in modalità di applicazione. Tuttavia, a volte può interferire con il funzionamento di alcune applicazioni ed è necessario impostarlo sulla modalità permissiva o disabilitarlo completamente.

In questo tutorial, spiegheremo come disabilitare SELinux su CentOS 8.

Prerequisiti

Solo l'utente root o un utente con privilegi sudo può cambiare la modalità SELinux.

Verifica della modalità SELinux

Utilizzare il comando sestatus per verificare lo stato e la modalità in cui è in esecuzione SELinux:

sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31

L'output sopra mostra che SELinux è abilitato e impostato in modalità di applicazione.

Modifica della modalità SELinux su Permissive

Se abilitato, SELinux può essere in modalità esecutiva o permissiva. Puoi cambiare temporaneamente la modalità da mirata a permissiva con il seguente comando:

sudo setenforce 0

Tuttavia, questa modifica è valida solo per la sessione di runtime corrente e non persiste tra i riavvii.

Per impostare permanentemente la modalità SELinux su permissiva, seguire i passaggi seguenti:

Apri il /etc/selinux/config file e imposta la mod SELINUX su permissive:

sudo vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Salvare e chiudere il file ed eseguire il comando setenforce 0 per modificare la modalità SELinux per la sessione corrente:

sudo shutdown -r now

Disabilitare SELinux

Invece di disabilitare SELinux, si consiglia di cambiare la modalità in permissiva. Disabilitare SELinux solo quando richiesto per il corretto funzionamento dell'applicazione.

Eseguire i passaggi seguenti per disabilitare SELinux sul sistema CentOS 8 in modo permanente:

Apri il file /etc/selinux/config e modifica il valore SELINUX in disabled:

sudo vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted

Salvare e chiudere il file e riavviare il sistema:

sudo shutdown -r now

All'avvio del sistema, utilizzare il comando sestatus per verificare che SELinux sia stato disabilitato:

sestatus

L'output dovrebbe essere simile al seguente:

SELinux status:                 disabled

Conclusione

SELinux è un meccanismo per proteggere un sistema implementando il controllo di accesso obbligatorio (MAC). SELinux è abilitato di default sui sistemi CentOS 8, ma può essere disabilitato modificando il file di configurazione e riavviando il sistema.