SELinux

SELinux para principiantes que usan CentOS

SELinux para principiantes que usan CentOS
Desarrollado por la NSA para evitar intrusiones y accesos malévolos, Security-Enhanced Linux o SELinux es una función avanzada de control de acceso que se incluye con la mayoría de las distribuciones modernas de Linux. SELinux se define como el sistema de control de acceso obligatorio (MAC) desarrollado como reemplazo del sistema de control de acceso discrecional (DAC).

SELinux puede parecer abrumador y muy difícil de implementar en la mayoría de los sistemas modernos. Sin embargo, la configuración de SELinux tiene enormes beneficios tanto en la aplicación de la seguridad como en la resolución de problemas.

Este tutorial discutirá varios conceptos implementados por SELinux y explorará varios métodos prácticos para implementar SELinux.

NOTA: Antes de comenzar, es bueno usar los comandos de este tutorial como usuario root o como usuario dentro del grupo sudoers.

Instalar paquetes SELinux

Instalemos varios paquetes de SELinux, que a su vez ayudarán a trabajar con las políticas de SELinux.

Antes de proceder a instalar los paquetes SELinux, es bueno que verifiquemos cuáles están instalados en el sistema actual.

En la mayoría de las instalaciones de distribuciones REHL, algunos paquetes se instalan de forma predeterminada. Estos paquetes incluyen:

  1. setools: este paquete se usa para monitorear registros, consultar políticas y administrar archivos de contexto.
  2. policycoreutils-python: proporciona las utilidades principales de Python para administrar SELinux
  3. policycoreutils: este paquete también proporciona utilidades para administrar SELinux.
  4. mcstrans: mcstrans proporciona el demonio de traducción SELinux, que traduce varios niveles a formatos fáciles de entender fácilmente.
  5. setools-console - similar a setools.
  6. Política de Selinux: proporciona una referencia para configurar la política de SELinux
  7. Selinux-policy-apuntado - similar a SELinux-policy
  8. Libselinux-utils - SELinux utilidades libselinux que ayudan a administrar SELinux
  9. Setroubleshoot-server - herramientas para solucionar problemas de SELinux

Para verificar qué paquetes ya están instalados en su sistema, puede usar el comando rpm -qa y canalizar el resultado a grep para SELinux como:

rpm -qa | grep selinux
libselinux-utils-2.9-4.el8_3.x86_64
rpm-plugin-selinux-4.14.3-4.el8.x86_64
selinux-policy-apuntado-3.14.3-54.el8_3.2.Noarch
python3-libselinux-2.9-4.el8_3.x86_64
selinux-política-3.14.3-54.el8_3.2.Noarch
libselinux-2.9-4.el8_3.x86_64

Esto debería darle una salida de todos los paquetes instalados para el soporte de SELinux

Si no todos los paquetes SELinux están instalados en su sistema, use yum para instalarlos como se muestra en el siguiente comando:

yum install policycoreutils policycoreutils-python-utils selinux-policy selinux-policy-target libselinux-utils setroubleshoot-server setools setools-console mcstrans

Modos y estados de SELinux

Empecemos ahora a jugar con SELinux, específicamente, los modos SELinux.

Modos SELinux

Cuando está habilitado, SELinux puede tener tres modos posibles:

Modo de aplicación

Si se aplica el modo SELinux, se asegurará de que no se niegue el acceso no autorizado al sistema por parte de ningún usuario o proceso. El modo de aplicación también mantiene registros de cualquier intento de acceso no autorizado.

Modo permisivo

El modo permisivo actúa como un estado SELinux parcialmente habilitado. En este modo, no se niega el acceso ya que SELinux no hace cumplir sus políticas en este modo. Sin embargo, el modo permisivo mantiene un registro de cualquier intento de violación de la política. Este modo es muy eficaz para realizar pruebas antes de habilitarlo por completo, ya que los usuarios y los componentes aún pueden interactuar con el sistema, pero aún pueden recopilar registros. Esto le permite ajustar su sistema de la manera que mejor le parezca.

Modo deshabilitado

El modo deshabilitado también puede verse como un estado deshabilitado en el que SELinux está deshabilitado y no ofrece ninguna seguridad.

Estados SELinux

Una vez que SELinux está instalado en un sistema. Puede tener estados binarios: habilitado y deshabilitado. Para ver el estado de SELinux, use el comando:

getenforce
Discapacitado

La salida anterior indica que SELinux está actualmente deshabilitado.

También puede usar el comando sestatus como se muestra a continuación:

sestatus
Estado de SELinux: deshabilitado

Habilitar y deshabilitar SELinux

Los estados y la configuración de SELinux son manejados por el archivo de configuración ubicado en / etc / selinux / config. Puedes usar el comando cat para ver su contenido.

