Cos’è SELinux Security Enhanced Linux?
- 0
- 0
- 0
- 0
- 0
- 0
SELinux, in un kernel Linux Controllo di accesso obbligatorio-MAC È un’implementazione del sistema di autorizzazione (Mandatory Access Control). SELinux, può essere un identificatore che astrae i dettagli a livello di sistema e si concentra sulle proprietà di sicurezza degli oggetti. Questo non solo fornisce un modo coerente di fare riferimento agli oggetti nella politica di SELinux, ma rimuove anche qualsiasi ambiguità che potrebbe essere trovata in altri metodi di identificazione. Ad esempio, un file può avere più percorsi validi su un sistema ed essere montato con nomi diversi. Pertanto, verrà scritta una regola per ogni nome, come si comporterà se viene montato con nomi diversi?
La politica di SELinux utilizza questi contesti in un insieme di regole che definiscono come i processi possono interagire tra loro e con varie risorse di sistema. Per impostazione predefinita, il criterio applicato non consente alcuna interazione a meno che l’accesso non sia esplicitamente concesso da una regola.
In sintesi, SELinux sostanzialmente risponde alla domanda:
Ad esempio, un utente nel server può accedere ai file nelle home directory degli altri utenti? Security Enhanced Linux (SELinux) fornisce un ulteriore livello di sicurezza del sistema.
È importante notare che le regole della policy SELinux vengono verificate dopo le regole DAC. Se le regole DAC negano prima l’accesso, le regole della policy SELinux non vengono applicate. Quindi questo significa che nessun rifiuto di SELinux viene registrato se le regole DAC tradizionali impediscono l’accesso.
Architettura e principio di funzionamento di SELinux
SELinux è un modulo di sicurezza Linux integrato nel kernel Linux (Modulo di sicurezza Linux – LSM). Il sottosistema SELinux nel kernel è guidato da una politica di sicurezza controllata dall’amministratore che viene caricata all’avvio. Nel sistema, tutte le operazioni di accesso relative alla sicurezza a livello di kernel vengono interrotte da SELinux ed esaminate nel contesto della politica di sicurezza installata. Se il criterio caricato consente l’operazione, continua. In caso contrario, l’operazione verrà bloccata e l’operazione riceverà un errore.
Le decisioni di SELinux come consentire o negare l’accesso vengono memorizzate nella cache. Questa cache è l’Access Vector Cache, conosciuto come (Accesso alla cache vettoriale – AVC). Quando si utilizzano queste decisioni memorizzate nella cache, c’è meno controllo delle regole della politica SELinux, che migliora le prestazioni. Si noti che, come accennato in precedenza, le regole della politica di SELinux non hanno effetto se le regole DAC negano prima l’accesso.
Il diagramma sottostante riassume molto bene i flussi di cui ho parlato in questa architettura.
Runlevel di SELinux
SELinux ha 3 possibili runlevel:
- Disabilitato: SELinux è completamente disattivato. Non ha alcun effetto sul sistema in esecuzione.
- Permissivo: SELinux è abilitato. Registra le violazioni dei criteri ma non fa nulla per prevenirle.
- Applicazione: SELinux è attivo e le policy sono completamente applicate.
Ci sono molti modi per controllare lo stato di SELinux sul tuo sistema. Il più comune di questi, getenforce è usare il comando. Getenforce fornisce solo informazioni sul suo stato, cioè il runlevel. Se vogliamo ottenere informazioni più dettagliate, possiamo usare il seguente comando.
sestatus
Questo output ci fornisce anche alcune informazioni utili. Il primo di questi è il punto di montaggio di SELinuxfs. SELinuxfs è uno pseudo filesystem come /proc: in fase di esecuzione, è popolato dal kernel Linux e contiene file utili per documentare lo stato di SELinux.
La directory root di SELinux è il percorso utilizzato per archiviare i file di configurazione di SELinux, home directory /etc/selinux/config(un collegamento simbolico a questo file è disponibile anche in /etc/sysconfig/selinux).
La modifica diretta di questo file è il modo più semplice per modificare lo stato e la modalità di selinux. Diamo una rapida occhiata al contenuto del file con il seguente comando.
cat /etc/selinux/config
Il file è interpretato in modo molto chiaro: modificando i valori delle variabili SELINUX e SELINUXTYPE, possiamo impostare rispettivamente lo stato di SELinux e la modalità di SELinux. Diamo un’occhiata a queste mod.
Modalità operative di SELinux
Ci sono 3 modalità: mirata, minima e mls.
SELinux=mirato : la modalità mirata è la modalità predefinita. Tutti i processi mirati vengono preservati quando questa modalità è abilitata.
SELinux=minimo : La modalità minima è un sottoinsieme della prima modalità, in cui sono protetti solo determinati processi.
SELinux=mls: sicurezza multilivello (MLS) è la più sofisticata, basata sul concetto di classificazione della sicurezza. Da non classificato a top secret: utilizza il modello Bell-La Padula sviluppato per il Dipartimento della Difesa degli Stati Uniti.
Modifica dei runlevel di SELinux
È possibile utilizzare il comando setenforce per modificare il runlevel di SELinux.
Utilizzando i valori 0 e 1 con il comando Setenforce informare E permissivo i livelli operativi possono essere commutati.
Ma ciò che non puoi fare con questo comando è disabilitare completamente SELinux. Per apportare modifiche permanenti, è necessario modificare il file di configurazione principale come segue.
nano /etc/selinux/config
Le modifiche apportate a questo file saranno attive dopo il riavvio. Pertanto, affinché le modifiche abbiano effetto, è necessario riavviare il sistema dopo aver modificato il file.
In molti articoli, SELinux viene portato in modalità permissiva con il comando setenforce. Tuttavia, poiché SELinux verrà ricaricato e attivato dopo il riavvio, qualunque sia l’applicazione o l’infrastruttura installata, la possibilità di un problema di accesso non è specificata.
Cos’è l’etichettatura dei file SELinux?
Nell’introduzione ho menzionato le etichette di sicurezza. Ora iniziamo ad esaminare cosa sono. A tutti i file, directory, dispositivi e processi è associato un contesto di sicurezza (o tag). Questo contesto per i file è archiviato negli attributi estesi del file system. I problemi con SELinux sono spesso causati da un’etichettatura errata del file system.
Esistono diversi modi per retaggare il filesystem:
- Il file /.autorelabel viene creato e il server viene riavviato.
- La vista dello stato nella GUI di SELinux fornisce l’opzione per ritaggare al prossimo riavvio.
- Con 3 utilità della riga di comando, restorecon, setfiles e fixfiles i file possono essere rietichettati.
Cos’è il contesto di SELinux?
I contesti SELinux contengono informazioni aggiuntive come utente, ruolo, tipo e livello di SELinux. Le decisioni relative al controllo degli accessi su processi, utenti Linux e file si basano su queste informazioni di contesto. Il controllo degli accessi si basa sulle seguenti informazioni:
Utente SELinux: Gli utenti Linux sono accoppiati con gli utenti SELinux.
Ruoli: Un intermediario tra domini e utenti SELinux. Controllo degli accessi basato sui ruoli (RBAC) è una caratteristica.
Tipo: Un campo che definisce un campo per le operazioni. Applicazione del tipo (TE) è l’attributo.
Livello: Informazioni opzionali; Sicurezza multilivello (MLS) E Sicurezza multicategoria (MCS)È una caratteristica di .
Come visualizzare i contesti di SELinux?
Per visualizzare le informazioni sul contesto del file system dalla riga di comando;
ls -Z
NOTA: Queste informazioni sono disponibili anche in /etc/selinux/[SELINUXTYPE]È anche memorizzato nella directory /contexts/files.
Dobbiamo interpretare questo output come segue.
Per visualizzare le informazioni di contesto dei processi;
ps -z
Per visualizzare le informazioni di contesto di SELinux sugli utenti;
id -Z
In questo output, il contesto SELinux viene visualizzato con la seguente sintassi.
utente:ruolo:tipo:livello
Se lo schematizziamo, possiamo interpretarlo come segue.
Poiché il lavoro tecnico inizierà dopo questa parte, termino qui l’argomento introduttivo di SELinux in termini generali. Per sapere di piu sulla configurazione vedi questo articolo.