---
title: "Configuración avanzada de SELinux: Guía completa para mejorar la seguridad en Linux"
description: "SELinux (Security-Enhanced Linux) es un sistema de control de acceso basado en políticas de seguridad que proporciona una capa adicional de protección en sistemas Linux. Es especialmente útil para ent..."
url: https://revistacloud.com/configuracion-avanzada-selinux/
date: 2024-10-28
modified: 2024-10-28
author: "Antonio"
image: https://revistacloud.com/wp-content/uploads/2024/10/linux-securidad-rojo.jpeg
categories: ["Noticias", "Seguridad"]
tags: ["linux", "SElinux"]
type: post
lang: es
---

# Configuración avanzada de SELinux: Guía completa para mejorar la seguridad en Linux

**SELinux (Security-Enhanced Linux)** es un sistema de control de acceso basado en políticas de seguridad que proporciona una capa adicional de protección en sistemas Linux. Es especialmente útil para entornos de alta seguridad o servidores expuestos a internet. A continuación, se detallan los aspectos clave de una configuración avanzada de SELinux, incluyendo políticas, modos, y consejos para solucionar problemas.

### 1. **Modos de SELinux**

SELinux tiene tres modos de operación principales:

- **Enforcing**: El modo en el que SELinux está activo y hace cumplir todas las políticas. Bloquea cualquier acción que no esté explícitamente permitida.
- **Permissive**: En este modo, SELinux no bloquea acciones, pero registra todas las violaciones de política en el sistema. Es útil para depuración y ajustes de políticas antes de implementar un modo de producción.
- **Disabled**: SELinux está desactivado. No se aplican ni registran políticas.

Para verificar el modo actual de SELinux:

```
sestatus
```

Para cambiar el modo de SELinux temporalmente (sin reiniciar):

```
setenforce 0  # Cambia a Permissive
setenforce 1  # Cambia a Enforcing
```

Para cambiar el modo de SELinux permanentemente, edite el archivo de configuración en `/etc/selinux/config`:

```
SELINUX=enforcing  # Cambiar a permissive o disabled según sea necesario
```

### 2. **Políticas de SELinux**

Las políticas en SELinux definen qué acciones están permitidas y cuáles no. Existen tres tipos principales de políticas:

- **Targeted**: La política predeterminada en la mayoría de las distribuciones Linux. Protege los servicios del sistema más comunes, dejando otros procesos en un modo más permisivo.
- **MLS (Multi-Level Security)**: Una política más estricta que utiliza niveles de clasificación y categorización, generalmente para sistemas de alta seguridad.
- **MCS (Multi-Category Security)**: Similar a MLS, pero con categorías de seguridad en lugar de niveles estrictos. Es útil para virtualización y sistemas de contenedores.

Para verificar la política activa:

```
sestatus | grep "Policy"
```

### 3. **Contextos de SELinux**

Cada archivo, proceso, y puerto en SELinux tiene un contexto de seguridad, que generalmente incluye:

- Usuario (user)
- Rol (role)
- Tipo (type)
- Nivel (level), para políticas MLS/MCS.

Por ejemplo, en un contexto de archivo, `system_u:object_r:httpd_sys_content_t:s0`, el tipo (`httpd_sys_content_t`) determina qué acciones puede realizar un servicio sobre el archivo.

Para ver el contexto de un archivo:

```
ls -Z /ruta/al/archivo
```

Para cambiar el contexto de un archivo:

```
chcon -t tipo_nuevo /ruta/al/archivo
```

Ejemplo de cambiar un archivo para que sea accesible por Apache:

```
chcon -t httpd_sys_content_t /var/www/html/index.html
```

Para que el cambio sea permanente, se debe usar `semanage`:

```
semanage fcontext -a -t httpd_sys_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
```

### 4. **Herramientas de administración de SELinux**

- **semanage**: Configura ajustes persistentes de SELinux como contextos de archivos, puertos, y más.`semanage fcontext -l # Listar contextos de archivo semanage port -l # Listar puertos y sus tipos`
- **restorecon**: Restaura los contextos de archivo a sus valores predeterminados según la política.`restorecon -Rv /ruta/al/directorio`
- **getsebool y setsebool**: Gestionan los booleans, que permiten habilitar o deshabilitar ciertas reglas de SELinux sin modificar políticas directamente. `getsebool -a # Listar todos los booleans setsebool httpd_enable_homedirs on # Permitir que Apache acceda a directorios en el home`

### 5. **Configurar Booleans en SELinux**

Los Booleans son una forma de personalizar el comportamiento de SELinux sin cambiar directamente las políticas. Por ejemplo, para permitir que Apache acceda a archivos de usuario:

```
setsebool -P httpd_enable_homedirs on
```

Para listar Booleans específicos de un servicio (como `httpd`):

```
getsebool -a | grep httpd
```

### 6. **Solución de problemas en SELinux**

Cuando SELinux bloquea una acción, genera un mensaje en el log del sistema (`/var/log/audit/audit.log`). Para interpretar estos mensajes y generar soluciones sugeridas, use `ausearch` o `audit2why`:

```
ausearch -m avc -ts today             # Ver violaciones de hoy
cat /var/log/audit/audit.log | audit2why  # Explicar violaciones recientes
```

Si desea convertir estas violaciones en excepciones de política para SELinux, use `audit2allow`:

```
cat /var/log/audit/audit.log | audit2allow -M nombre_modulo
semodule -i nombre_modulo.pp
```

### 7. **Creación de Módulos de Políticas Personalizados**

En casos avanzados, puede ser necesario crear módulos de política personalizados para permitir acciones específicas sin desactivar SELinux. Los módulos se crean usando `audit2allow` y luego se instalan con `semodule`:

```
cat /var/log/audit/audit.log | audit2allow -M custom_policy
semodule -i custom_policy.pp
```

### 8. **Recomendaciones para una Configuración Avanzada de SELinux**

- **Monitorizar regularmente los logs de SELinux**: Use `ausearch` o `audit2why` para identificar y analizar incidentes.
- **Implementar booleans para configuraciones comunes**: Los booleans son una forma efectiva de hacer ajustes sin crear políticas personalizadas.
- **Hacer pruebas en modo permissive**: Antes de aplicar políticas restrictivas en modo `enforcing`, pruebe en `permissive` para evaluar el impacto sin interrumpir servicios.
- **Usar políticas personalizadas cuando sea necesario**: Para configuraciones especiales o software específico, los módulos personalizados permiten adaptar SELinux a las necesidades exactas del sistema.

Con una configuración avanzada de SELinux, es posible proteger sistemas críticos, garantizando un control granular sobre quién y qué puede acceder a los recursos del sistema. Al seguir estos pasos, administradores y equipos de seguridad pueden aprovechar todo el potencial de SELinux para mantener la integridad y seguridad en entornos Linux de alta demanda.

vía: **[SELinux](https://administraciondesistemas.com/configuracion-avanzada-de-selinux/)** en Administración de Sistemas
