Ir al contenidoIr a la navegación de la página: página anterior [tecla de acceso p]/página siguiente [tecla de acceso n]
documentation.suse.com / SELinux

SELinux

Fecha de publicación: 12 Dic 2024
DESCRIPCIÓN

El tema proporciona información básica sobre Security-Enhanced Linux.

INTENCIÓN

Desea comprender SELinux y cómo configurarlo en SLE Micro.

ESFUERZO

Se tardan aproximadamente 40 minutos en leer el artículo.

1 Acerca de SELinux

SELinux se desarrolló como una solución de seguridad adicional de Linux que utiliza el marco de seguridad del kernel de Linux. El propósito era permitir una directiva de seguridad más detallada que fuera más allá de los controles de acceso discrecional (DAC) estándar, los permisos de archivo tradicionales de propietario/grupo/mundo y lectura/escritura/ejecución.

SELinux utiliza etiquetas adjuntas a objetos (por ejemplo, archivos y sockets de red) para tomar decisiones de acceso.

La acción por defecto de SELinux es denegar cualquier acceso. SELinux permite solo las acciones que se permitieron específicamente en la directiva de SELinux. Otra característica de SELinux que aumenta la seguridad es que permite el confinamiento estricto de los procesos hasta el punto en que los procesos no pueden acceder a los archivos de otros procesos en el mismo sistema.

SELinux fue diseñado para mejorar las soluciones de seguridad existentes, no para reemplazarlas. Por ejemplo, el control de acceso discrecional (DAC) se sigue aplicando, incluso si el sistema utiliza SELinux. Si DAC deniega el acceso primero, SELinux no se utiliza porque el acceso ya estaba bloqueado por otro mecanismo.

2 Obtención de SELinux

SELinux se instala por defecto cuando YaST instala SLE Micro o forma parte de las imágenes preconstruidas.

Si SELinux no está configurado en su sistema, ejecute el siguiente comando:

# transactional-update setup-selinux

Rearranque el sistema después de que finalice el comando. El comando instala la directiva de SELinux si no está instalada, establece el modo de SELinux enforcing y reconstruye initrd.

3 Modos de SELinux

SELinux puede ejecutarse en uno de estos tres modos: disabled, permissive o enforcing.

El uso del modo disabled significa que no se aplica ninguna regla de la directiva de SELinux y que el sistema no está protegido. Por lo tanto, no se recomienda utilizar el modo disabled.

En el modo permissive, SELinux está activo, se carga la directiva de seguridad, se etiqueta el sistema de archivos y se registran las entradas de denegación de acceso. Sin embargo, la directiva no se aplica y, por lo tanto, no se deniega el acceso.

En el modo enforced, se aplica la directiva de seguridad. Se deniegan todos los accesos no permitidos explícitamente por la directiva.

Para obtener información sobre cómo cambiar entre los modos de SELinux, consulte la Sección 3.1, “Cambio del modo de SELinux”.

3.1 Cambio del modo de SELinux

Puede cambiar el modo de SELinux de forma temporal o permanente.

3.1.1 Cambio temporal del modo de SELinux

Para establecer temporalmente el modo permissive o enforcing de SELinux, utilice el comando setenforce.

El comando setenforce tiene la siguiente sintaxis:

# setenforceMODE_ID

donde MODE_ID es 0 para el modo permissive o 1 para el modo enforced.

Recuerde que no puede inhabilitar SELinux mediante el comando setenforce.

3.1.2 Cambio permanente del modo de SELinux

Para realizar cambios en el modo de SELinux que persistan al rearrancar el sistema, edite el archivo de configuración /etc/selinux/config. En este archivo, también puede inhabilitar SELinux en el sistema. Sin embargo, no se recomienda esta acción. Si cabe la posibilidad de que SELinux esté causando problemas en el sistema, cambie al modo permissive y depure el sistema.

En el archivo /etc/selinux/config, cambie el valor de SELINUX a disabled, permissive o enforced de la siguiente manera:

SELINUX=disabled

Los cambios en el archivo se aplican después del siguiente rearranque.

Nota
Nota: cambio de etiqueta del sistema después de cambiar del modo disabled

