Cambiar Estados y Modos de SELinux
Cambios permanentes en estados y modos de SELinux
Como se explica en Introducción a SELinux, SELinux se puede habilitar o deshabilitar. Cuando está habilitado, SELinux tiene dos modos: forzado y permisivo.
Emplee las instrucciones getenforce o sestatus para marcar en cual modo SELinux está ejecutándose. La instrucción getenforce devuelve Enforcing, Permissive, o Disabled.
La instrucción sestatus devuelve el estado SELinux y la normativa SELinux que está siendo utilizada:
$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31
|
Cuando los sistemas ejecutan SELinux en modo permisivo, los usuarios y procesos pueden etiquetar incorrectamente varios objetos del sistema de archivos. Los objetos del sistema de archivos creados con SELinux deshabilitado no se etiquetan. Este comportamiento causa problemas al cambiar al modo de aplicación, ya que SELinux depende de que los objetos del sistema de archivos estén etiquetados correctamente. Para evitar que los archivos etiquetados incorrectamente o sin etiquetar causen problemas, los sistemas de archivos se re‐etiquetan automáticamente al cambiar del estado deshabilitado al modo permisivo o de aplicación. En el modo permisivo, use el comando |
Habilitando SELinux
Cuando está habilitado, SELinux puede ejecutar en uno de estos dos modos: hacer cumplir o permisivo. Las siguientes secciones muestran como cambiar permanentemente entre estos modos.
Mientras habilita SELinux sobre sistemas que previamente lo tenían deshabilitado, para evitar problemas, como sistemas que sean incapaces de arrancar o fallos en procesos, siga este procedimiento.
-
Están instalados los paquetes
selinux-policy-targeted,selinux-policy,libselinux-utilsygrubby. Para comprobar que un paquete concreto está instalado:$ rpm -q _package_name_
-
Si su sistema tiene SELinux deshabilitado a nivel de kernel (esta es la forma recomendada, consulte [_disabling_selinux]), cambie esto primero. Compruebe si tiene la opción
selinux=0en la línea de comandos de su kernel:$ cat /proc/cmdline BOOT_IMAGE=... ... selinux=0-
Quite la opción
selinux=0de la configuración del cargador de arranque usandogrubby:$ sudo grubby --update-kernel ALL --remove-args selinux -
El cambio de aplica tras su reinicio del sistema en uno de los siguientes pasos.
-
-
Asegure el sistema de archivos es re-etiquetado en el siguiente arranque:
$ sudo fixfiles onboot -
Habilita SELinux en modo permisivo. Para más información, consulte [_changing_to_permissive_mode].
-
Reinicie su sistema:
$ sudo reboot -
Compruebe si hay mensajes de denegación de SELinux.
$ sudo ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts recent -
Si no hay denegaciones, intercambie al modo de cumplimiento. Para más información, consulte [_changing_to_enforcing_mode].
Para ejecutar aplicaciones personales con SELinux en modo reforzado, elija uno de los siguientes escenarios:
-
Ejecuta tu aplicación en el dominio
unconfined_service_t. -
Escriba una nueva directiva para su aplicación. Consulte el capítulo Cómo escribir una directiva SELinux personalizada en el documento RHEL 8: Uso de SELinux para obtener más información.
Cambiando a modo permisivo
Utilice el siguiente procedimiento para cambiar permanentemente el modo SELinux a permisivo. Cuando SELinux se ejecuta en modo permisivo, la política de SELinux no se aplica. El sistema permanece operativo y SELinux no deniega ninguna operación, sino que solo registra los mensajes AVC, que pueden utilizarse para la resolución de problemas, la depuración y la mejora de las normativas de SELinux. En este caso, cada AVC se registra solo una vez.
-
Los paquetes
selinux-policy-targeted,libselinux-utils, ypolicycoreutilsson instalados en su sistema. -
Los parámetros de kernel
selinux=0oenforcing=0no son utilizados.
-
Abra el archivo
/etc/selinux/configen el editor de texto que prefiera, por ejemplo:
$ sudo vi /etc/selinux/config
-
Configure la opción
SELINUX=permissive:
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=permissive # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted
-
Rearranque el sistema:
$ sudo reboot
Cambiar a modo forzado
Utilice los siguiente procedimiento para cambiar a SELinux a modo reforzado. Cuando SELinux esté ejecutándose en modo reforzado, refuerza la normativa de SELinux y deniega acceso basado en reglas de normativa de SELinux. En Fedora, el modo reforzado está habilitado por defecto cuando el sistema fue inicialmente instalado con SELinux.
-
Los paquetes
selinux-policy-targeted,libselinux-utils, ypolicycoreutilsson instalados en su sistema. -
Los parámetros de kernel
selinux=0oenforcing=0no son utilizados.
-
Abra el archivo
/etc/selinux/configen el editor de texto que prefiera, por ejemplo:$ sudo vi /etc/selinux/config -
Configure la opción
SELINUX=enforcing:# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing # SELINUXTYPE= can take one of these two values: # targeted - Targeted processes are protected, # mls - Multi Level Security protection. SELINUXTYPE=targeted -
Guarde los cambios, y rearranque el sistema:
$ sudo rebootEn el siguiente arranque, las etiquetas SELinux todas los archivos y directorios con el sistema y añada el contexto SELinux para archivos y directorios que fueron creados cuando SELinux fue inhabilitado.
-
Tras que el sistema reinicie, confirme que el comando
getenforcedevuelveEnforcing:$ getenforce Enforcing
|
Tras cambiar al modo de aplicación estricta, SELinux podría denegar algunas acciones debido a reglas de normativa de SELinux incorrectas o ausentes. Para ver qué acciones deniega SELinux, ejecute el siguiente comando como usuario root:
Alternativamente, con el
Los usuarios estándar pueden utilizar el IGU Si está activo SELinux y la demonio Audit (auditd) no está ejecutándose en su sistema, encontrar busque ciertos mensajes de SELinux en la salida del comando dmesg:
Si SELinux deniega algunas acciones, consulte los capítulos de Soluciones de problemas relacionados con SELinux en el documento RHEL 8 Using SELinux para información acerca de soluciones. |
Deshabilitar SELinux
Utilice el procedimiento siguiente para deshabilitar permanentemente SELinux.
|
Cuando SELinux está inhabilitada, la directiva de SELinux no se carga en absoluto; no se aplica y no se registran los mensajes AVC. Por lo tanto, se pierden todas las ventajas de ejecutar SELinux que se enumeran en Beneficios de SELinux. Se recomienda usar el modo permisivo en lugar de deshabilitar SELinux de forma permanente. Consulte [_changing_to_permissive_mode] para obtener más información sobre el modo permisivo. |
|
Deshabilitar SELinux usando la opción SELINUX=disabled en /etc/selinux/config lleva a un proceso en el cual el kernel arranca con SELinux habilitado y conmuta al modo deshabilitado más tarde en el proceso de arranque. Debido a que pueden ocurrir fallos de memoria y condiciones en la marcha que originen fallos en el kernel, es preferible deshabilitar SELinux añadiendo el parámetro selinux=0 en la línea de comandos del kernel como se describe en Cambiar los modos SELinux en el momento del arranque si su escenario requiere realmente deshabilitar completamente SELinux. |
-
El paquete
grubbyestá instalado:$ rpm -q grubby grubby-_version_
-
Abra el archivo
/etc/selinux/configen el editor de texto que prefiera, por ejemplo:$ sudo vi /etc/selinux/config -
Configura la opción SELINUX=disabled:
# Este archivo controla el estado de SELinux en el sistema. # SELINUX= puede tomar uno de estos tres valores # enforcing - Normativa de seguridad de SELinux está reforzada. # permissive - SELinux declara avisos en vez de reforzar. # disabled - Ninguna normativa de SELinux está cargada. SELINUX=disabled # SELINUXTYPE= puede tomar uno de estos dos valores # targeted - Procesos apuntados están protegidos # mls - Protección de Seguridad Multi Nivel. SELINUXTYPE=targeted -
Guarde el cambio, y rearranque su sistema:
$ sudo reboot
-
Tras rearrancar, confirme que la instrucción
getenforcedevuelveDisabled:$ getenforce Disabled
Cambiadno Modos SELinux en Tiempo de Arranque
Al arrancar, puede poner varios parámetros del kernel para cambiar la manera de ejecutar SELinux:
- enforcing=0
-
Al configurar este parámetro, el sistema se inicia en modo permisivo, lo cual resulta útil para solucionar incidencias. Usar el modo permisivo podría ser la única opción para detectar un problema si el sistema de archivos está demasiado corrupto. Además, en modo permisivo, el sistema continúa creando las etiquetas correctamente. Los mensajes AVC que se crean en este modo pueden ser diferentes a los del modo reforzado.
En el modo permisible, solo la primera denegación desde una serie de los mismos denegados es informado. Sin embargo, en modo refuerzo, quizá obtiene una denegación relacionada con lectura de un directorio, y una detención de aplicación. En modo permisivo, obtiene el mismo mensaje AVC, pero la aplicación continúa leyendo archivos en el directorio y obtiene un AVC para cada denegación en adición.
- selinux=0
-
Este parámetro hace que el núcleo no cargue ninguna parte de la infraestructura SELinux. Los scripts de inicio detectan que el sistema se ha iniciado con el parámetro
selinux=0y modifican el archivo/.autorelabel. Esto hace que el sistema vuelva a etiquetar automáticamente la próxima vez que se inicie con SELinux habilitado.Utilizar el parámetro
selinux=0no está recomendado. Para depurar su sistema, prefiera emplear modo permisivo. - autorelabel=1
-
Este parámetro fuerza el sistema para re-etiquetar similarmente a los comandos siguientes:
$ sudo touch /.autorelabel $ sudo rebootSi un archivo contiene una cantidad grande de objetos mal etiquetados, inicie el sistema en modo permisivo para crear el proceso de auto-reetiquetado.
Para obtener parámetros de arranque del kernel adicionales relacionados con SELinux, como checkreqprot, consulte el archivo kernel-parameters.txt. Este archivo está disponible en el paquete fuente de su kernel de Linux (.src.rpm). Para descargar el paquete fuente que contiene el kernel utilizado actualmente:
$ sudo dnf download --source kernel
Want to help? Learn how to contribute to Fedora Docs ›