SlideShare ist ein Scribd-Unternehmen logo
1 von 9
Downloaden Sie, um offline zu lesen
SELinux
                                                     di Maurizio Pagani


1. Introduzione
Il SELinux (Security-Enhanced Linux) è un prodotto di sicurezza creato dalla NSA (National
Security Agency) che gira direttamente nel kernel, implementando così un sistema di
Mandatory Access Control. È un modulo installato di default nel kernel RedHat (Redhat
Enterprise, Fedora, CentOS).


Nei sistemi Unix/Linux si usa un concetto di sicurezza chiamato DAC (Discrectionary Access
Control), Prima di andare avanti spieghiamo la differenza tra DAC e MAC, cosi da poter capire il
perché migrare da un DAC ad un MAC e quindi i motivi che ci giustificano la migrazione di tale
implementazione e l’uso di prodotti come SELinux.


1.1 DAC vs MAC
DAC: Il Discrectionary Access Control è un modello di sicurezza ed è usato nei nostri sistemi
tradizionali quali Solaris/AIX/hp-ux/Linux/BSD e cosi via. Comunemente conosciuto perché i
permessi vengono gestiti via sette bit, ovvero: “rwx” r = 4, w = 2, x = 1.


Vedete l’esempio di un ls –l:




Sulla prima colonna a sinistra troviamo le tre colonne con i sette bit che gestiscono i permessi di
quel file, le colonne come sappiamo, sono in ordine da sinistra verso destra: user-group-other.
Questo concetto quindi è basato sulle ACL (Access Control List).


BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Questo è un sistema del tutto inadeguato per un ambiente dove la sicurezza sta al primo posto,
proprio perché l’unico utente che sarà in grado di fare tutto è “root” ovvero l’amministratore,
mentre gli altri utenti ordinari hanno le stesse grant, e possono essere gestite solo tramite questi
sette bit.


MAC: Il Mandatory Access Control è basato principalmente su due concetti: oggetti (object) e
soggetti (subject). Gli oggetti sono i file, directory e device, mentre i soggetti sono un utente che
avvia un comando, un applicazione, un processo, un thread e via dicendo.


Lo scopo del MAC sta nel controllare che tali subject comunichino con l’object richiesto. Ad
esempio se un utente Apache va ad interagire con il tool postfix c’è qualcosa che non quadra
e quindi viene bloccato. Tutto questo viene gestito tramite le “policy” che è appunto il file dove
inseriremo quale subject può comunicare con quali object.


Faccio un esempio, mettiamo caso che ci sia la necessità di dover configurare l’utente apache
che sia in grado di dover interagire con l’applicazione apache ed i suoi processi, e in tutto
questo nessun’altro potrà, neanche “root”. Faccio notare che non c’è più un livello gerarchico
del tipo: root è l’amministratore e tutto il resto è ordinario, poiché con le policy decidiamo noi
una volta implementate, chi, è proprietario di cosa. Vediamo un esempio di ls –Z con SELinux:




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
1.2 Architettura
Di sotto riporto un esempio dell’architettura di un kernel con SELinux implementato.




2. SELinux Contexts (Contesti SELinux)
Processi e files sono etichettati (labeled) con un SELinux context che contiene tre tipi di
informazioni: SELinux user, role, type e, se disponibile, un livello. Quando SELinux è in running
queste informazioni (context) servono per il controllo degli accessi (access control decisions). In
RedHat Enterprise Linux , SELinux ha i seguenti componenti: Role-Based Access Control (RBAC),
Type Enforcement(TE), e opzionalmente, Multi-Level Security (MLS).


Un esempio di SELinux Contexts:




Spieghiamo la screenshot sopra incollata:
system_u = user
object_r = role
admin_home_t = type
s0 = level syntax




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
SELinux User
Il SELinux user è l’identità specificata all’interno di una policy, è una parte del SELinux contexts al
quale poi viene allegato uno o più ruoli. Un SELinux user non è altro che un Linux user mappato
all’interno del prodotto SELinux, ovviamente per vedere quale utente SELinux è l’equivalente
Linux user esiste un comando che è: semanage login –l.