Si inhabilita SELinux en el sistema y luego lo habilita, asegúrese de volver a etiquetar el sistema. Si SELinux está inhabilitado y realiza cambios en el sistema de archivos, los cambios ya no se reflejan en el contexto (por ejemplo, los archivos nuevos no tienen contexto). Por lo tanto, debe volver a etiquetar el sistema mediante el comando restorecon, con el parámetro de arranque autorelabel o creando un archivo que active el cambio de etiqueta en el siguiente arranque. Para crear el archivo, ejecute el siguiente comando:

# touch /etc/selinux/.autorelabel

Después de rearrancar, el archivo /etc/selinux/.autorelabel se sustituye por otro archivo de indicador, /etc/selinux/.relabelled, para evitar que se vuelva a etiquetar en los rearranques posteriores.

3.1.3 Verificación del modo de SELinux activo

Para verificar el modo, ejecute el siguiente comando:

# getenforce

El comando debe devolver permissive o enforced, dependiendo del MODE_ID proporcionado.

3.2 Verificación de que SELinux funciona

Si está realizando cambios de configuración, puede ser útil cambiar al modo permissive. Durante este tiempo, los usuarios pueden etiquetar archivos incorrectamente y, por lo tanto, causar problemas al volver al modo enforcing.

Para devolver el sistema a su estado seguro, realice los siguientes pasos:

  1. Restablezca el contexto de seguridad:

    > sudo restorecon -R /
  2. Cambie al modo enforcing definiendo SELINUX=enforcing en /etc/selinux/config.

  3. Rearranque el sistema y vuelva a iniciar sesión.

  4. Ejecute el comando sestatus -v. Debería proporcionar un resultado similar al siguiente:

    > sudosestatus -v
    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:     requested(insecure)
    Max kernel policy version:      33
    
    Process contexts:
    Current context:                unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    Init context:                   system_u:system_r:init_t:s0
    /usr/sbin/sshd                  system_u:system_r:sshd_t:s0-s0:c0.c1023
    
    File contexts:
    Controlling terminal:           unconfined_u:object_r:user_tty_device_t:s0
    /etc/passwd                     system_u:object_r:passwd_file_t:s0
    /etc/shadow                     system_u:object_r:shadow_t:s0
    /bin/bash                       system_u:object_r:shell_exec_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /bin/login                      system_u:object_r:login_exec_t:s0
    /bin/sh                         system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:shell_exec_t:s0
    /sbin/agetty                    system_u:object_r:bin_t:s0 \
                                    -> system_u:object_r:getty_exec_t:s0
    /sbin/init                      system_u:object_r:bin_t:s0 -> \
                                    system_u:object_r:init_exec_t:s0
    /usr/sbin/sshd                  system_u:object_r:sshd_exec_t:s0
  5. Si el sistema no funciona correctamente, compruebe los archivos de registro de /var/log/audit/audit.log. Para obtener más información, consulte SELinux troubleshooting.

4 Contexto de seguridad de SELinux

El contexto de seguridad es un conjunto de datos asignados a un archivo o proceso. Se compone de un usuario, función, tipo, nivel y categoría de SELinux. Esta información se utiliza para tomar decisiones de control de acceso.

Campos de contexto de SELinux
usuario de SELinux

Una identidad definida en la directiva que está autorizada para un conjunto específico de funciones y para un rango de niveles específicos. Cada usuario de Linux se asigna a un solo usuario de SELinux. Sin embargo, un usuario de SELinux puede tener varias funciones.

SELinux no utiliza la lista de cuentas de usuario mantenida por Linux en /etc/passwd, sino que utiliza su propia base de datos y asignación. Por convención, el nombre de identidad tiene el sufijo _u, por ejemplo: user_u.

Cuando se crea una nueva cuenta de Linux y el usuario de SELinux no está asignado a la cuenta, se utiliza el usuario de SELinux por defecto. Normalmente, el valor por defecto es unconfined_u. Para obtener información sobre cómo cambiar el valor por defecto, consulte la Sección 7.5.2, “El comando semanage login.

función

Define un conjunto de permisos que se pueden otorgar a un usuario. Una función define a qué tipos puede acceder un usuario asignado a esta función. Por convención, el nombre de la función tiene como sufijo _r, por ejemplo: system_r.

