Amministrazione di SELinux in Oracle Linux

Descrive SELinux e fornisce indicazioni per l'amministrazione di SELinux in Oracle Linux.

La sicurezza Linux tradizionale si basa su un criterio DAC (Discretionary Access Control). Nel modello DAC di sicurezza del sistema, l'accesso a risorse come file e processi si basa esclusivamente sull'identità e sulla proprietà dell'utente. Se il malware o il software rotto è presente sul sistema, può fare qualsiasi cosa con i file e le risorse che l'utente che ha avviato il processo ha l'autorizzazione a fare. Se l'utente è root o l'applicazione è in esecuzione con privilegi elevati (setuid o da setgid a root), il processo dispone del controllo dell'accesso root sull'intero file system.

Per risolvere questo problema, la National Security Agency ha creato Security Enhanced Linux (SELinux) per fornire un maggiore livello di controllo su file, processi, utenti e applicazioni nel sistema operativo Linux. Il miglioramento di SELinux al kernel Linux implementa il criterio di controllo dell'accesso obbligatorio (MAC, Mandatory Access Control), che consente di definire un criterio di sicurezza che configura autorizzazioni granulari per tutti gli utenti, i programmi, i processi, i file e i dispositivi. Le decisioni relative al controllo dell'accesso del kernel si basano sulla sensibilità delle risorse dal punto di vista della sicurezza e non solo sull'identità utente autenticata.

Quando si verifica l'accesso relativo alla sicurezza, ad esempio quando un processo apre un file, SELinux intercetta il funzionamento nel kernel. Se una regola dei criteri MAC consente l'operazione, continua. In caso contrario, SELinux blocca l'operazione e restituisce un errore al processo. Il kernel controlla e applica le regole dei criteri DAC prima delle regole MAC, pertanto non controlla le regole dei criteri SELinux se le regole DAC hanno già negato l'accesso a una risorsa.

Descrizioni dei pacchetti SELinux

SELinux contiene diversi pacchetti, ciascuno dei quali contiene utility specifiche che è possibile utilizzare per amministrare SELinux su sistemi Oracle Linux. Alcuni pacchetti vengono installati per impostazione predefinita, mentre altri sono opzionali.

Nella tabella seguente sono elencati i pacchetti SELinux installati per impostazione predefinita con Oracle Linux.

Pacchetto

Descrizione

policycoreutils

Fornisce utility quali load_policy, restorecon, secon, setfiles, semodule, sestatus e setsebool per il funzionamento e la gestione di SELinux.

libselinux

Fornisce l'API utilizzata dalle applicazioni SELinux per ottenere e impostare contesti di sicurezza di processi e file e per ottenere decisioni sui criteri di sicurezza.

python3-libselinux

Contiene associazioni Python per lo sviluppo di applicazioni SELinux.

selinux-policy

Fornisce il criterio di riferimento SELinux, che viene utilizzato come base per altri criteri, ad esempio il criterio di riferimento SELinux.

selinux-policy-targeted

Fornisce il criterio di destinazione SELinux, in cui gli oggetti esterni ai domini di destinazione vengono eseguiti in DAC.

libselinux-utils

Fornisce le utility avcstat, getenforce, getsebool, matchpathcon, selinuxconlist, selinuxdefcon, selinuxenabled e setenforce.

Nella tabella seguente sono elencati i pacchetti SELinux utili non installati per impostazione predefinita. Installare tutti i pacchetti richiesti utilizzando il comando dnf.

Pacchetto

Descrizione

mcstrans

Traduce i livelli di SELinux, ad esempio s0-s0:c0.c1023, in un formato più facile da leggere, ad esempio SystemLow-SystemHigh.

policycoreutils-python-utils

Fornisce utility Python per il funzionamento di SELinux, ad esempio audit2allow, audit2why, chcat e semanage.

policycoreutils-sandbox

Fornisce la utility sandbox per la creazione di sandbox SELinux per l'esecuzione di comandi in un dominio SELinux strettamente limitato.

selinux-policy-mls

Fornisce un rigoroso criterio di sicurezza multilivello (MLS) in alternativa al criterio di destinazione SELinux.

selinux-policy-doc Fornisce pagine manuali per molti elementi dei criteri SELinux.

setroubleshoot

Consente di visualizzare i messaggi setroubleshoot-server utilizzando il comando sealert.

setroubleshoot-server

Traduce i messaggi di negazione dell'accesso da SELinux in descrizioni dettagliate che è possibile visualizzare sulla riga di comando utilizzando il comando sealert.

setools-console

Fornisce la distribuzione di strumenti e librerie Tresys Technology SETools, che è possibile utilizzare per analizzare e interrogare i criteri, monitorare e segnalare i log di audit e gestire il contesto dei file.

Per ulteriori informazioni, vedere SELinux Project Wiki per la documentazione della community e le pagine del manuale dei comandi selinux(8) e di altro tipo su SELinux.

Utility SELinux

Nella tabella seguente sono descritte le utility principali che è possibile utilizzare per amministrare SELinux e i pacchetti che li contengono.

Utility

Pacchetto

Descrizione

audit2allow

policycoreutils-python-utils

Genera le regole del criterio allow di SELinux (e le voci dontaudit facoltative) dai log di controllo delle operazioni negate.

audit2why

policycoreutils-python-utils

Analizza i log di negazione per spiegare perché l'accesso è stato bloccato e consiglia le modifiche SELinux pertinenti.

avcstat

libselinux-utils

Visualizza le statistiche per la cache vettoriale di accesso SELinux (AVC).

chcat

policycoreutils-python-utils

Modifica o rimuove la categoria di sicurezza per un file o un utente.

chcon

coreutils

Modifica il contesto SELinux di file e directory.

fixfiles