cat / etc / selinux / config
#Este archivo controla el estado de SELinux en el sistema.
# SELINUX = puede tomar uno de estos tres valores:
#enforcing - Se aplica la política de seguridad de SELinux.
#permissive - SELinux imprime advertencias en lugar de imponer.
#disabled - No se carga ninguna política de SELinux.
SELINUX = hacer cumplir
# SELINUXTYPE = puede tomar uno de estos tres valores:
# objetivo: los procesos específicos están protegidos,
# mínimo: modificación de la política de destino. Solo los procesos seleccionados están protegidos.
# mls - Protección de seguridad multinivel.
SELINUXTYPE = segmentado

De la salida anterior, tenemos dos directivas principales habilitadas. La directiva SELINUX especificó el modo en el que se configura SELinux. La directiva SELINUXTYPE especifica el conjunto de políticas de SELinux. De forma predeterminada, SELinux utiliza una política específica que le permite personalizar los permisos de control de acceso. La otra política es seguridad multinivel o MLS.

Puede encontrar una política mínima en algunas versiones.

cd / etc / selinux /
[ls -l
total 4
-rw-r - r-- 1 root root 548 16 de febrero 22:40 config
drwxr-xr-x 1 raíz raíz 4096 16 de febrero 22:43 mls
-rw-r - r-- 1 raíz raíz 2425 21 de julio de 2020 semanage.conf
drwxr-xr-x 1 root root 4096 16 de febrero 22:40 dirigido

Veamos ahora cómo habilitar SELinux en el sistema. Recomendamos configurar primero el modo SELINUX en permisivo y no forzado.

nano / etc / selinux / config

Ahora edite la directiva SELINUX como:

SELINUX = permisivo

Una vez que guarde el archivo, reinicie el sistema.

reiniciar

NOTA: Recomendamos encarecidamente configurar la directiva SELINUX en permisiva antes de hacer cumplir SELinux.

Una vez que reinicie el sistema, verifique los registros informados por SELinux en / var / log / messages.

A continuación, asegúrese de no tener errores y haga cumplir SELinux configurando la directiva para hacer cumplir en / etc / selinux / config

Finalmente, puede ver el estado de SELinux usando el comando sestatus:

Estado de SELinux: habilitado
Montaje SELinuxfs: / sys / fs / selinux
Directorio raíz de SELinux: / etc / selinux
Nombre de la política cargada: segmentada
Modo actual: hacer cumplir
Modo del archivo de configuración: error (correcto)
Estado de la política MLS: habilitado
Estado de la política deny_unknown: permitido
Comprobación de la protección de la memoria: real (segura)
Versión máxima de la política del kernel: 31

También puede usar el comando setenforce para cambiar entre varios modos SELinux. Por ejemplo, para configurar el modo en permisivo, use el comando:

setenforce permisivo

Este modo es temporal y se restaurará a uno en el archivo de configuración después de reiniciar.

sestatus Estado SELinux: habilitado
Montaje SELinuxfs: / sys / fs / selinux
Directorio raíz de SELinux: / etc / selinux
Nombre de la política cargada: segmentada
Modo actual: permisivo
Modo del archivo de configuración: imposición
Estado de la política MLS: habilitado
Estado de la política deny_unknown: permitido
Comprobación de la protección de la memoria: real (segura)
Versión máxima de la política del kernel: 31

Política y contexto de SELinux

Para evitar confusiones para los principiantes de SELinux, no profundizaremos en cómo se implementan las políticas de SELinux, sino que simplemente lo tocaremos para darle una idea.

SELinux funciona implementando políticas de seguridad. Una política de SELinux se refiere a una regla que se utiliza para definir los derechos de acceso para cada objeto en el sistema. Los objetos se refieren a usuarios, procesos, archivos y roles.

Cada contexto se define en la forma del usuario: rol: tipo: nivel.

Por ejemplo, cree un directorio en su directorio de inicio y vea su contexto de seguridad SELinux como se muestra en los siguientes comandos:

mkdir ~ / linuxhint_dir
ls -Z ~ / | grep linuxhint

Esto mostrará la salida como se muestra a continuación:

inconfined_u: object_r: user_home_t: s0 linuxhint_dir

También puede encontrar otros directorios con los contextos de seguridad como:

sistema: _u: object_r: user_home_t: s0

Puede darse cuenta de que la salida anterior sigue la sintaxis del usuario: rol: tipo: nivel.

Conclusión

Ese fue un tutorial para principiantes de SELinux usando CentOS 8. Aunque el tutorial está diseñado para principiantes, es más que suficiente para empezar a correr en SELinux y eliminar la naturaleza intimidante de SELinux.

Gracias por leer.

Las 5 mejores cartas de captura de juegos
Todos hemos visto y amado la transmisión de juegos en YouTube. PewDiePie, Jakesepticye y Markiplier son solo algunos de los mejores jugadores que han ...
Cómo desarrollar un juego en Linux
Hace una década, no muchos usuarios de Linux predecían que su sistema operativo favorito algún día sería una plataforma de juegos popular para videoju...
Puertos de código abierto de motores de juegos comerciales
Las recreaciones gratuitas, de código abierto y de motores de juegos multiplataforma se pueden usar para jugar títulos de juegos antiguos y también al...