tipo

El tipo transmite información sobre cómo pueden interactuar archivos y procesos concretos. Un proceso consta de archivos con un tipo concreto de SELinux y no puede acceder a archivos que no sean de ese tipo. Por convención, el nombre del tipo tiene como sufijo _t, por ejemplo: var_t.

nivel

Un atributo opcional que especifica el rango de niveles de autorización en la seguridad multinivel.

categoría

Un atributo opcional que permite añadir categorías a procesos, archivos y usuarios. Un usuario puede acceder a los archivos de la misma categoría.

A continuación se muestra un ejemplo de un contexto SELinux:

allow user_t bin_t:file {read execute gettattr};

Esta regla de ejemplo indica que el usuario que tiene el tipo de contexto user_t (este usuario se denomina objeto de origen) puede acceder a los objetos de clase archivo con el tipo de contexto bin_t (el destino), utilizando los permisos read, execute y getattr.

5 Descripción general de la directiva de SELinux

La directiva es el componente clave de SELinux. La directiva de SELinux define reglas que especifican qué objetos pueden acceder a qué archivos, directorios, puertos y procesos de un sistema. Para ello, se define un contexto de seguridad para todos esos elementos.

Una directiva de SELinux contiene un gran número de reglas. Para que sean más fáciles de gestionar, las directivas suelen dividirse en módulos. Esto permite al administrador activar o desactivar la protección para distintas partes del sistema.

Al compilar la directiva para su sistema, tendrá la opción de trabajar con una directiva modular o con una directiva monolítica, donde se utiliza una directiva enorme para proteger todo el sistema. Se recomienda encarecidamente utilizar una directiva modular y no una directiva monolítica. Las directivas modulares son mucho más fáciles de gestionar.

SLE Micro se suministra con la directiva de SELinux targeted.

5.1 Trabajo con módulos de SELinux

Como administrador, puede activar o desactivar módulos. Esto puede ser útil si desea inhabilitar solo una parte de la directiva de SELinux y no desea ejecutar un servicio específico sin la protección de SELinux.

Para ver todos los módulos de directivas de SELinux en uso, ejecute el comando:

        semodule -l

Después de obtener el nombre del módulo que desea desactivar, ejecute el comando:

> sudo semodule -d MODULENAME

Para activar el módulo de directivas, ejecute el comando:

> sudo semodule -e MODULENAME

5.2 Creación de directivas para contenedores

SLE Micro se proporciona con una directiva que, por defecto, no permite que los contenedores accedan a los archivos fuera de los datos del contenedor. Por otro lado, se permite todo el acceso a la red. Normalmente, los contenedores se crean con montajes de vinculación y deben poder acceder a otros directorios, como /home o /var. Es posible que desee permitir el acceso a estos directorios o, por el contrario, restringir algunos puertos al contenedor incluso si se utiliza SELinux en el sistema. En tal caso, debe crear nuevas reglas de directiva que habiliten o inhabiliten el acceso. SLE Micro proporciona la herramienta Udica para este fin.

El siguiente procedimiento describe cómo crear una directiva personalizada para los contenedores:

  1. Asegúrese de que SELinux esté en modo enforcing. Para obtener información detallada, consulte la Sección 3.1, “Cambio del modo de SELinux”.

  2. Inicie un contenedor con los siguientes parámetros:

    # podman run -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

    El contenedor se ejecuta con la directiva por defecto que no permite el acceso a los puntos de montaje, pero no restringe otros puertos.

  3. Puede salir del contenedor.

  4. Obtenga el ID del contenedor:

    # podman ps -a
    
    CONTAINER ID  IMAGE                                                                              COMMAND     CREATED        STATUS            PORTS               NAMES
    e59f9d0f86f2  registry.opensuse.org/devel/bci/tumbleweed/containerfile/opensuse/bci/ruby:latest  /bin/bash   8 minutes ago  Up 8 seconds ago  0.0.0.0:21->21/tcp  zen_ramanujan
  5. Cree un archivo JSON que Udica utilizará para crear una directiva personalizada para el contenedor:

    # podman inspect e59f9d0f86f2 >OUTPUT_JSON_FILE

    Por ejemplo, sustituya OUTPUT_JSON_FILE por container.json.

  6. Ejecute Udica para generar una directiva según los parámetros del contenedor:

    # udica -jOUTPUT_JSON_FILECUSTOM_CONTAINER_POLICY

    Por ejemplo:

    # udica -j container.json custom_policy
  7. De acuerdo con las instrucciones proporcionadas, cargue los módulos de directivas ejecutando:

    # semodule -i custom_policy.cil /usr/share/udica/templates/{base_container.cil,net_container.cil,home_container.cil}
  8. Ejecute un contenedor con el nuevo módulo de directivas con la opción --security-opt siguiente:

    # podman run --security-opt label=type:custom_policy.process -v /home:/home:rw -v /var/:/var/:rw -p 21:21 -it sle15 bash

