RSBAC è un framework open source per il controllo degli accessi, flessibile, potente e veloce per i kernel Linux di uso corrente, rilasciato in versione stabile dal gennaio 2000 (versione 1.0.9a). Lo sviluppo completo è stato fatto indipendentemente, non usando nessun codice di controllo degli accessi preesistente.
Il pacchetto standard contiene una vasta gamma di modelli di controllo degli accessi come MAC, RC, ACL (si veda di seguito). Inoltre, la possibilità di registrazione in fase di esecuzione, o "runtime" (REG) rende semplice implementare moduli di controllo proprietari, trattandoli come fossero moduli del kernel caricabili runtime.
Il framework RSBAC è descritto in modo esteso nel documento
Le decisioni prese sono basate sul tipo di accessi (tipo di richieste), sul
target cui si accede e sui valori degli attributi associati a tali chiamate e
target. Altri attributi indipendenti possono essere usati da moduli individuali,
es. dal Privacy Module (
Ogni tipo di accesso alla rete può essere controllato individualmente per tutti gli utenti e i programmi. Questo dà il pieno controllo sul comportamento in rete e rende più semplice la prevenzione e l'identificazione degli accessi di rete illegali.
Siccome tutti i tipi di decisione di accesso sono basati su richieste generiche di decisione, politiche di sicurezza diverse possono essere implementate mediante singoli moduli decisionali. A parte i modelli nativi mostrati di seguito, l'opzione Module Registration (REG) permette di registrare moduli di decisione addizionali personalizzati al runtime.
Nella versione 1.2.5 di RSBAC, sono inclusi i seguenti moduli. Si noti che tutti quanti sono opzionali.
Bell-LaPadula Mandatory Accessi Control Module
Modello User Management. In RSBAC esso è basato sul kernel ed è complementare o rimpiazza totalmente il sottosistema Linux. L'amministrazione degli utenti è rinforzato da granularità e flessibilità.
Privacy Model. Il modello di
Questo non è un vero e proprio modello di controllo degli accessi, ma piuttosto un modulo di protezione del sistema contro il malware. L'esecuzione e la lettura dei file infettati da malware può essere prevenuta.
Modello File Flags. Provvede e usa flag per directory e file, al momento execute_only (file), read_only (file e directory), search_only (directory), secure_delete (file), no_execute (file), add_inherited (file e directory), no_rename_or_delete (file e directory, nessuna ereditarietà) e append_only (file e directory). Solo gli addetti alla sicurezza FF possono modificare queste flag.
Modello Role Compatibility. Definisce ruoli e tipi per ogni target (file, dir,
dev, ipc, scd, process) del sistema. Per ciascun ruolo, la compatibilità con i
rimanenti e con tutti i tipi può essere personalizzata con la granularità
desiderata. Per l'amministrazione c'è un'ottima e granulare separazione dei
compiti. I diritti possono avere durata temporale limitata. Il modello e le
specifiche di implementazione sono descritte nell'articolo
Modello Authorization enforcement. Controlla tutte le richieste di CHANGE_OWNER per processi target, e solo programmi/processi che hanno il permesso di eseguire il generico setuid e quelli che lo hanno per il target user ID possono eseguire di fatto questo comando. La capacità di esecuzione di setuid può essere controllata da altri programmi/processi, es. demoni di autenticazione.
Modello Access Control Lists. In questo modello, per ogni oggetto esiste una Lista di Controllo degli Accessi, che definisce quali soggetti possono accedere ad un oggetto prefissato e con quali tipi di richiesta. I soggetti possono essere di tipo user, ruolo RC e gruppo ACL. Gli oggetti sono raggruppati mediante tipo di target, ma hanno liste personalizzate. Se non esiste nessuna voce nella lista di un dato oggetto relativa a un dato soggetto, i diritti sono "ereditati" da oggetti "genitori", filtrati da una maschera di "ereditarietà". Diritti diretti (user) e indiretti (role, group) sono cumulabili. Per ogni tipo di oggetto esiste una ACL predefinita all'apice della gerarchia prefissata. La gestione dei gruppi è stata aggiunta nella versione 1.0.9a. Sia diritti che appartenenza a un dato gruppo possono avere durata temporale limitata.
Modello Linux Capabilities. Per ogni utente e programma si possono definire un insieme minimo e uno massimo di capacità, in termini di possibilità di esecuzione di chiamate al sistema con aspetti di sicurezza, in ambiente Linux ("insieme dei diritti speciali di root"). Ciò permette ad esempio di eseguire programmi server a semplici utenti, o di restringere i diritti dei programmi di root nella maniera standard possibile in ambiente Linux.
Modello Process Jails. Questo modello aggiunge una nuova chiamata di sistema, la rsbac_jail, che è fondamentalmente un insieme maggiorato delle chiamate di sistema jail di FreeBSD. Esso incapsula il processo chiamante e tutti i sottoprocessi in un ambiente chroot con indirizzo IP prefissato e molte ulteriori restrizioni.
Modello Linux Resources. Per ogni utente e ogni programma si possono definire un insieme minimo e uno massimo di risorse usabili dai processi generati in ambiente Linux (ad esempio formato di memoria, numero di file aperti, numero di processi per utente). Internamente questi insiemi sono usati come dato per impostare le flag standard per le risorse in ambiente Linux.
Tutti i modelli di decisione sono trattati in dettaglio nella relativa pagina di descrizione.
L'obiettivo generale del progetto RSBAC è quello di raggiungere un giorno il livello B1 dell'(obsoleto) Orange Book (TCSEC).