GNU/Linux >> Linux Esercitazione >  >> Linux

Quali ruoli svolgono DAC (autorizzazioni file), ACL e MAC (SELinux) nella sicurezza dei file Linux?

Quando un processo esegue un'operazione su un file, il kernel Linux esegue il controllo nel seguente ordine:

  1. Controllo di accesso discrezionale (DAC) o controllo di accesso dettato dall'utente. Ciò include sia i classici controlli delle autorizzazioni in stile UNIX che gli elenchi di controllo degli accessi (ACL) POSIX. I classici controlli UNIX confrontano l'UID e il GID del processo corrente rispetto all'UID e al GID del file a cui si accede in relazione alle modalità impostate (Read/Write/eXecute). Access Control List estende i classici controlli UNIX per consentire più opzioni relative al controllo delle autorizzazioni.

  2. Controllo di accesso obbligatorio (MAC) o controllo di accesso basato su criteri. Questo è implementato utilizzando Linux Security Modules (LSM) che non sono più moduli reali (lo erano ma è stato abbandonato). Consentono controlli aggiuntivi basati su modelli diversi dai classici controlli di sicurezza in stile UNIX. Tutti questi modelli si basano su una politica che descrive che tipo di operazioni sono consentite per quale processo e in quale contesto.

Ecco un esempio per l'accesso agli inode (che include l'accesso ai file) per sostenere la mia risposta con collegamenti a un riferimento incrociato Linux online. Il file "function_name (filename:line)" sono per la versione 3.14 del kernel Linux.

La funzione inode_permission (fs/namei.c:449) controlla prima i permessi di lettura sul filesystem stesso (sb_permission in fs/namei.c:425), quindi chiama __inode_permission (fs/namei.c:394) per verificare i permessi di lettura/scrittura/esecuzione e ACL POSIX su un inode in do_inode_permission (fs/namei.c:368) (DAC) e quindi autorizzazioni relative a LSM (MAC) in security_inode_permission (sicurezza/security.c:550).

Ce n'era solo uno eccezione a questo ordine (DAC poi MAC):era per i controlli mmap. Ma questo problema è stato risolto nella versione 3.15 del kernel Linux (commit rilevante).


DAC ==Discretionary Access Control , http://en.wikipedia.org/wiki/Discretionary_access_control
MAC ==Mandatory Access Control , http://en.wikipedia.org/wiki/Mandatory_access_control
ACL ==Access Control List , http://en.wikipedia.org/wiki/Access_control_list

Il ACL specifica i controlli da applicare con il metodo di controllo, DAC o MAC . MAC è esplicito, controllato centralmente e non consente agli utenti di concedere l'autorizzazione a un oggetto a meno che non dispongano di autorizzazioni esplicite per farlo, mentre DAC consente agli utenti di concedere ad altri utenti l'accesso agli oggetti a cui possono accedere.

MAC ACL s verrà sempre applicato prima a una richiesta e, se l'accesso viene negato, l'elaborazione si interrompe. Se l'accesso è consentito allora DAC ACL vengono applicati e, di nuovo, se l'accesso viene negato, l'elaborazione si interrompe. Solo se l'accesso è concesso da entrambi MAC e DAC ACL s l'utente può accedere all'oggetto che ha richiesto.

SELinux è un MAC implementazione per Linux (ce ne sono altri), mentre il tradizionale rwx i permessi sui file, combinati con l'utente proprietario e il gruppo formano il DAC completo ACL . Il SELinux 'policy' è essenzialmente il MAC ACL .


Mi dispiace cavillare, ma penso che alcune delle risposte qui potrebbero essere errato. Direttamente da http://docs.fedoraproject.org/en-US/Fedora/13/html/Security-Enhanced_Linux/sect-Security-Enhanced_Linux-Working_with_SELinux-SELinux_Contexts_Labeling_Files.html di Fedora:

Le regole dei criteri di SELinux vengono verificate dopo le regole DAC. Le regole della politica di SELinux non vengono utilizzate se le regole DAC negano prima l'accesso.


Linux
  1. Cos'è Umask in Linux

  2. Che cos'è Sticky Bit, SUID e SGID in Linux

  3. Cos'è NFS e come installarlo su Linux

  4. Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

  5. Come configurare ACL (Elenchi di controllo di accesso) in Linux FileSystem

Comando file Linux:cosa fa e come usarlo

Comprendere i permessi dei file Linux

Cos'è umask in Linux?

Permessi e proprietà dei file Linux spiegati con esempi

Comprendere le autorizzazioni di base dei file e la proprietà in Linux

Cos'è un'alternativa XPerf per Linux e Mac OS X?