Prima di iniziare dovrai imparare i seguenti concetti:
Soggetti: processi o utenti.
Oggetti: file o filesystem.
Tipo di applicazione: su SELinux tutti i soggetti e gli oggetti hanno un identificatore di tipo che termina con _t. “L'applicazione del tipo è la nozione che, in un sistema di controllo dell'accesso obbligatorio, l'accesso è disciplinato da un'autorizzazione basata su un insieme di regole soggetto-accesso-oggetto.
In SELinux, l'imposizione del tipo è implementata in base alle etichette dei soggetti e degli oggetti. SELinux da solo non ha regole che dicono /bin/bash può eseguire /bin/ls. Invece, ha regole simili a "I processi con l'etichetta user_t possono eseguire file regolari etichettati bin_t.” (fonte https://wiki.Gentoo.org/wiki/SELinux/Type_enforcement)
Controllo di accesso discrezionale (DAC): DAC è il sistema di proprietà e autorizzazione che utilizziamo in Linux per gestire l'accesso a oggetti come file o directory. Il controllo di accesso discrezionale non ha nulla a che fare con SELinux ed è un livello di sicurezza diverso. Per ulteriori informazioni su DAC, visitare Spiegazione dei permessi di Linux.
Controllo di accesso obbligatorio (MAC): è un tipo di controllo degli accessi che limita l'accesso dei soggetti all'interazione con gli oggetti. Contrariamente a DAC con MAC, gli utenti non possono modificare le politiche.
Soggetti e oggetti hanno un contesto di sicurezza (attributi di sicurezza) monitorato da SELinux e amministrato secondo policy di sicurezza stabilite da regole da far rispettare.
Controllo degli accessi in base al ruolo (RBAC): è un tipo di controllo accessi basato sui ruoli, può essere combinato sia con MAC che DAC. I criteri RBAC semplificano la gestione di molti utenti all'interno di un'organizzazione rispetto a DAC che può derivare da assegnazioni di autorizzazioni individuali, semplifica il controllo, la configurazione e gli aggiornamenti dei criteri.
Modalità di applicazione: SELinux limita l'accesso dei soggetti agli oggetti in base a criteri.
Modalità permissiva: SELinux registra solo attività illegittime.
Le funzionalità di SELinux includono (elenco Wikipedia):
- Separazione netta della politica dall'applicazione
- Interfacce di policy ben definite
- Supporto per applicazioni che interrogano la policy e impongono il controllo degli accessi (ad esempio, crond eseguire lavori nel contesto corretto)
- Indipendenza di politiche e linguaggi politici specifici
- Indipendenza da formati e contenuti specifici dell'etichetta di sicurezza
- Etichette e controlli individuali per oggetti e servizi del kernel
- Supporto per i cambiamenti delle politiche
- Misure separate per la protezione dell'integrità del sistema (tipo di dominio) e della riservatezza dei dati (sicurezza multilivello)
- Polizza flessibile
- Controlli sull'inizializzazione e sull'ereditarietà del processo e sull'esecuzione del programma
- Controlli su file system, directory, file e open descrittori di file
- Controlli su socket, messaggi e interfacce di rete
- Controlli sull'uso delle “capacità”
- Informazioni memorizzate nella cache sulle decisioni di accesso tramite Access Vector Cache (AVC)
- Negazione predefinita policy (tutto ciò che non è espressamente specificato nella policy è vietato).
Fonte: https://en.wikipedia.org/wiki/Security-Enhanced_Linux#Features
Nota: gli utenti sono diversi su SELinux e passwd.
Configurare SELinux su Debian 10 Buster
Nel mio caso SELinux è stato disabilitato su Debian 10 Buster. Mantenere SELinux abilitato è uno dei passaggi fondamentali per proteggere un dispositivo Linux. Per conoscere lo stato di SELinux nel tuo dispositivo esegui il comando:
/# sestatus
Ho scoperto che SELinux era disabilitato, per abilitarlo è necessario installare alcuni pacchetti prima, dopo e aggiornamento appropriato, eseguire il comando:
/# apt install selinux-basics selinux-policy-default
Se richiesto premere sì per continuare il processo di installazione. Correre aggiornamento appropriato dopo aver terminato l'installazione.
Per abilitare SELinux eseguire il seguente comando:
/# selinux-activate
Come puoi vedere SELinux è stato attivato correttamente. Per applicare tutte le modifiche è necessario riavviare il sistema come indicato.
Il comando getenforce può essere utilizzato per apprendere lo stato di SELinux, se è in modalità permissiva o di applicazione:
/# getenforce
La modalità permissiva potrebbe essere sostituita impostando il parametro 1 (permesso è 0). Puoi anche controllare la modalità sul file di configurazione usando il comando Di meno:
/# meno /etc/selinux/config
Produzione:
Come puoi vedere i file di configurazione mostrano la modalità permissiva. stampa Q abbandonare.
Per vedere un file o un contesto di sicurezza del processo puoi usare il flag -Z:
/# ls -Z
Il formato dell'etichetta è utente:ruolo:tipo:livello.
semanage - Strumento di gestione delle policy di SELinux
semanage è lo strumento di gestione delle policy di SELinux. Consente di gestire booleani (che consentono di modificare il processo in esecuzione), ruoli e livelli utente, interfacce di rete, moduli di policy e altro. Semanage consente di configurare le policy di SELinux senza la necessità di compilare i sorgenti. Semanage consente il collegamento tra il sistema operativo e gli utenti di SELinux e determinati contesti di sicurezza degli oggetti.
Per ulteriori informazioni su semanage visitare la pagina man all'indirizzo: https://linux.morire.rete/uomo/8/semanage
Conclusione e note
SELinux è un modo aggiuntivo per amministrare l'accesso dai processi alle risorse di sistema come file, partizioni, directory, ecc. Permette di gestire enormi privilegi in base a ruolo, livello o tipo. Averlo abilitato è un must come misura di sicurezza e quando lo si utilizza è importante ricordare il suo livello di sicurezza e riavviare il sistema dopo averlo abilitato o disabilitato (la disabilitazione non è consigliata se non per test specifici). A volte un accesso ai file viene bloccato nonostante il sistema o le autorizzazioni del sistema operativo siano concesse perché SELinux lo sta vietando.
Spero che tu abbia trovato utile questo articolo su SELinux come introduzione a questa soluzione di sicurezza, continua a seguire LinuxHint per ulteriori suggerimenti e aggiornamenti su Linux e il networking.
Articoli Correlati:
- Tutorial SELinux su Ubuntu
- Come disabilitare SELinux su CentOS 7
- Elenco di controllo per il rafforzamento della sicurezza di Linux
- Profili AppArmor su Ubuntu