21.1. Introduzione a SELinux
SELinux fornisce un sistema mandatory access control (MAC) flessibile, ideato all'interno del kernel di Linux. Sotto lo standard di Linux, discretionary access control (DAC), un'applicazione o un processo in esecuzione come un utente (UID o SUID) possiede i permessi dell'utente stesso che la esegue, questo vale per esempio per i file, i socket ed altri processi. L'esecuzione di un kernel MAC di SELinux, protegge il sistema da applicazioni maliziose in grado di poter danneggiare o persino distruggere il sistema stesso. SELinux definisce i diritti di accesso e di transito per ogni utente, applicazione, processo e file presenti sul sistema. SELinux � in grado di governare l'interazione di questi soggetti e oggetti, utilizzando una policy di sicurezza in grado di specificare la restrittivit� o la permissivit� di una installazione di Red Hat Enterprise Linux.
Per la maggior parte dei casi, SELinux � quasi completamente invisibile agli utenti del sistema. Solo gli amministratori devono preoccuparsi d'impiegare una policy restrittiva per i propri ambienti server. Tale policy pu� essere restrittiva o permissiva a seconda delle necessit�, ed � in grado di essere molto dettagliata. Questi dettagli conferiscono al kernel di SELinux, un controllo granulare completo su tutto il sistema.
Quando un'applicazione cerca di accedere un oggetto come ad esempio un file, il server responsabile all'applicazione della policy presente nel kernel, controlla un access vector cache (AVC), dove i permessi degli oggetti e dei soggetti vengono conservati. Se non � possibile prendere una decisione in base ai dati contenuti nella AVC, la richiesta continua fino ad arrivare al server di sicurezza, il quale, a sua volta, controlla il contesto di sicurezza dell'applicazione e del file con una matrice. A quel punto il permesso pu� essere garantito oppure rifiutato, con un messaggio avc: denied, riportato in /var/log/messages. I soggetti e gli oggetti ottengono il proprio contesto di sicurezza tramite una policy installata, la quale fornisce altres� le informazioni per poter popolare la matrice del server di sicurezza.
In aggiunta all'esecuzione in modalit� enforcing, SELinux pu� essere eseguito in modalit� permissiva, dove l'AVC viene controllato, e tutti gli accessi rifiutati vengono registrati, � da ricordare comunque che SELinux di per s�, non applica alcuna policy.
Per maggiori informazioni sul funzionamento di SELinux, consultare la Sezione 21.3.