Oggi sono lieto di ripubblicare un articolo interessante di Adrian Stolarski già pubblicato su Infosec, una grande fonte di informazioni sulla sicurezza.
E’ una buona sintesi dei diversi tipi di modelli di sicurezza che si possono avere in un sistema Linux, focalizzato su SELinux, e se siete interessati a questo argomento,date un’occhiata anche alla mia Introduzione ad AppArmor
Un compito di qualsiasi sistema operativo è quello di fornire software per aumentare la sicurezza del sistema. Molti programmi di questo tipo sono stati creati; alcuni sono migliori di altri. Cosa è disponibile su Linux? Naturalmente, abbiamo molte scelte quando si tratta di questi tipi di software, ma vale la pena raccomandare alcuni software. Alcune persone sanno già cosa voglio dire: SELinux. Perché scegliere questa soluzione? Perché penso che sia così diverso dagli altri software di questo tipo? E l’ultima domanda fondamentale: chi in realtà dovrebbe utilizzarlo?
Questo sistema, come il nome suggerisce sta per Security Enhanced Linux. Quindi vi invito a leggere questo articolo e conoscere questo strumento.
Cos’è SELinux e da dove proviene?
Volete una definizione di libro? Ok, nessun problema. SELinux è un sistema MAC, o Mandatory Access Control. Implementa una politica di sicurezza chiamata RBAC, Role-Based Access Control. Questa politica è attuata da DTAC, che è il controllo di accesso a tipizzazione dinamica, che si traduce anche come il nome di dominio del sistema di controllo accessi. Certo, suona un po’ sconcertante. Ma in pratica, è davvero molto semplice. È solo la teoria che sembra molto complicata.
E ora è di qualcosa fi molto più semplice: un po’ di storia di SELinux Tutti i lavori su SELinux sono sponsorizzati dalla National Security Agency. Il denaro va alla squadra che sta lavorando su SELinux, la Secure Computing Corp. Si noti che questa società possiede anche tutti i brevetti per il software. L’idea di SELinux, un prodotto che tutti oggi conoscono, non è nuova, ma ha 20 anni. Nel 1992, una nuova idea per la sicurezza fece partire un progetto chiamato Distributed Trusted Match. Il progetto ha sviluppato alcune soluzioni innovative, che sono diventati parte di un sistema operativo chiamato Fluke. Fluke evoluta in Flux, ha portato allo sviluppo dell’architettura Flask. L’architettura Flask è stata poi integrata con il kernel di Linux, e l’intero progetto appena creato è stato chiamato SELinux. Come è potuto succedere?
SELinux è stato il primo progetto di sicurezza nella storia degli scienziati del NSA. Gli Scienziati NSA sono stati i primi ad aver notato che i sistemi operativi tradizionali non hanno una garanzia necessaria per imporre il controllo dell’accesso e la separazione delle informazioni privilegiate sui requisiti di coerenza. Il risultato è che la maggior parte dei meccanismi di sicurezza sono vulnerabili alla manipolazione e movimentazione, che comporta una cascata di conseguenze. La scelta di Linux come sistema per il progetto sulla sicurezza del NSA non è stato casuale. Linux è stato scelto a causa di due caratteristiche principali:
• crescente popolarità
• ambiente di sviluppo aperto
L’intenzione del NSA era di presentare una funzionalità che potesse funzionare sui sistemi operativi esistenti e allo stesso tempo avere la possibilità di contribuire al miglioramento della sicurezza dei sistemi operativi più comunemente usati. Il progetto che è stato registrato come SELinux è il risultato di diversi progetti precedenti del NSA.
Il lavoro degli scienziati della NSA (cioè ricercatori sponsorizzati dalla NSA), non aveva lo scopo di risolvere i problemi esistenti di sicurezza e SELinux non è in alcun modo un tentativo di migliorare la sicurezza in Linux. I cambiamenti in Linux coprivano solo l’introduzione di nuovi meccanismi.
Cosa si nasconde nel cuore di SELinux?
In effetti, tre elementi di questo sistema dovrebbero attirare la nostra attenzione. Il primo è il kernel. In un primo momento, SELinux è stato provato su diversi kernel, ma oggi la completa infrastruttura di SELinux utilizza il kernel Linux. E’, ovviamente, leggermente modificata e si chiama LSM, Linux Security Modules. Questa infrastruttura fornisce tutte le interfacce possibili che consentono di controllare completamente l’accesso a tutti gli oggetti di sistema quando vengono avviate dalle azioni degli utenti. Questi sono, per esempio, l’apertura di un file, la creazione di una nuova cartella, o il mettere un demone in ascolto su una porta. Come funziona? Beh, SELinux si collega semplicemente all’interfaccia e impone l’uso di una politica di sicurezza al sistema. Dal punto di vista del amministratore che installa SELinux, questo sistema è semplicemente una caratteristica del kernel.
Il secondo elemento che mi preme sottolineare è che i programmi chiave sono modificati. Come funziona in pratica? Nella maggior parte dei casi, SELinux permette a tutti i programmi di avere un po’ di libertà. Non hanno bisogno di capire che SELinux non è solo Linux. Ma, in ogni sistema operativo ci sono alcuni sistemi software critici che devono sempre essere estesi per supportare SELinux. Questi programmi sono essenzialmente ssh
, ls
, ps
, xdm
, o login
. E qui di nuovo c’è un ruolo per il Linux. Durante l’installazione o download, le versioni modificate di questi programmi sono necessarie o delle patch di sicurezza devono essere applicata ai programmi sorgente per garantire la sicurezza del sistema.
La terza ed ultima cosa che distingue SELinux sono le sue regole, o la politica. Qual è il loro ruolo? Essi definiscono i diritti di accesso, il diritto di svolgere attività nel sistema, e il comportamento del sistema di SELinux. Anche se le ho messe per terze, esse sono la cosa più importante. Queste regole determinano l’azione efficace del sistema. Gran parte di questo articolo sarà dedicato alla scrittura delle regole e il modo in cui sono costruite nel sistema. La verità è che gli amministratori di sistema, non dovrebbero essere tenuti a scrivere le proprie regole per la politica, a meno che non ci siano requisiti personalizzati.
Tuttavia, ogni amministratore deve avere la consapevolezza che gli permetterà di modificare le regole in base alle esigenze del sistema. Oltre a conoscere qualcosa ed essere in grado di usare le conoscenze, è necessario capire tutte le regole che già esistono nel sistema operativo.
Come capire davvero la dannata cosa chiamata MAC?
Cerchiamo di vedere esattamente ciò che significa per noi come amministratori che SELinux funziona come MAC. Bene, sono riuscito a trovare il principio fondamentale, applicabile a tutti i sistemi che utilizzano MAC. A mio parere, dovrebbe essere questo: nessuno degli utenti del sistema ha il diritto di decidere in alcun modo la sicurezza ei diritti di accesso agli oggetti del sistema. Tutti questi diritti e la sicurezza devono sempre essere definiti secondo i criteri di protezione del sistema. Nel caso di SELinux, dovrebbero riflettersi in tutte le regole della politica.
La politica MAC da sola è molto spesso confusa con le ACL. I fatti confutano molto velocemente questo mito. In realtà, ACL non porta la politica MAC. Queste liste hanno anche un altro svantaggio. In pratica, esse sono molto complicato in termini di configurazione e correttezza del mantenimento. Si può anche dire che sono diverse in termini di azione. Le ACL specificano sempre i casi d’uso individuali, mentre il MAC imposta sempre i principi generali.
In realtà, il supporto ACL è stato ritirato dal kernel Linux dalla versione 2.4.x . Perché questo è accaduto? Poiché gli sviluppatori del kernel Linux hanno deciso che le ACL non erano davvero un buon modo per controllare i poteri e le azioni dell’utente nel sistema operativo. Nonostante questo, tali liste sono a volte utilizzati. Per esempio, se abbiamo un server Samba, esse sono spesso utilizzati, in quanto consentono di impostare le autorizzazioni per tutti i file dal client di Microsoft Windows.
Un’altra scorciatoia o DTAC
Come detto prima, DTAC sta per Dynamically Typed Access Control, ma è spesso tradotta con il nome di dominio del sistema di controllo accessi. Concentriamoci sulle caratteristiche reali di DTAC.
Nel caso di DTAC, ciascuno degli oggetti nel sistema, se è una directory, porta, o qualsiasi dispositivo, ha il proprio tipo unico. Che cosa significa questo in pratica? Alcune regole top-down sono sempre legate ai tipi di oggetto. Queste regole non sono in alcun modo dipendenti dalla decisione dell’utente, ma l’amministratore di sistema crea e controlla la politica. Ciò significa che in qualsiasi sistema che utilizza un DTAC, è possibile creare un numero qualsiasi di regole, mille o un milione, e il sistema è sempre pronto.
Inoltre, il sistema dispone di un intero insieme di regole su come intervenire su tutti gli oggetti di ogni tipo. Infatti, nel caso di DTAC, controllo e test di convalida di tutte le regole sono molto più facili che in altri casi. Come curiosità, vorrei ricordare che IBM ha sviluppato uno strumento, il cui compito principale è quello di controllare automaticamente la coerenza e la precisione della politica di sicurezza DTAC.
Altro principio pesante, il RBAC
Come detto prima, RBAC è l’acronimo di Role Based Access Control. Si può riconoscere che si tratta di un sistema di controllo basato sui ruoli utente all’accesso nel sistema. Questo termine non è usato spesso. Dove si può trovare? Beh, qualsiasi sistema standard Unix o Linux è dotato di controllo di accesso basato sui ruoli. E la verità è che se si guarda da vicino il sistema UNIX, i ruoli sono sempre divisi. Ci sono sempre alcuni tipi di utenti del sistema, ciascuno dei quali è autorizzato ad esercitare una gamma molto limitata di attività. Questo significa che ognuno di loro svolge un ruolo all’interno del sistema UNIX.
C’è un altro elemento che qualifica un sistema standard UNIX per diventare un sistema con RBAC integrato. C’è qualcosa chiamato SUID. Come tutti probabilmente sanno, tramite SUID è possibile modificare il ruolo dell’utente e le azioni che possono essere eseguite dall’utente.
Come funziona tutto questo con SELinux? Beh, è si dovrebeb dire che è un sistema SELinux RBAC con regole costruite che vengono attuate da DTAC. Il sistema SELinux estende anche quella che viene chiamata la filosofia del SUID. Quindi, può anche estendere la comprensione del ruolo degli utenti nel sistema. Per riassumere rapidamente: un sistema SELinux è progettato per consentire in un modo molto più flessibile, che è anche più preciso e molto più adatta alle esigenze, per individuare e contribuire all’attuazione dei ruoli utente all’interno del sistema.
Riepilogo
Questo è in realtà solo una breve introduzione a SELinux. L’articolo descrive le basi del meccanismo utilizzato su base giornaliera in questo sistema. Si continua a non fare niente di speciale, ma il desiderio di scrivere un riassunto di ciò che mi sta affascinato. Sul nostro sito web, con SELinux spesso catturiamo 50 correzioni critiche per il sistema di sicurezza in un tempo molto breve, meno di sette giorni. Un altro vantaggio decisivo è la sua facilità d’uso. Come amministratore di sistema Linux, non ho mai incontrato uno strumento che utilizza tali semplici regole, ma descrive così tanto. Tuttavia, pochissimi amministratori finora conoscono il sistema SELinux.
Popular Posts:
- None Found
thanks for your article!
i hope you’ll write also something about tomoyo: http://tomoyo.sourceforge.jp/index.html.en
Thanks for the link Paolo, I never heard of tomoyo before.