Etichettatura dei file SELinux
Tutti i file, le directory, i dispositivi e i processi hanno un contesto di sicurezza (o etichetta) ad essi associato. Per i file, questo contesto viene archiviato negli attributi estesi del file system. I problemi con SELinux spesso derivano dall'etichettatura errata del file system. Se visualizzi un messaggio di errore contenente file_t , di solito è un buon indicatore di un problema con l'etichettatura del file system.
Esistono diversi modi per rietichettare il file system:
- Crea il file /.autorelabel e riavvia.
- La vista Stato nella GUI di SELinux fornisce un'opzione per rietichettare al prossimo riavvio.
- Tre utilità della riga di comando, restorecon, setfiles e fixfiles, relabel file.
Contesto SELinux
Il contesto di SELinux contiene informazioni aggiuntive come utente, ruolo, tipo e livello di SELinux. Le decisioni di controllo dell'accesso su processi, utenti Linux e file si basano su queste informazioni di contesto. Il controllo dell'accesso si basa sulle seguenti informazioni:
- Utente SELinux :gli utenti Linux sono mappati agli utenti SELinux.
- Ruolo :Un attributo di RBAC che funge da intermediario tra i domini e gli utenti SELinux
- Digita :Un attributo di TE che definisce un dominio per i processi
- Livello :Informazioni opzionali; un attributo di MLS e MCS
Visualizzazione delle informazioni sul contesto di SELinux
Visualizza le informazioni sul contesto di SELinux sui file
Per visualizzare le informazioni sul contesto del file system dalla riga di comando, utilizzare "ls –Z ” comando:
# ls -Z -rw-------. root root system_u:object_r:admin_home_t:s0 anaconda-ks.cfg -rw-r--r--. root root system_u:object_r:admin_home_t:s0 initial-setup-ks.cfgNOTA :Queste informazioni sono anche memorizzate nella directory /etc/selinux/[SELINUXTYPE]/contexts/files.
Visualizza le informazioni sul contesto di SELinux sui processi
Per visualizzare le informazioni sul contesto di SELinux sui processi, utilizzare "ps –Z ” comando:
# ps -Z LABEL PID TTY TIME CMD unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6617 pts/0 00:00:00 sudo unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6623 pts/0 00:00:00 su unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 6624 pts/0 00:00:00 bash unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 8188 pts/0 00:00:00 ps
Visualizza le informazioni sul contesto di SELinux sugli utenti
Per visualizzare il contesto SELinux associato al tuo utente Linux, usa "id –Z ” comando:
# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
Il contesto di SELinux viene visualizzato utilizzando la seguente sintassi:
user:role:type:level
Modifica del tipo di file di contesto
Le immagini del disco della macchina virtuale KVM vengono create in /var/lib/libvirt/images directory per impostazione predefinita. SELinux richiede che i file di immagine abbiano virt_image_t etichetta ad essi applicata. Puoi usare il comando "ls –dZ" per confermare che questa etichetta sia applicata alla directory /var/lib/libvirt/images:
# ls -dZ /var/lib/libvirt/images drwx--x--x. root root system_u:object_r:virt_image_t:s0 /var/lib/libvirt/images
È possibile utilizzare una directory diversa per le immagini della macchina virtuale, ma è necessario aggiungere la nuova directory alla politica di SELinux e rietichettarla prima. I seguenti passaggi vengono utilizzati per aggiungere la directory /kvmimages alla politica SELinux di destinazione e rietichettare la directory:
# semanage fcontext -a -t virt_image_t "/kvmimages(/.*)?"
Il comando precedente aggiunge la directory /kvmimages alla politica di SELinux aggiungendo una riga al seguente file:
# cat /etc/selinux/targeted/contexts/files/file_contexts.local /kvmimages(/.*)? system _u:object_r:virt_image_t:s0
È comunque necessario impostare il nuovo contesto di sicurezza nella directory e tutti i file nella directory. È possibile utilizzare uno qualsiasi dei seguenti comandi per modificare i contesti di SELinux nella directory /kvmimages:
- file di correzione :corregge il contesto di sicurezza sui file system
- ripristinarecon :reimposta il contesto di sicurezza su uno o più file
- setfile :Inizializza il contesto di sicurezza su uno o più file
Ognuno di questi comandi legge i file in /etc/selinux/targeted/contexts/files directory. L'esempio seguente mostra i contesti SELinux prima di eseguire il comando restorecon:
# ls -dZ /kvmimages drwx--x--x. root root system_u:object_r:unlabeled_t:s0 /var/lib/libvirt/images
Nota che il tipo SELinux è impostato su unlabeled_t . L'esempio seguente esegue il comando restorecon per modificare il tipo come definito in /etc/selinux/targeted/contexts/files/file_contexts.local file:
# restorecon -R -v /kvmimages
# ls -dZ /var/kvmimages drwx--x--x. root root system_u:object_r:virt_image_t:s0 /kvmimages
Ci sono anche SELinux Boolean che influenzano KVM quando vengono lanciati da libvirt. Due di questi booleani sono elencati come segue:
- virt_use_nfs :Consenti a virt di gestire i file NFS.
- virt_use_samba :Consenti a virt di gestire i file CIFS.
Questi booleani devono essere abilitati quando si utilizzano condivisioni NFS o SAMBA, rispettivamente, per l'archiviazione di immagini disco di macchine virtuali. Esistono ulteriori booleani SELinux che influiscono su KVM. Alcuni di questi sono elencati come segue:
# getsebool -a | grep virt staff_use_svirt --> off unprivuser_use_svirt --> off virt_read_qemu_ga_data --> off virt_rw_qemu_ga_data --> off virt_sandbox_use_all_caps --> on virt_sandbox_use_audit --> on virt_sandbox_use_fusefs --> off virt_sandbox_use_mknod --> off virt_sandbox_use_netlink --> off virt_sandbox_use_sys_admin --> off virt_transition_userdomain --> off virt_use_comm --> off virt_use_execmem --> off virt_use_fusefs --> off virt_use_nfs --> on virt_use_rawip --> off virt_use_samba --> off virt_use_sanlock --> off virt_use_usb --> on virt_use_xserver --> offCosa sono gli utenti SELinux e come mappare gli utenti Linux agli utenti SELinux