6 Booleanos de SELinux

Los booleanos de SELinux admiten un enfoque de gestión de directivas flexible. Por ejemplo, permiten inhabilitar una directiva concreta en un servidor y mantener la misma directiva activa en otro. En otras palabras, un booleano puede entenderse como un cambio para una regla de directiva. En lugar de cambiar una directiva concreta, puede desactivarla. En el código de la directiva, los booleanos se denominan tunable. Dado que los booleanos se incluyen en la directiva, están disponibles en cuanto se carga una directiva.

Los cambios en los booleanos pueden ser permanentes o temporales y durar hasta el final de la sesión.

SELinux ofrece herramientas que permiten mostrar y ver detalles o cambiar el estado de los booleanos. Para obtener más información, consulte las secciones siguientes.

6.1 Uso de booleanos

6.1.1 Listado de booleanos

Puede utilizar el comando getsebool o semanage para mostrar los booleanos definidos actualmente. Para mostrar todos los booleanos definidos actualmente, junto con su estado, ejecute el siguiente comando:

# getsebool -a

abrt_anon_write --> off
abrt_handle_event --> off
abrt_upload_watch_anon_write --> on
...

Para obtener más detalles sobre booleanos concretos, puede utilizar el comando semanage de la siguiente manera:

# semanage boolean -l

SELinux boolean               State   Default     Description

abrt_anon_write               (off  ,  off)       Allow abrt to anon write
abrt_handle_event             (off  ,  off)       Allow abrt to handle event
abrt_upload_watch_anon_write  (on   ,   on)       Allow abrt to upload watch anon write

Para obtener el estado de un booleano individual, puede utilizar el siguiente comando:

# getseboolBOOLEAN_NAME

Como alternativa, puede utilizar el comando grep en la resultado de semanage boolean:

# semanage boolean -l | grepBOOLEAN_NAME

6.1.2 Alternar booleanos

Los comandos setsebool y semanage se pueden utilizar para alternar el valor de los booleanos. Puede cambiar el estado del booleano de forma permanente o temporal hasta que finalice la sesión. Para cambiar un valor de booleano temporalmente, ejecute el siguiente comando:

# setseboolBOOLEAN_NAMEBOOLEAN_VALUE

Donde BOOLEAN_VALUE es on o off.

Para cambiar un valor de booleano de forma permanente, ejecute uno de los dos comandos siguientes:

# setsebool -PBOOLEAN_NAMEBOOLEAN_VALUE

También puede utilizar el comando semanage:

# semanage boolean -m --BOOLEAN_VALUEBOOLEAN_NAME

Donde BOOLEAN_VALUE es on o off.

Un solo booleano puede habilitar o inhabilitar varias reglas de directiva. Para ver qué reglas de directiva están habilitadas o inhabilitadas por qué booleanos, utilice la herramienta sedispol, que puede analizar el archivo de directiva:

# sedispol /etc/selinux/targeted/policy/policy.32

Dado que las reglas de directiva suelen ser enormes, se recomienda configurar un archivo de salida seleccionando f y especificando un nombre de archivo. Después de especificar el nombre del archivo, pulse 6. A continuación, puede inspeccionar el archivo.

7 Herramientas para gestionar SELinux

SLE Micro proporciona herramientas para gestionar SELinux en el sistema. Si las herramientas descritas a continuación no están instaladas en su sistema, instálelas ejecutando:

