Capitolo 21. SELinux

Security-Enhanced Linux, o SELinux, rappresenta un'architettura creata per aumentare la sicurezza del vostro sistema, ed è integrata all'interno del kernel di 2.6.x utilizzando linux security modules (LSM). È un progetto ideato dalla United States National Security Agency (NSA) e dalla community SELinux. L'integrazione di SELinux su Red Hat Enterprise Linux è stata resa possibile grazie allo sforzo congiunto tra la NSA e Red Hat.

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.