Vediamo un esempio dell’output:




Dalla prima colonna vediamo il “Login Name” che equivale agli utenti Linux, la seconda
colonna “SELinux User” riporta gli utenti SELinux, la terza ed ultima colonna descrive i livelli
“MLS/MCS Range” Multi-Level Security e Multi-Category Security.


Role (Ruolo)
Come spiegato prima, SELinux ha come componente RBAC (Role-Based Access Control), il ruolo
è un attributo dello stesso, e serve per dare un “ruolo” appunto agli utenti e i ruoli poi vengono
abilitati dai “Domini”, quindi il ruolo fa da intermediario tra domini e SELinux User. Il Ruolo serve
per controllare su che tipo di oggetto è autorizzato ad accedere l’utente.


Type (Tipo)
Il type serve per specificare domini e tipi, la differenza è che un dominio è per i processi, mentre
i tipi sono per i file, tramite la policy se ci sono regole precise, si decide se tali domini possono
accedere altri domini e se tali domini possono accedere ad altri file, quindi immaginate processi
di apache che non possono comunicare con un processo dei terminali, cosi da non rilasciare
shell a utenti applicativi.


Level (Livello)
Il livello è una parte del MLS (Multi-Level Security) e MCS (Multi-Category Security). La sintassi del
MLS è un low-level.high-level se i livelli sono diversi, se invece sono uguali come ad esempio s1.s1
il livello unico è s1.

BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
La coppia è intesa come “sensibilità – categoria”, questo: s0.c0 significa s0 = sensibilità 0 e c0 =
categoria         0,    per      vedere        ogni       categoria         come         è     classificata,       vedere         il   file
/etc/selinux/targeted/setrans.conf.




2.1 Domain Transitions
Una transizione tra domini avviene per gestire il perimetro dei processi/programmi, ad esempio:
un processo sendmail che avrà un dominio sendmail_t non ha senso che comunichi con un
dominio di tipo mount_exec_t (che serve per eseguire il mount di un device).
Il processo per la transizione tra un dominio e l’altro avviene con i seguenti step:


                • Il processo sendmail con dominio sendmail_t avvia una richiesta che richiama il
                comando “mount”;
                • Qui avviene il check da parte del SELinux: controlla la policy e verifica che ci sia
                l’”entrypoint” che dà il permesso ad un dominio di accedere ad un altro;
                • Una volta verificato che l’entrypoint “non esiste” l’accesso non viene consentito
                e la transizione è terminata.


Come già anticipato prima, la transazione tra i due domini sendmail_t e mount_exec_t non è
eseguita poiché non c’è motivo che dialoghino. Questa negazione la troviamo di default
anche nella Targeted Policy che è quella di default su Red Hat Enterprise Linux.




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
2.2 SELinux Contexts for Processes
Per visualizzare il Context dei processi, lanciare il comando “ps –eZ”:




Importante: system_r è il ruolo che la policy Type Enforcement usa per i processi, e tenere
sempre presente che i type sono definiti “domini” per i processi e “type” per i file.




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
2.3 SELinux Contexts for Users
Per vedere il Context per gli utenti lanciare il comando “id –Z”:




3. Amministrazione del servizio SELinux
3.1 Logging
La parte logging su SELinux viene gestita da due demoni, il primo è auditd e l’altro è rsyslogd. Il
file principale è /var/log/audit/audit.log, vediamo un esempio di questo log:




Come potete vedere, si può interpretare senza dare nessuna spiegazione.


3.2 File di configurazione Principale
Il file principale di configurazione del SELinux dove appunto si può settare la policy da usare e il
tipo di livello da usare è /etc/sysconfig/selinux:




Spieghiamo velocemente:
la prima stringa “SELINUX=enforcing” stà ad indicare il livello che deve usare SELinux:



BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
ENFORCING: questo livello viene usato per far si che SELinux applichi le policy sul sistema.
PERMISSIVE: questo livello fa si che SELinux sia impostato in modalità auditing, ovvero non
applica nessuna policy al sistema, ma logga tutto quanto come se fosse attivo. Ottimo per le
operazioni di troubleshooting.