# transactional-update pkg install policycoreutils-python-utils

Después de una instalación correcta, rearranque el sistema.

7.1 Uso de la opción Z

Si SELinux está instalado y configurado, puede utilizar -Z para los comandos normales como ls, id o ps. Con esta opción, puede mostrar el contexto de seguridad de los archivos o procesos. Por ejemplo, con el comando ls:

> ls -Z /etc/shadow

        system_u:object_r:shadow_t:s0 /etc/shadow

7.2 El comando chcon

El nombre del comando chcon significa "cambiar contexto". El comando puede cambiar el contexto de seguridad completo de un archivo al valor proporcionado en la interfaz de línea de comandos, o puede cambiar partes del contexto. Como alternativa, puede proporcionar un archivo que sirva de referencia.

Para cambiar el contexto de seguridad completo de un archivo, la sintaxis del comando es la siguiente:

# chconSECURITY_CONTEXTFILENAME

Donde:

  • SECURITY_CONTEXT tiene el formato: SELinux_USER:ROLE:TYPE:LEVEL:CATEGORY. Por ejemplo, el contexto podría ser: system_u:object_r:httpd_config_t:s0.

  • FILENAME es una vía al archivo cuyo contexto se debe cambiar.

Para definir un contexto de seguridad según un archivo proporcionado que sirva de referencia, ejecute chcon de la siguiente forma:

# chcon --reference=REFERENCE_FILEFILENAME

Donde:

  • REFERENCE_FILE es una vía a un archivo que debe utilizarse como referencia.

  • FILENAME es una vía al archivo cuyo contexto se debe cambiar.

Como alternativa, puede cambiar solo una parte del contexto de seguridad. La sintaxis general del comando chcon es la siguiente:

# chconCONTEXT_OPTIONCONTEXT_PARTFILENAME

Las opciones y los argumentos tienen el siguiente significado:

  • Dependiendo de la parte de contexto, CONTEXT_OPTION puede ser cualquiera de los siguientes:

    -u resp --user

    Indica que se cambiará un contexto de usuario de SELinux en el archivo proporcionado:

    # chcon -u system_u logind.conf
    -r resp --role

    Solo se cambiará la parte de la función en el contexto del archivo proporcionado:

    # chcon -r object_r logind.conf
    -t resp --type

    Solo se cambiará la parte del tipo en el contexto del archivo proporcionado:

    # chcon -t etc_t logind.conf
    -l resp --range

    Solo se cambiará la parte del rango en el contexto de seguridad:

    # chcon -l s0 logind.conf
  • CONTEXT_PART es el valor concreto del contexto de seguridad que se va a definir.

  • FILENAME es una vía al archivo cuyo contexto se va a cambiar.

Nota
Nota: uso de chcon en enlaces simbólicos

Por defecto, cuando se cambia el contexto de seguridad en un enlace simbólico, se cambia el contexto del destino del enlace, pero no se cambia el contexto del enlace simbólico. Para forzar a que chcon cambie el contexto del enlace simbólico y no del destino del enlace, utilice la opción --no-dereference como se muestra a continuación:

# chcon --no-dereference -u system_u -t etc_t network.conf

Puede cambiar el contexto de todos los archivos de un directorio mediante la opción recursiva:

# chcon --recursive  system_u:object_r:httpd_config_t:s0 conf.d

7.3 comandos getenforce y setenforce

El comando getenforce devuelve el modo de SELinux actual: Enforcing, Permissive o Disabled.

# getenforce

Permissive

El comando setenforce cambia temporalmente el modo de SELinux a enforcing o permissive. No puede utilizar este comando para inhabilitar SELinux. Tenga en cuenta que el cambio solo se mantiene hasta el siguiente rearranque. Para cambiar el estado de forma permanente, siga la descripción de la Sección 3.1, “Cambio del modo de SELinux”.

# setenforceMODE_ID

donde MODE_ID es 0 para el modo permissive o 1 para el modo enforced.

7.4 El guion fixfiles

El guion permite realizar las siguientes tareas con el contexto de seguridad:

  • Comprobar si el contexto es correcto

  • Cambiar las etiquetas de contexto de archivo incorrectas

  • Volver a etiquetar el sistema si ha añadido una directiva nueva

