SELinux

De La Wiki de KiVi

En esta entrada, exploraremos el mundo de SELinux en Fedora, un sistema de seguridad que añade una capa adicional de protección a tu sistema Linux. Comprender SELinux es esencial para mantener tu sistema seguro y protegerlo contra posibles amenazas. A lo largo de esta entrada, te guiaremos a través del funcionamiento de SELinux y proporcionaremos ejemplos prácticos para ilustrar su uso en Fedora.

¿Qué es SELinux?

Security-Enhanced Linux (SELinux) es una arquitectura de seguridad para los sistemas Linux® que otorga a los administradores mayor control sobre quién puede acceder al sistema. La Agencia de Seguridad Nacional (NSA) de Estados Unidos desarrolló este producto originalmente como una serie de parches para el kernel de Linux utilizando los módulos de seguridad de Linux (LSM).  

SELinux se puso a disposición de la comunidad open source en el año 2000, y se integró al kernel de Linux upstream en 2003

SELinux es un módulo de seguridad que se integra en el núcleo de Linux y controla el acceso a recursos del sistema, como archivos, procesos y puertos de red. Utiliza políticas de seguridad para tomar decisiones sobre si permitir o denegar el acceso a estos recursos, en función de reglas definidas.

Habilitar o deshabilitar SELinux en Fedora:

  1. Verificar el estado de SELinux:Para verificar si SELinux está habilitado o deshabilitado, puedes usar el siguiente comando:
    • sestatus #Esto mostrará el estado actual de SELinux.
  2. Habilitar o deshabilitar SELinux:
    • Para habilitar SELinux, puedes editar el archivo /etc/selinux/config y establecer SELINUX=enforcing . Luego, reinicia el sistema.
    • Para deshabilitar SELinux, cambia SELINUX=enforcing a SELINUX=disabled o SELINUX=permissive si queremos que permita las modificaciones, pero que igualmente lo notifique en el mismo archivo y reinicia.
  3. Visualizar los informes de sistema: Es importante recordar que muchas de las veces que no entendemos el funcionamiento o resultado de una operación siempre se muestra en los informes del sistema y se pueden mostrar filtrando con:
    • sudo journalctl -f #Para ver los cambios en tiempo real.

Ejemplos de políticas de SELinux:

  1. Controlar el acceso a un directorio:Supongamos que deseas permitir que solo un usuario específico acceda a un directorio llamado /mi_directorio. Puedes configurar una política de SELinux para lograrlo:
    • semanage fcontext -a -t user_home_dir_t "/home/usuario(/.*)?" #Define el contexto del directorio
    • restorecon -Rv /home/usuario #Esto garantiza que SELinux aplique la política.
  2. Controlar el acceso a un servicio web: Si tienes un servidor web Apache en Fedora, puedes utilizar SELinux para permitir que Apache acceda a ciertos directorios, como /var/www/html, de la siguiente manera:
    • chcon -Rv --type=httpd_sys_content_t /var/www/html # Esto etiqueta los archivos y directorios en /var/www/html como contenido web accesible para Apache.
  3. Controlar el acceso a un directorio compartido por samba:
    • Para permitir el acceso, etiqueta el directorio compartido con el contexto SELinux adecuado:
    • sudo semanage fcontext -a -t samba_share_t "/compartido(/.*)?"
    • sudo restorecon -Rv /compartido

Listado de ficheros y directorios de configuración de SELinux:

Las políticas y reglas de SELinux se almacenan en una serie de archivos y directorios en el sistema. A continuación, te proporciono información sobre los principales lugares donde se guardan las normas de SELinux en un sistema típico:

  1. Directorio /etc/selinux/: Este directorio contiene archivos de configuración relacionados con SELinux, incluidos los archivos config que definen el estado de SELinux (habilitado, deshabilitado, etc.). También puedes encontrar directorios como policy, que contienen políticas de seguridad específicas. Por ejemplo, /etc/selinux/targeted es el directorio de políticas para la política de seguridad dirigida.
  2. Directorio /etc/selinux/targeted/: Aquí es donde se encuentra la política de seguridad específica del sistema. El archivo principal que define las políticas es policy.30, pero también puedes encontrar otros archivos relacionados con módulos de políticas específicos.
  3. Directorio /usr/share/selinux/: En este directorio, encontrarás archivos de políticas precompiladas y módulos de políticas adicionales para SELinux. La estructura de directorios aquí es similar a la de /etc/selinux/, con subdirectorios para diferentes políticas y módulos.
  4. Comandos SELinux: Además de los archivos de políticas, SELinux utiliza comandos como semanage, semodule, sestatus, etc., para administrar políticas y configuraciones. Las políticas también pueden estar definidas en módulos separados que se pueden cargar o descargar con estos comandos.
  5. Directorios de contexto de seguridad (SELinux context): Los contextos de seguridad de SELinux, que son etiquetas que se aplican a archivos y procesos, no se almacenan en un archivo específico, sino que se administran en tiempo real. Puedes ver y modificar los contextos de seguridad de los archivos y procesos utilizando comandos como ls -Z, chcon, semanage, etc.

SELinux es una poderosa herramienta de seguridad que puede ayudarte a proteger tu sistema Fedora. Aunque su configuración puede parecer compleja al principio, comprender sus fundamentos y utilizar ejemplos como los proporcionados aquí te permitirá tomar el control de la seguridad de tu sistema de manera efectiva.