DISABLED: Come dice la parola stessa, con questa opzione il SELinux è disabilitato ed al riavvio
non verrà caricato alcun modulo sul kernel.


La seconda stringa “SELINUXTYPE=targeted” indica il tipo di policy che deve essere usata, in
questo caso targeted è la policy di default che usa REDHAT.


3.3 Amministrazione SELinux
L’amministrazione si divide in due campi, la prima è il cambiamento di livello a caldo che può
essere solo da enforced e permissive, ed avviene con il comando “setenforce”. Se lanciamo il
comando “setenforce 0” SELinux passa in modalità permissive, altrimenti se cambiamo il
parametro e mettiamo il numero 1 (es. setenforce 1) passiamo in modalità enforced. Per vedere
in che livello ci troviamo, usiamo il comando “getenforce”.


Ora la seconda parte è la gestione dei boolean, lanciando il comando: “semanage boolean –
l” avremo il seguente output:




Come potete vedere ci sono le varie direttive configurate nelle policy (targeted di default) che
sono settate con “on” o “off”, vedrete che lanciando il comando ci saranno molte opzioni oltre
a queste poche che sono presenti nella screenshot.


Un comando analogo per la lista dei boolean è:




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
Ora per modificare le boolean da “off” ad “on” o viceversa si effettua con il comando:




Setsebool è il comando con il quale possiamo amministrare le boolean e gestire quindi la policy
targeted di REDHAT.