La sintaxis del guion es la siguiente:

# fixfiles [OPTIONS] ARGUMENT

Donde:

  • OPTIONS puede ser lo siguiente:

    -l LOGFILE

    Guarda el resultado en el archivo proporcionado.

    -o OUTPUT_FILE

    Guarda en el archivo de resultado proporcionado los nombres de todos los archivos cuyo contexto de archivo difiere del valor por defecto.

    -F

    Fuerza un restablecimiento del contexto.

  • ARGUMENT puede ser algo de lo siguiente:

    check

    Muestra el contexto de archivo anterior y actual para una etiqueta incorrecta sin realizar ningún cambio

    relabel

    Vuelve a etiquetar los contextos de archivo incorrectos de acuerdo con la directiva cargada actualmente

    restore

    Restaura los contextos de archivo incorrectos a los valores por defecto

    verify

    Muestra todos los archivos con etiquetas de contexto de archivo incorrectas sin realizar ningún cambio

7.5 El comando semanage

El comando semanage se puede utilizar para configurar partes de la directiva sin necesidad de volver a compilar la directiva desde los orígenes. El comando permite realizar las siguientes tareas:

  • Gestionar booleanos mediante el argumento boolean. Para obtener detalles sobre los booleanos, consulte la Sección 6.1, “Uso de booleanos”.

  • Ajustar el contexto de los archivos mediante el argumento fcontext.

  • Gestionar asignaciones de usuarios mediante el argumento login.

  • Gestionar usuarios de SELinux mediante el argumento user.

  • Gestionar módulos de directivas de SELinux mediante el argumento module.

La sintaxis general del comando es la siguiente:

# semanageARGUMENTOPTIONS [OBJECT_NAME]

Donde:

  • ARGUMENT es uno de estos valores: login, user, fcontext, boolean, module.

  • OPTIONS depende del valor de ARGUMENT proporcionado. Las opciones comunes se explican en Opciones comunes.

  • OBJECT_NAME, dependiendo del valor proporcionado en ARGUMENT, puede ser un nombre de inicio de sesión, un nombre de módulo, un nombre de archivo o un usuario de SELinux.

Opciones comunes
-a, --add

Añade un objeto proporcionado.

-h, --help

Imprime el comando help.

--extract

Muestra los comandos que se han utilizado para cambiar el sistema (booleanos, contexto de archivo, etc.).

-l, --list

Muestra todos los objetos.

-m, --modify

Modifica el objeto proporcionado.

-n, --noheading

Modifica el resultado de la operación de listado omitiendo los encabezados.

-s, --seuser

Especifica el usuario de SELinux.

Otras opciones son específicas de comandos semanage concretos y se describen en las secciones correspondientes.

7.5.1 El comando semanage fcontext

Con el comando semanage fcontext, puede realizar las siguientes tareas:

  • Consultar definiciones de contexto de archivo

  • Añadir contextos en archivos

  • Añadir sus propias reglas

Los cambios realizados en el contexto de archivo mediante el comando semanage fcontext no requieren modificaciones ni que se recompile la directiva.

Además de las opciones comunes descritas en Opciones comunes, el comando semanage fcontext admite las siguientes opciones:

-e, --equal

Permite utilizar el contexto de la vía proporcionada para etiquetar archivos en un directorio diferente (la vía de destino proporcionada). Por ejemplo, desea asignar el mismo contexto que tiene /home a un directorio personal /export/home alternativo. Si utiliza esta opción, debe proporcionar la vía de origen y la vía de destino:

# semanage fcontext -a -e /home /export/home
-f, --ftype

Especifique un tipo de archivo. Use uno de los valores siguientes:

  • a: todos los archivos, que también es el valor por defecto

  • b: un dispositivo de bloques

  • c: un dispositivo de caracteres

  • d: un directorio

  • f: archivos normales

  • l: un enlace simbólico

  • p: una canalización con nombre

  • s: un socket

7.5.2 El comando semanage login