policycoreutils

Corregge il contesto di sicurezza per i file system.

getenforce

libselinux-utils

Segnala la modalità SELinux corrente.

getsebool

libselinux-utils

Riporta i valori booleani di SELinux.

load_policy

policycoreutils

Carica un nuovo criterio SELinux nel kernel.

matchpathcon

libselinux-utils

Esegue una query sul criterio di sistema e visualizza il contesto di sicurezza predefinito associato al percorso del file.

restorecon

policycoreutils

Reimposta il contesto di sicurezza su uno o più file.

restorecond

policycoreutils

Daemon che controlla la creazione dei file e imposta il contesto file predefinito.

runcon

coreutils

Esegue un comando nel contesto specificato.

sandbox

policycoreutils-sandbox

Esegue un comando all'interno di una sandbox SELinux.

sealert

setroubleshoot-server, setroubleshoot

Agisce come interfaccia utente al sistema setroubleshoot per la diagnosi e la spiegazione dei rifiuti AVC SELinux e fornisce suggerimenti su come impedire tali rifiuti.

sechecker

setools-console

Controlla i criteri SELinux.

secon

policycoreutils

Visualizza il contesto SELinux da un file, da un programma o dall'input dell'utente.

sediff

setools-console

Confronta i criteri SELinux.

seinfo

setools-console

Esegue query sui criteri SELinux.

selinuxconlist

libselinux-utils

Visualizza tutti i contesti SELinux raggiungibili da un utente.

selinuxdefcon

libselinux-utils

Visualizza il contesto SELinux predefinito per un utente.

selinuxenabled

libselinux-utils

Indica se SELinux è abilitato.

semanage

policycoreutils-python-utils

Gestisce i criteri SELinux.

semodule

policycoreutils

Gestisce i moduli dei criteri SELinux.

semodule_deps

policycoreutils

Visualizza le dipendenze tra i package dei criteri SELinux.

semodule_expand

policycoreutils

Espande un pacchetto del modulo dei criteri SELinux.

semodule_link

policycoreutils

Collega i package del modulo criteri SELinux.

semodule_package

policycoreutils

Crea un package del modulo criteri SELinux.

sesearch

setools-console

Esegue query sui criteri SELinux.

sestatus

policycoreutils

Visualizza la modalità SELinux e il criterio SELinux in uso.

setenforce

libselinux-utils

Modifica la modalità SELinux.

setsebool

policycoreutils

Imposta i valori booleani in SELinux.

setfiles

policycoreutils

Imposta il contesto di sicurezza per uno o più file.

Impostazione delle modalità SELinux

SELinux viene eseguito in modalità enforcing o permissive:

enforcing

Il kernel nega l'accesso a utenti e programmi se non gli vengono concesse le autorizzazioni dalle regole dei criteri di sicurezza SELinux. Tutti i messaggi di negazione vengono registrati come negazioni AVC (Access Vector Cache). Questa è la modalità predefinita.

permissive

Il kernel non applica le regole dei criteri di sicurezza, ma SELinux invia messaggi di negazione a un file di log. Ciò consente di vedere quali azioni verranno negate se SELinux è in esecuzione in modalità enforcing. Utilizzare questa modalità per implementare SELinux in modo efficace in un sistema.

Per visualizzare la modalità SELinux corrente, eseguire il comando seguente:

getenforce

Per impostare la modalità corrente su enforcing, eseguire il comando seguente:

sudo setenforce enforcing

Per impostare la modalità corrente su permissive, eseguire il comando seguente:

sudo setenforce permissive
Nota

Il valore impostato per una modalità con setenforce non viene mantenuto tra i reboot. Per configurare la modalità SELinux predefinita, modificare il file di configurazione per SELinux, /etc/selinux/config e impostare il valore della direttiva SELINUX su enforcing o permissive.

Disabilitazione di SELinux

È possibile disabilitare completamente SELinux impostando il parametro kernel selinux su zero.

Importante

Oracle sconsiglia di disabilitare SELinux nei sistemi di produzione. Utilizzare invece la modalità permissive.

  1. Impostare il parametro kernel richiesto.

    Utilizzare la utility grubby per impostare il parametro selinux su zero:

    sudo grubby --update-kernel ALL --args selinux=0
  2. Riavviare il sistema.
  3. Verificare che SELinux sia disabilitato.

    Eseguire il comando getenforce e verificare che l'output sia Disabled:

    getenforce
    Disabled
  4. (Facoltativo) Riabilitare SELinux

    Per riabilitare SELinux, immettere il comando seguente e riavviare il sistema:

    sudo grubby --update-kernel ALL --remove-args selinux

Installazione della documentazione dei criteri

SELinux è complesso, con molte opzioni per configurare l'accesso, utilizzando i criteri. È possibile ottenere informazioni dettagliate sui criteri disponibili dalle pagine del manuale fornite dal pacchetto selinux-policy-doc. Questo task mostra come accedere a queste informazioni.

La documentazione sui criteri contiene inoltre informazioni su utenti e ruoli. Ad esempio, è possibile leggere ulteriori informazioni sull'utente user_u senza privilegi di SELinux e sul ruolo user_r nella pagina del manuale user_selinux(8). Nella documentazione dei criteri vengono descritte le limitazioni applicabili a diversi contesti di sicurezza e le opzioni booleane disponibili per personalizzare il criterio per un ambiente.

  1. Installare il pacchetto:
    sudo dnf install -y selinux-policy-doc
  2. Aggiornare il database delle pagine manuali:
    sudo mandb
  3. Sfoglia le pagine del manuale dei criteri SELinux. Per ottenere un elenco completo di tutta la documentazione manuale di SELinux, eseguire le operazioni riportate di seguito.
    man -k _selinux