Etiquetado de archivos SELinux
Todos los archivos, directorios, dispositivos y procesos tienen un contexto de seguridad (o etiqueta) asociado a ellos. Para archivos, este contexto se almacena en los atributos extendidos del sistema de archivos. Los problemas con SELinux a menudo surgen debido a que el sistema de archivos está mal etiquetado. Si ve un mensaje de error que contiene file_t , suele ser un buen indicador de que tiene un problema con el etiquetado del sistema de archivos.
Hay varias formas de volver a etiquetar el sistema de archivos:
- Cree el archivo /.autorelabel y reinicie.
- La vista de estado en la GUI de SELinux ofrece una opción para volver a etiquetar en el próximo reinicio.
- Tres utilidades de línea de comandos, restauración, setfiles y fixfiles, reetiquetado de archivos.
Contexto de SELinux
El contexto de SELinux contiene información adicional, como usuario, rol, tipo y nivel de SELinux. Las decisiones de control de acceso sobre procesos, usuarios de Linux y archivos se basan en esta información de contexto. El control de acceso se basa en la siguiente información:
- usuario de SELinux :los usuarios de Linux se asignan a los usuarios de SELinux.
- Rol :un atributo de RBAC que actúa como intermediario entre los dominios y los usuarios de SELinux
- Tipo :Un atributo de TE que define un dominio para procesos
- Nivel :Información opcional; un atributo de MLS y MCS
Ver información de contexto de SELinux
Ver información de contexto de SELinux sobre archivos
Para ver la información de contexto del sistema de archivos desde la línea de comando, use el comando “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 :Esta información también se almacena en el directorio /etc/selinux/[SELINUXTYPE]/contexts/files.
Ver información de contexto de SELinux sobre procesos
Para ver la información de contexto de SELinux sobre los procesos, utilice el botón “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
Ver información de contexto de SELinux sobre los usuarios
Para ver el contexto de SELinux asociado con su usuario de Linux, use el “id –Z ” comando:
# id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
El contexto de SELinux se muestra usando la siguiente sintaxis:
user:role:type:level
Cambiar el tipo de archivo de contexto
Las imágenes de disco de la máquina virtual KVM se crean en /var/lib/libvirt/images directorio por defecto. SELinux requiere que los archivos de imagen tengan la virt_image_t etiqueta que se les aplica. Puede usar el comando “ls –dZ” para confirmar que esta etiqueta se aplica al directorio /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
Puede usar un directorio diferente para las imágenes de su máquina virtual, pero primero debe agregar el nuevo directorio a su política de SELinux y volver a etiquetarlo. Los siguientes pasos se utilizan para agregar el directorio /kvmimages a la política de SELinux de destino y volver a etiquetar el directorio:
# semanage fcontext -a -t virt_image_t "/kvmimages(/.*)?"
El comando anterior agrega el directorio /kvmimages a la política de SELinux agregando una línea al siguiente archivo:
# cat /etc/selinux/targeted/contexts/files/file_contexts.local /kvmimages(/.*)? system _u:object_r:virt_image_t:s0
Todavía necesita configurar el nuevo contexto de seguridad en el directorio y todos los archivos en el directorio. Puede usar cualquiera de los siguientes comandos para cambiar los contextos de SELinux en el directorio /kvmimages:
- arreglar archivos :corrige el contexto de seguridad en los sistemas de archivos
- restauración :restablece el contexto de seguridad en uno o más archivos
- establecer archivos :Inicializa el contexto de seguridad en uno o más archivos
Cada uno de estos comandos lee los archivos en /etc/selinux/targeted/contexts/files directorio. El siguiente ejemplo muestra los contextos de SELinux antes de ejecutar el comando restorecon:
# ls -dZ /kvmimages drwx--x--x. root root system_u:object_r:unlabeled_t:s0 /var/lib/libvirt/images
Observe que el tipo de SELinux está establecido en unlabeled_t . El siguiente ejemplo ejecuta el comando restorecon para cambiar el tipo como se define en /etc/selinux/targeted/contexts/files/file_contexts.local archivo:
# restorecon -R -v /kvmimages
# ls -dZ /var/kvmimages drwx--x--x. root root system_u:object_r:virt_image_t:s0 /kvmimages
También hay valores booleanos de SELinux que afectan a KVM cuando se ejecutan con libvirt. Dos de estos valores booleanos se enumeran a continuación:
- virt_use_nfs :permitir que virt administre archivos NFS.
- virt_use_samba :permitir que virt administre archivos CIFS.
Estos valores booleanos deben habilitarse cuando se utilizan recursos compartidos NFS o SAMBA, respectivamente, para almacenar imágenes de disco de máquina virtual. Hay valores booleanos de SELinux adicionales que afectan a KVM. Algunos de estos se enumeran a continuación:
# 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 --> off¿Qué son los usuarios de SELinux y cómo asignar usuarios de Linux a usuarios de SELinux?