Seguridad Avanzada con SELinux: Configuración, Políticas y Casos
La seguridad es una de las principales preocupaciones para sysadmins y DevOps engineers. SELinux (Security-Enhanced Linux) ofrece un conjunto robusto de funcionalidades para reforzar la seguridad en sistemas Linux. Este artículo lo guiará a través de las funcionalidades avanzadas de SELinux, incluyendo configuración, creación de políticas personalizadas y casos de uso prácticos.
¿Qué es SELinux y por qué es importante?
SELinux es una arquitectura de seguridad de dominio obligatorio (MAC) integrada al kernel de Linux. Proporciona un mecanismo para soportar múltiples dominios de seguridad y se utiliza para confinar programas y procesos. La importancia de SELinux radica en su capacidad de proporcionar una capa adicional de seguridad, reduciendo el riesgo de explotación de vulnerabilidades.
Configurando SELinux
La configuración de SELinux se realiza a través del archivo /etc/selinux/config. Veamos cómo activar y configurar SELinux.
SELINUX=enforcing
SELINUXTYPE=targeted
En este ejemplo, SELinux está configurado para operar en el modo enforcing, lo que significa que las políticas se aplican y los accesos se deniegan conforme las reglas definidas. El tipo targeted aplica protecciones a un conjunto seleccionado de servicios y daemons.
Creando Políticas Personalizadas
Las políticas de SELinux se definen en módulos. Un módulo consiste en un archivo de política y un archivo de interfaz. Vamos a crear una política simple para permitir que un servicio acceda a un directorio específico.
# Criar diretório e definir contexto de segurança
sudo mkdir /var/myapp
sudo chcon -t httpd_sys_content_t /var/myapp
# Criar arquivo de política
sudo tee /var/tmp/myapp.te >/dev/null <<'EOF'
module myapp 1.0;
require {
type httpd_t;
type httpd_sys_content_t;
class dir { read getattr };
}
#============= httpd_t ============
allow httpd_t httpd_sys_content_t:dir { read getattr };
EOF
# Compilar e instalar a política
sudo checkmodule -M -m -o /var/tmp/myapp.mod /var/tmp/myapp.te
sudo semodule_package -o /var/tmp/myapp.pp -m /var/tmp/myapp.mod
sudo semodule -i /var/tmp/myapp.pp
Casos de Uso Prácticos
Protegiendo un Servidor Web
Uno de los usos más comunes de SELinux es proteger servidores web. Veamos cómo configurar SELinux para un servidor Apache.
# Instalar Apache
sudo apt install apache2 # Para Debian/Ubuntu
sudo yum install httpd # Para CentOS/RHEL
# Iniciar e habilitar o serviço
sudo systemctl start apache2
sudo systemctl enable apache2
# Verificar contextos de segurança
ls -Z /var/www/html
Aislamiento de Containers
SELinux también puede utilizarse para mejorar la seguridad de containers Docker. Veamos cómo aplicar políticas SELinux a un container.
# Criar um container com SELinux habilitado
sudo docker run -d --security-opt label=type:svirt_sandbox_t --name myapp myapp-image
# Verificar contextos de segurança do container
sudo docker exec -it myapp ls -Z /var/myapp
Por qué esto importa / Cuándo usar
SELinux es crucial en entornos donde la seguridad es una prioridad. Debe utilizarse en servidores de producción, especialmente aquellos expuestos a Internet, como servidores web, bases de datos y aplicaciones críticas. SELinux proporciona una capa adicional de seguridad que puede prevenir ataques y reducir el impacto de vulnerabilidades.
Conexión con Certificaciones LPI/CompTIA
Dominar SELinux es esencial para sysadmins y DevOps engineers que buscan certificaciones LPI (Linux Professional Institute) y CompTIA. La certificación LPI 202-450, por ejemplo, cubre tópicos avanzados de seguridad, incluyendo SELinux. Entender y aplicar SELinux no solo mejora la seguridad de los sistemas, sino que también lo prepara para estos exámenes de certificación.
Eso fue solo una pieza. El curso enseña el camino completo — desde tu primer comando hasta el día del examen.