semanage login permite realizar las siguientes tareas:

  • Asignar usuarios de Linux a un usuario de SELinux concreto. Por ejemplo, para asignar el usuario de Linux tux en sysadm_u, ejecute el comando:

    # semanage login -a -s sysadm_u tux
  • Asignar un grupo de usuarios de Linux a un usuario de SELinux concreto. Por ejemplo, para asignar usuarios del grupo writers en user_u, ejecute el comando:

    # semanage login -a -s user_u %writers

    El grupo aparece en el resultado de semanage login -l con el prefijo %.

    Tenga en cuenta que el grupo de usuarios debe ser el principal, ya que la asignación de usuarios de SELinux a grupos complementarios puede provocar asignaciones incompatibles.

    # semanage login -m -s staff_u %writers
  • Asignar usuarios de Linux en un rango de seguridad SELinux MLS/MCS concreto.

  • Modificar la asignación ya creada. Para ello, basta con sustituir la opción -a por -m en los comandos anteriores.

  • Definir el usuario de SELinux por defecto para los nuevos usuarios de Linux. El usuario habitual de SELinux por defecto es unconfined_u. Para cambiar el valor a staff_u, ejecute el comando:

    # semanage login -m -s staff_u __default__

7.5.3 El comando semanage boolean

El comando semanage boolean se utiliza para controlar booleanos en la directiva de SELinux.

La sinopsis del comando tiene el siguiente aspecto:

semanage boolean [-h] [-n]  [ --extract |
       --deleteall | --list [-C] | --modify ( --on | --off | -1 | -0 ) boolean ]

Además de las opciones comunes, puede utilizar las siguientes opciones específicas para el comando semanage boolean:

--list -C

Para mostrar una lista de modificaciones locales de booleanos.

-m --on | -1

Para activar el booleano proporcionado.

-m --off | -0

Para desactivar el booleano proporcionado.

-D, --deleteall

Para eliminar todas las modificaciones locales de booleanos.

El uso más común del comando es activar o desactivar un booleano concreto. Por ejemplo, para activar el booleano authlogin_yubikey, ejecute:

# semanage boolean -m on authlogin_yubikey

7.5.4 El comando semanage user

El comando semanage user controla la asignación entre el usuario de SELinux y las funciones y los niveles de MLS/MCS.

Además de las opciones comunes descritas en Opciones comunes, el comando semanage use admite las siguientes opciones:

-R [FUNCIONES], --roles [FUNCIONES]

Una lista de funciones de SELinux. Puede encerrar varias funciones entre comillas dobles y separarlas con espacios, o puede utilizar -R varias veces.

Con este comando, puede realizar las siguientes tareas:

  • Mostrar la asignación de usuarios de SELinux en funciones ejecutando:

    # semanage user -l
  • Cambiar las funciones asignadas al usuario de SELinux user_u.

    # semanage user -m -R "system_r unconfined_r user_r"
  • Asignar a admin_u la función staff_r y una categoría s0:

    # semanage user -a -R "staff_r -r s0 admin_u
  • Crear un nuevo usuario de SELinux, por ejemplo, admin_u con la función staff_r. También es necesario definir el prefijo de etiquetado para este usuario mediante -P:

    # semanage user -a -R "staff_r" -P admin admin_u

7.5.5 El comando semanage module

El comando semanage module puede instalar, eliminar, inhabilitar o habilitar módulos de directivas de SELinux.

Además de las opciones comunes descritas en Opciones comunes, el comando semanage fcontext admite las siguientes opciones:

-d, --disable

Para inhabilitar el módulo de directivas de SELinux proporcionado:

# semanage module --disable MODULE_NAME
-e, --enable

Para habilitar el módulo de directivas de SELinux proporcionado:

# semanage module --enable MODULE_NAME

7.6 El comando sestatus

sestatus obtiene el estado de un sistema en el que se ejecuta SELinux.

La sintaxis genérica del comando tiene este aspecto:

sestatus [OPTION]

Cuando se ejecuta sin opciones ni argumentos, el comando genera la siguiente información:

# 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:     requested (insecure)
Max kernel policy version:      33

El comando puede tener las siguientes opciones:

-b

Muestra el estado de los booleanos en el sistema.

-v

Muestra el contexto de seguridad de los archivos y procesos mostrados en el archivo /etc/sestatus.conf.