Licenza d'uso “Attribuzione - Non commerciale - Non opere derivate”, secondo i criteri
internazionali Creative Commons (http://creativecommons.org/licenses/by-nc-nd/2.5/it/)




BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680
E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it
Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v.
Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015

Weitere ähnliche Inhalte

Ähnlich wie Sicurezza flessibile con SELinux: architettura e configurazione

Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domesticoBabel
 
OpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessmentOpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessmentBabel
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceBabel
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatBabel
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoBabel
 
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4Babel
 
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...Babel
 
Reti di computer e protocolli
Reti di computer e protocolliReti di computer e protocolli
Reti di computer e protocollifilibertodicarlo
 
Piccola guida alle reti per le aziende
Piccola guida alle reti per le aziendePiccola guida alle reti per le aziende
Piccola guida alle reti per le aziendeAurora Network Srl
 
La Desktop Virtualization
La Desktop VirtualizationLa Desktop Virtualization
La Desktop VirtualizationBabel
 
MINI CORSO INFORMATICO exchange .pptx
MINI CORSO INFORMATICO exchange .pptxMINI CORSO INFORMATICO exchange .pptx
MINI CORSO INFORMATICO exchange .pptxssuser1cba1b
 
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LEN
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LENAnalisi dei rischi informatici nelle intranet ed in internet - Scheda corso LEN
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LENLEN Learning Education Network
 
FileMaker Server Global Developing Networks
FileMaker Server Global Developing NetworksFileMaker Server Global Developing Networks
FileMaker Server Global Developing NetworksStefano Monti
 
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruolo
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruoloSiti web scolastici - corso base indirizzato ai DSGA neo immessi in ruolo
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruoloMichele Maffucci
 
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Aruba S.p.A.
 
Skype manage on far 2007
Skype manage on far 2007Skype manage on far 2007
Skype manage on far 2007Luca Lomi
 
Server aziendali con Linux
Server aziendali con LinuxServer aziendali con Linux
Server aziendali con LinuxTruelite
 
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...festival ICT 2016
 

Ähnlich wie Sicurezza flessibile con SELinux: architettura e configurazione (20)

Cross compiler per uso domestico
Cross compiler per uso domesticoCross compiler per uso domestico
Cross compiler per uso domestico
 
OpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessmentOpenVAS, lo strumento open source per il vulnerability assessment
OpenVAS, lo strumento open source per il vulnerability assessment
 
Nagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open sourceNagios in alta affidabilità con strumenti open source
Nagios in alta affidabilità con strumenti open source
 
Installazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red HatInstallazione di Joomla nel cloud di Red Hat
Installazione di Joomla nel cloud di Red Hat
 
Ridirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimentoRidirezionamento di I/O con Bash: un breve approfondimento
Ridirezionamento di I/O con Bash: un breve approfondimento
 
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
Monitoraggio di infrastrutture IT mediante Opsview Enteprise V4
 
Fastweb digital magazine
Fastweb digital magazineFastweb digital magazine
Fastweb digital magazine
 
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
Tracciamento delle attività di amministrazione mediante i BalaBit Shell Contr...
 
Reti di computer e protocolli
Reti di computer e protocolliReti di computer e protocolli
Reti di computer e protocolli
 
Piccola guida alle reti per le aziende
Piccola guida alle reti per le aziendePiccola guida alle reti per le aziende
Piccola guida alle reti per le aziende
 
La Desktop Virtualization
La Desktop VirtualizationLa Desktop Virtualization
La Desktop Virtualization
 
MINI CORSO INFORMATICO exchange .pptx
MINI CORSO INFORMATICO exchange .pptxMINI CORSO INFORMATICO exchange .pptx
MINI CORSO INFORMATICO exchange .pptx
 
Concetti base di networking
Concetti base di networkingConcetti base di networking
Concetti base di networking
 
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LEN
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LENAnalisi dei rischi informatici nelle intranet ed in internet - Scheda corso LEN
Analisi dei rischi informatici nelle intranet ed in internet - Scheda corso LEN
 
FileMaker Server Global Developing Networks
FileMaker Server Global Developing NetworksFileMaker Server Global Developing Networks
FileMaker Server Global Developing Networks
 
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruolo
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruoloSiti web scolastici - corso base indirizzato ai DSGA neo immessi in ruolo
Siti web scolastici - corso base indirizzato ai DSGA neo immessi in ruolo
 
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
Con Aruba, a lezione di cloud #lezione 7 - parte 1: 'Tunnel VPN: una connessi...
 
Skype manage on far 2007
Skype manage on far 2007Skype manage on far 2007
Skype manage on far 2007
 
Server aziendali con Linux
Server aziendali con LinuxServer aziendali con Linux
Server aziendali con Linux
 
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...
festival ICT 2013: Manager, CEO e Responsabili IT in Cloud. Caso concreto di ...
 

Mehr von Babel

La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTMLa gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTMBabel
 
Installare i server via rete con Cobbler
Installare i server via rete con CobblerInstallare i server via rete con Cobbler
Installare i server via rete con CobblerBabel
 
Shell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della SicurezzaShell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della SicurezzaBabel
 
Crittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con PythonCrittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con PythonBabel
 
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestoriIntercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestoriBabel
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: OpsviewBabel
 
Testing with MySQL embedded
Testing with MySQL embeddedTesting with MySQL embedded
Testing with MySQL embeddedBabel
 
Il fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisureIl fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisureBabel
 
Il software open source: regole e licenze
Il software open source: regole e licenzeIl software open source: regole e licenze
Il software open source: regole e licenzeBabel
 
Git: un'introduzione pratica
Git: un'introduzione praticaGit: un'introduzione pratica
Git: un'introduzione praticaBabel
 
Mobile Data Security: Sicurezza IT per aziende in movimento
Mobile Data Security: Sicurezza IT per aziende in movimentoMobile Data Security: Sicurezza IT per aziende in movimento
Mobile Data Security: Sicurezza IT per aziende in movimentoBabel
 
Il DLP, uno strumento di difesa del patrimonio informativo aziendale
Il DLP, uno strumento di difesa del patrimonio informativo aziendaleIl DLP, uno strumento di difesa del patrimonio informativo aziendale
Il DLP, uno strumento di difesa del patrimonio informativo aziendaleBabel
 
MySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiMySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiBabel
 
Servizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceServizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceBabel
 
Il vendor lock in applicato ai sistemi di messaging
Il vendor lock in applicato ai sistemi di messagingIl vendor lock in applicato ai sistemi di messaging
Il vendor lock in applicato ai sistemi di messagingBabel
 

Mehr von Babel (15)

La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTMLa gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
La gestione integrata della sicurezza in ANSA: dal firewalling all'UTM
 
Installare i server via rete con Cobbler
Installare i server via rete con CobblerInstallare i server via rete con Cobbler
Installare i server via rete con Cobbler
 
Shell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della SicurezzaShell Control Box - Il Gusto della Sicurezza
Shell Control Box - Il Gusto della Sicurezza
 
Crittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con PythonCrittografia e integrazione dei sistemi con Python
Crittografia e integrazione dei sistemi con Python
 
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestoriIntercettazioni e posta elettronica: le misure di sicurezza per i gestori
Intercettazioni e posta elettronica: le misure di sicurezza per i gestori
 
Babel presenta: Opsview
Babel presenta: OpsviewBabel presenta: Opsview
Babel presenta: Opsview
 
Testing with MySQL embedded
Testing with MySQL embeddedTesting with MySQL embedded
Testing with MySQL embedded
 
Il fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisureIl fenomeno dello spam: origine e contromisure
Il fenomeno dello spam: origine e contromisure
 
Il software open source: regole e licenze
Il software open source: regole e licenzeIl software open source: regole e licenze
Il software open source: regole e licenze
 
Git: un'introduzione pratica
Git: un'introduzione praticaGit: un'introduzione pratica
Git: un'introduzione pratica
 
Mobile Data Security: Sicurezza IT per aziende in movimento
Mobile Data Security: Sicurezza IT per aziende in movimentoMobile Data Security: Sicurezza IT per aziende in movimento
Mobile Data Security: Sicurezza IT per aziende in movimento
 
Il DLP, uno strumento di difesa del patrimonio informativo aziendale
Il DLP, uno strumento di difesa del patrimonio informativo aziendaleIl DLP, uno strumento di difesa del patrimonio informativo aziendale
Il DLP, uno strumento di difesa del patrimonio informativo aziendale
 
MySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i gigantiMySQL: il database open source che ha sfidato i giganti
MySQL: il database open source che ha sfidato i giganti
 
Servizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open sourceServizi di messaging & collaboration in mobilità: Il panorama open source
Servizi di messaging & collaboration in mobilità: Il panorama open source
 
Il vendor lock in applicato ai sistemi di messaging
Il vendor lock in applicato ai sistemi di messagingIl vendor lock in applicato ai sistemi di messaging
Il vendor lock in applicato ai sistemi di messaging
 

Sicurezza flessibile con SELinux: architettura e configurazione

  • 1. SELinux di Maurizio Pagani 1. Introduzione Il SELinux (Security-Enhanced Linux) è un prodotto di sicurezza creato dalla NSA (National Security Agency) che gira direttamente nel kernel, implementando così un sistema di Mandatory Access Control. È un modulo installato di default nel kernel RedHat (Redhat Enterprise, Fedora, CentOS). Nei sistemi Unix/Linux si usa un concetto di sicurezza chiamato DAC (Discrectionary Access Control), Prima di andare avanti spieghiamo la differenza tra DAC e MAC, cosi da poter capire il perché migrare da un DAC ad un MAC e quindi i motivi che ci giustificano la migrazione di tale implementazione e l’uso di prodotti come SELinux. 1.1 DAC vs MAC DAC: Il Discrectionary Access Control è un modello di sicurezza ed è usato nei nostri sistemi tradizionali quali Solaris/AIX/hp-ux/Linux/BSD e cosi via. Comunemente conosciuto perché i permessi vengono gestiti via sette bit, ovvero: “rwx” r = 4, w = 2, x = 1. Vedete l’esempio di un ls –l: Sulla prima colonna a sinistra troviamo le tre colonne con i sette bit che gestiscono i permessi di quel file, le colonne come sappiamo, sono in ordine da sinistra verso destra: user-group-other. Questo concetto quindi è basato sulle ACL (Access Control List). BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 2. Questo è un sistema del tutto inadeguato per un ambiente dove la sicurezza sta al primo posto, proprio perché l’unico utente che sarà in grado di fare tutto è “root” ovvero l’amministratore, mentre gli altri utenti ordinari hanno le stesse grant, e possono essere gestite solo tramite questi sette bit. MAC: Il Mandatory Access Control è basato principalmente su due concetti: oggetti (object) e soggetti (subject). Gli oggetti sono i file, directory e device, mentre i soggetti sono un utente che avvia un comando, un applicazione, un processo, un thread e via dicendo. Lo scopo del MAC sta nel controllare che tali subject comunichino con l’object richiesto. Ad esempio se un utente Apache va ad interagire con il tool postfix c’è qualcosa che non quadra e quindi viene bloccato. Tutto questo viene gestito tramite le “policy” che è appunto il file dove inseriremo quale subject può comunicare con quali object. Faccio un esempio, mettiamo caso che ci sia la necessità di dover configurare l’utente apache che sia in grado di dover interagire con l’applicazione apache ed i suoi processi, e in tutto questo nessun’altro potrà, neanche “root”. Faccio notare che non c’è più un livello gerarchico del tipo: root è l’amministratore e tutto il resto è ordinario, poiché con le policy decidiamo noi una volta implementate, chi, è proprietario di cosa. Vediamo un esempio di ls –Z con SELinux: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 3. 1.2 Architettura Di sotto riporto un esempio dell’architettura di un kernel con SELinux implementato. 2. SELinux Contexts (Contesti SELinux) Processi e files sono etichettati (labeled) con un SELinux context che contiene tre tipi di informazioni: SELinux user, role, type e, se disponibile, un livello. Quando SELinux è in running queste informazioni (context) servono per il controllo degli accessi (access control decisions). In RedHat Enterprise Linux , SELinux ha i seguenti componenti: Role-Based Access Control (RBAC), Type Enforcement(TE), e opzionalmente, Multi-Level Security (MLS). Un esempio di SELinux Contexts: Spieghiamo la screenshot sopra incollata: system_u = user object_r = role admin_home_t = type s0 = level syntax BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 4. SELinux User Il SELinux user è l’identità specificata all’interno di una policy, è una parte del SELinux contexts al quale poi viene allegato uno o più ruoli. Un SELinux user non è altro che un Linux user mappato all’interno del prodotto SELinux, ovviamente per vedere quale utente SELinux è l’equivalente Linux user esiste un comando che è: semanage login –l. Vediamo un esempio dell’output: Dalla prima colonna vediamo il “Login Name” che equivale agli utenti Linux, la seconda colonna “SELinux User” riporta gli utenti SELinux, la terza ed ultima colonna descrive i livelli “MLS/MCS Range” Multi-Level Security e Multi-Category Security. Role (Ruolo) Come spiegato prima, SELinux ha come componente RBAC (Role-Based Access Control), il ruolo è un attributo dello stesso, e serve per dare un “ruolo” appunto agli utenti e i ruoli poi vengono abilitati dai “Domini”, quindi il ruolo fa da intermediario tra domini e SELinux User. Il Ruolo serve per controllare su che tipo di oggetto è autorizzato ad accedere l’utente. Type (Tipo) Il type serve per specificare domini e tipi, la differenza è che un dominio è per i processi, mentre i tipi sono per i file, tramite la policy se ci sono regole precise, si decide se tali domini possono accedere altri domini e se tali domini possono accedere ad altri file, quindi immaginate processi di apache che non possono comunicare con un processo dei terminali, cosi da non rilasciare shell a utenti applicativi. Level (Livello) Il livello è una parte del MLS (Multi-Level Security) e MCS (Multi-Category Security). La sintassi del MLS è un low-level.high-level se i livelli sono diversi, se invece sono uguali come ad esempio s1.s1 il livello unico è s1. BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 5. La coppia è intesa come “sensibilità – categoria”, questo: s0.c0 significa s0 = sensibilità 0 e c0 = categoria 0, per vedere ogni categoria come è classificata, vedere il file /etc/selinux/targeted/setrans.conf. 2.1 Domain Transitions Una transizione tra domini avviene per gestire il perimetro dei processi/programmi, ad esempio: un processo sendmail che avrà un dominio sendmail_t non ha senso che comunichi con un dominio di tipo mount_exec_t (che serve per eseguire il mount di un device). Il processo per la transizione tra un dominio e l’altro avviene con i seguenti step: • Il processo sendmail con dominio sendmail_t avvia una richiesta che richiama il comando “mount”; • Qui avviene il check da parte del SELinux: controlla la policy e verifica che ci sia l’”entrypoint” che dà il permesso ad un dominio di accedere ad un altro; • Una volta verificato che l’entrypoint “non esiste” l’accesso non viene consentito e la transizione è terminata. Come già anticipato prima, la transazione tra i due domini sendmail_t e mount_exec_t non è eseguita poiché non c’è motivo che dialoghino. Questa negazione la troviamo di default anche nella Targeted Policy che è quella di default su Red Hat Enterprise Linux. BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 6. 2.2 SELinux Contexts for Processes Per visualizzare il Context dei processi, lanciare il comando “ps –eZ”: Importante: system_r è il ruolo che la policy Type Enforcement usa per i processi, e tenere sempre presente che i type sono definiti “domini” per i processi e “type” per i file. BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 7. 2.3 SELinux Contexts for Users Per vedere il Context per gli utenti lanciare il comando “id –Z”: 3. Amministrazione del servizio SELinux 3.1 Logging La parte logging su SELinux viene gestita da due demoni, il primo è auditd e l’altro è rsyslogd. Il file principale è /var/log/audit/audit.log, vediamo un esempio di questo log: Come potete vedere, si può interpretare senza dare nessuna spiegazione. 3.2 File di configurazione Principale Il file principale di configurazione del SELinux dove appunto si può settare la policy da usare e il tipo di livello da usare è /etc/sysconfig/selinux: Spieghiamo velocemente: la prima stringa “SELINUX=enforcing” stà ad indicare il livello che deve usare SELinux: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 8. ENFORCING: questo livello viene usato per far si che SELinux applichi le policy sul sistema. PERMISSIVE: questo livello fa si che SELinux sia impostato in modalità auditing, ovvero non applica nessuna policy al sistema, ma logga tutto quanto come se fosse attivo. Ottimo per le operazioni di troubleshooting. DISABLED: Come dice la parola stessa, con questa opzione il SELinux è disabilitato ed al riavvio non verrà caricato alcun modulo sul kernel. La seconda stringa “SELINUXTYPE=targeted” indica il tipo di policy che deve essere usata, in questo caso targeted è la policy di default che usa REDHAT. 3.3 Amministrazione SELinux L’amministrazione si divide in due campi, la prima è il cambiamento di livello a caldo che può essere solo da enforced e permissive, ed avviene con il comando “setenforce”. Se lanciamo il comando “setenforce 0” SELinux passa in modalità permissive, altrimenti se cambiamo il parametro e mettiamo il numero 1 (es. setenforce 1) passiamo in modalità enforced. Per vedere in che livello ci troviamo, usiamo il comando “getenforce”. Ora la seconda parte è la gestione dei boolean, lanciando il comando: “semanage boolean – l” avremo il seguente output: Come potete vedere ci sono le varie direttive configurate nelle policy (targeted di default) che sono settate con “on” o “off”, vedrete che lanciando il comando ci saranno molte opzioni oltre a queste poche che sono presenti nella screenshot. Un comando analogo per la lista dei boolean è: BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015
  • 9. Ora per modificare le boolean da “off” ad “on” o viceversa si effettua con il comando: Setsebool è il comando con il quale possiamo amministrare le boolean e gestire quindi la policy targeted di REDHAT. Licenza d'uso “Attribuzione - Non commerciale - Non opere derivate”, secondo i criteri internazionali Creative Commons (http://creativecommons.org/licenses/by-nc-nd/2.5/it/) BABEL S.r.l. - P.zza S.Benedetto da Norcia 33 - 00040, Pomezia (RM) - Tel:. +39 06.9826.9600 - Fax. +39 06.9826.9680 E-Mail: info@babel.it – PEC: babel@pec.babel.it – WEB: http://www.babel.it Reg. Imprese di Roma N° 06062681009 - N.R.E.A. 953123 - P.I. e C.F. 06062681009 Cap. Soc. € 102.774,00 i.v. Società soggetta alla direzione e coordinamento della Par-tec S.p.A - Società iscritta al registro delle Imprese di Milano al numero 1293820015